Programowanie extremalne. Adrian Gadzina

Podobne dokumenty
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

EXTREME PROGRAMMING ZAPEWNIENIE SKUTECZNEJ I WYDAJNEJ PRACY PROGRAMISTÓW

Programowanie ekstremalne

EXTREME PROGRAMMING ZAPEWNIENIE SKUTECZNEJ I WYDAJNEJ PRACY PROGRAMISTÓW

Lekkie metodyki. tworzenia oprogramowania

Zagadnienia. Inżynieria Oprogramowania

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Agile vs PRINCE /2015 I rok st. magisterskie Informatyka

Bezpieczeństwo systemów komputerowych

Programowanie zespołowe

Programowanie Zespołowe

Feature Driven Development

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożonoś

REFERAT PRACY DYPLOMOWEJ

Etapy życia oprogramowania

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Zagadnienia. Inżynieria Oprogramowania

DLA SEKTORA INFORMATYCZNEGO W POLSCE

Zarządzanie projektami. Wykład 2 Zarządzanie projektem

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Projekt zespołowy D1_10

Wszystkie problemy leżą w testach. ForProgress spółka z ograniczoną odpowiedzialnością sp.k.

KARTA PRZEDMIOTU. Projekt zespołowy D1_10

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Cykle życia systemu informatycznego

Metodyka projektowania komputerowych systemów sterowania

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

Inżynieria oprogramowania II

Tworzenie gier na urządzenia mobilne

I Twój zespół może być zwinny (choć to może trochę potrwać) Paweł Lipiński

Narzędzia CASE dla.net. Łukasz Popiel

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Wykład 2. MIS n Inżynieria oprogramowania Marzec Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie

Ogólne zasady projektowania algorytmów i programowania

Komentarz. Pieniądze wielkie pieniądze

e R gulamin Kuźni Talentów

Jak wykorzystać design thinking w swojej firmie Doświadczenia praktyka.

Sposoby sprawdzania osiągnięć edukacyjnych uczniów

KILKA SŁÓW O ROLI PRODUCT MANAGERA

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Inżynieria oprogramowania, C12

Podstawy programowania III WYKŁAD 4

Zapisywanie algorytmów w języku programowania

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Metodyka zarządzania ryzykiem w obszarze bezpieczeństwa informacji

Wykład 1 Inżynieria Oprogramowania

Zarządzanie projektami w NGO

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Gry społecznościowe. wykład 0. Joanna Kołodziejczyk. 24 lutego Joanna Kołodziejczyk Gry społecznościowe 24 lutego / 11

Testowanie oprogramowania

Wzorce projektowe i refaktoryzacja

HumanTechnology. Projektowanie interakcji. czyli łatanie dziury w procesie produkcji

IO - Plan wdrożenia. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Czym są właściwości. Poprawne projektowanie klas

WYMAGANIA EDUKACYJNE Z ZAJĘĆ KOMPUTEROWYCH / EDUKACJI INFORMATYCZNEJ KLAS I III

Model referencyjny doboru narzędzi Open Source dla zarządzania wymaganiami

Darmowy fragment

Celem tego projektu jest stworzenie

Wprowadzenie do Behaviordriven

PRZEWODNIK PO PRZEDMIOCIE

RAPORT Z TESTOWANIA USŁUG NA PLATFORMIE ELA-ENT

Jak patrzymy na testy czyli Jak punkt widzenia zależy od punktu siedzenia. Click Piotr Kałuski to edit Master subtitle style

Piotr Tarasiński kl. II B

1 Prezentacja oferty StudioGS

Jak wspierać dziecko w II etapie edukacyjnym?

Wprowadzenie do systemów informacyjnych

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Zasady organizacji projektów informatycznych

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Podejście tradycyjne. plan wykonanie sekwencyjna natura wykonywanych zadań

Wdrożenie infrastruktury Cisco Spark w kancelarii DGP w Krakowie

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

PRZEWODNIK PO PRZEDMIOCIE

Wystartuj z Głową Na Karku. Zbuduj Solidne Fundamenty

Innowacja pedagogiczna dla uczniów pierwszej klasy gimnazjum Programowanie

Projektowanie systemów informatycznych. wykład 6

Temat: Programujemy historyjki w języku Scratch tworzymy program i powtarzamy polecenia.

KLIENCI KIENCI. Wprowadzenie normy ZADOWOLE NIE WYRÓB. Pomiary analiza i doskonalenie. Odpowiedzialnoś ć kierownictwa. Zarządzanie zasobami

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Agile Project Management

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Konwerter Plan testów. Jakub Rauch Tomasz Gołębiowski Adam Busch Bartosz Franaszek 1 czerwca 2008

Zarządzanie projektami IT

Testowanie i walidacja oprogramowania

AKADEMIA DLA MŁODYCH. Osiąganie celów. moduł 3 PODRĘCZNIK PROWADZĄCEGO. praca, życie, umiejętności. Akademia dla Młodych

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Inwestycja w robotyzację

GUI - projektowanie interfejsów

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Kilka faktów o szkoleniach. W małych i średnich przedsiębiorstwach

PRZEDMIOTOWY SYSTEM OCENIANIA Z INFORMATYKI

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

A:\> Oferta dopasowana do indywidualnych potrzeb Twojej firmy. B:\> Kompleksowe wyposazenie biura w sprzet komputerowy

PRZEDMIOTOWE SYSTEM OCENIANIA Z INFORMATYKI / ZAJĘĆ KOMPUTEROWYCH 2018/2019

PROJEKT WYZWANIE Responer Responer

Transkrypt:

Programowanie extremalne Adrian Gadzina

XP czym jest? Programowanie ekstremalne (ang. extreme Programming, XP) to paradygmat i metodyka programowania mająca na celu wydajne tworzenie małych i średnich "projektów wysokiego ryzyka", czyli takich, w których nie wiadomo do końca, co się tak naprawdę robi i jak to prawidłowo zrobić. Przyświeca temu koncepcja prowadzenia projektu informatycznego, wywodząca się z obserwacji innych projektów, które odniosły sukces. - Wikipedia.

XP czym jest? Opiera się ona na zbiorze zasad i sugestii, które powinny być praktykowane. Metodyka ta zastosowana w małych i średnich zespołach może przynieść ogromne korzyści. Często programiści stosują programowanie ekstremalne nie zdając sobie nawet z tego sprawy. Pomimo pewnych reguł, których trzeba przestrzegać, XP nie nakłada na programistów dodatkowej pracy nie związanej bezpośrednio z tworzeniem i pielęgnowaniem kodu programu.

XP czym jest? Lekkość tej metodyki oznacza, że rezygnuje ona z formalizmów, które często nadmiernie obciążają programistów i kierowników zespołów. Tutaj nie zmusza się ludzi do tworzenia obszernych stron dokumentów, których nikt nigdy nie przeczyta. Podstawą jest robienie tylko tego, co jest w danej chwili potrzebne. XP jest zaprojektowane w taki sposób, by wszystkie zasady uzupełniały się wzajemnie. Dzięki temu pomimo braku ściśle ustalonych formuł doprowadza do celu nie tylko w zamierzonym czasie, ale i z produktem najwyższej jakości.

XP czym jest? Jednak lekkość ta jednocześnie niekoniecznie oznacza, że XP łatwo jest używać w praktyce. Jak wykazują nawet nieformalne analizy działań firm, mało która jest w stanie sprostać wszystkim wymaganiom stawianym przez tą metodykę. Jednak utrzymanie dyscypliny pracy procentuje w tym, że osiąga się zadowolenie klienta oraz dużą satysfakcję z wykonanego zadania.

Podstawowe praktyki XP Kent Beck (twórca programowania ekstremalnego) podkreśla jako kluczowe 12 praktyk, których powinno się przestrzegać, by można było powiedzieć, że realizuje się metodykę XP. W rzeczywistości trudno jest sprostać wszystkim wymaganiom. Proponowane są więc, podobnie jak w innych metodykach pewne stopnie, kolejne etapy, na drodze do pełnego stosowania XP. Trzeba podkreślić jednak, że dopiero stosowanie wszystkich praktyk jest w stanie zagwarantować sukces i zminimalizować szanse porażki. Wybór jest ekstremalny: albo pełna rewolucja i wielki sukces albo balansowanie pomiędzy zabezpieczeniami

Planowanie Tworzenie oprogramowania w XP odbywa się przyrostowo przez wdrażanie kolejnych wydań produktu. Tworzenie oprogramowania w XP odbywa się przyrostowo przez wdrażanie kolejnych wydań produktu. Do szacowania używa się jednostek zwanych idealnymi osobo-tygodniami. Idealny osobotydzień to tydzień pracy wyłącznie nad programem, bez dodatkowych zajęć, ale wliczający czas testowania programu.

Planowanie Podczas gry planistycznej klient określa, które historie są dla niego najważniejsze i które z nich powinny być zrealizowane w pierwszej kolejności. W rezultacie powstaje spis funkcji systemu, które będą do niego dodawane w ramach kolejnych wydań produktu. Podczas tworzenia oprogramowania odbywa się wiele iteracji, z których każda jest oddzielnie planowana, ukończona złączeniem i osiągnięciem działającej wersji systemu.

Małe wydania Małe kroki to częste łączenie kodu napisanego przez programistów Osiąga się je przez podział zadania na małe historie użytkownika. Dzięki temu pojedynczy fragment kodu może być łatwo i szybko wykonany, przetestowany i złączony z resztą systemu. Małe wydania to częste akceptacje powstałego systemu przez klienta. Dzięki ciągłym testom i łączeniu zawsze istnieje sprawnie działająca wersja, a klient nie musi długo czekać na kolejną. Ciągle istnieje też informacja zwrotna od klienta, który ocenia czy zespół realizuje to, o co mu chodziło.

Wspólny język Każdy zespół programistyczny musi kontaktować się z klientem. Często dochodzi do sytuacji, w której po godzinach rozmów nagle odkryto, że klienci i projektanci mówią o zupełnie różnych rzeczach. Wynika to oczywiście z tego, że jedni i drudzy posługiwali się innymi pojęciami. Wspólny język jest szczególnie ważny dla klientów, którzy nie są zapoznani z technologią komputerową i którzy nie mogą operować specyficznymi pojęciami.

Wspólny język Przykłady: oczyszczenie treści z niepotrzebnego kodu zamiast usunięcie nadmiarowych oraz niesemantycznych znaczników HTML sprawdzenie czy informacje przesyłane w formularzu są podane poprawne zamiast walidacja danych przesyłanych metodą POST

Prosty projekt XP zakłada, że wymagania klienta, rynku i sytuacja w branży ciągle się zmieniają. Nie ma więc sensu planować rozwiązań, o których nie wiadomo, czy zostaną wykorzystane w przyszłości. Celem XP jest jak najszybsze i najprostsze osiągnięcie satysfakcji klienta przez dostarczenie oprogramowania, spełniającego postawione wymagania. Jeśli klient chce dodać nową funkcjonalność musi stworzyć nową historię. Jej koszt i pozycja na liście ważności zostaje ustalona w wyniku kolejnej gry planistycznej.

Ciągłe testowanie Ciągłe testowanie to podstawowe działanie podczas pisania programu w metodzie XP. Programista jeszcze przed napisaniem danej procedury tworzy kod, który ma testować. W ten sposób wcześniej musi pomyśleć o wszystkich rzeczach, które mogą pójść nie po jego myśli. Dzięki temu podczas pisania właściwego kodu procedury zabezpieczają przed tymi możliwościami. Pisanie procedury testowej nie powinno jednak trwać zbyt długo i nie powinna być ona zbyt rozbudowana.

Przerabianie Przerabianie (eng. refactoring) jest konieczne zaraz po przetestowaniu działającej procedury. Przerabianie to poprawianie projektu istniejącego kodu. Przerabianie może być przeprowadzone w celu uzyskania wielu różnych efektów. Jako najbardziej oczywiste wymienia się poprawienie wydajności działania procedury, oraz uzyskanie lepszej struktury systemu.. Przykładowe konkretne działania podczas przerabiania to: skracanie metod, skracanie klas, usuwanie prawie powtarzających się fragmentów kodu, usuwanie niepotrzebnych iteracji, usuwanie zbyt wielu zmiennych roboczych. Każdorazowe przerabianie, nawet jeśli jest najprostsze, musi oczywiście zakończyć się uruchomieniem testów.

Programowanie w parach Programowanie w parach jest trudne, wymaga dobrego zgrania zespołu, ale przynosi wymierne korzyści w postaci lepszego kodu. Programowanie w parach pomaga również w dokonywaniu poprawek. Druga osoba może bowiem wiedzieć więcej o danym fragmencie kodu. Generalnie programowanie w parach pomaga propagować wiedzę o różnych fragmentach programu na całą grupę osób, pracujących przy systemie.

Programowanie w parach Każdy kto kiedykolwiek spróbował programować w parach doświadczył, że diametralnie zmienia ono sposób pisania kodu. Podczas gdy jedna osoba (trzymająca klawiaturę) pisze kod, druga na bieżąco go sprawdza, sugeruje możliwe rozwiązania, może służyć pomocą i zwraca uwagę na błędy. Tak powstały kod jest nie tylko lepszy ale i łatwiej oraz szybciej się kompiluje. Według Kenta pary powinny się między sobą mieszać. Również programiści wewnątrz pary powinni co jakiś czas zamieniać się miejscami. w ten sposób wysiłek jest rozłożony równomiernie.

Standard kodowania XP narzuca wszystkim programistom wspólny standard kodowania i dokumentowania. Standard taki powinien być ustalony i zaakceptowany przez całą grupę. Standard powinien jednoznacznie określać wygląd kodu, ale nie powinien być zbyt długi i szczegółowy. Standard dokumentowania zakłada, że samych komentarzy w kodzie jest jak najmniej. Klasy powinny być tak zaprojektowane by przeznaczenie poszczególnych metod było jasne, a samo działanie oczywiste. XP stara się podtrzymać naturalne skłonności

Wspólna odpowiedzialność Kiedy trzeba szybko wykonać poprawki nie ma czasu na poszukiwania właściwej osoby. Taka osoba może być zresztą już nieosiągalna. W XP wszyscy są odpowiedzialni tak samo. Jeśli trzeba coś zmodyfikować nie ma problemu, bo poprawki może zrobić każdy. Częste przeorganizowywanie doprowadza kod do stanu dobrej przejrzystości, a gotowe procedury testujące zapewniają, że poprawki nie doprowadzą do katastrofy. XP preferuje umieszczenie całej grupy programistów w jednym pomieszczeniu, co ma pomagać w komunikacji i rozwijaniu życia grupy.

Ciągłe łączenie Ciągłe łączenie to integracja programu tak często, jak to tylko możliwe. Programista po wykonaniu każdego nowego fragmentu programu łączy go z systemem. Najczęściej stosuje się jedną maszynę, na której w danej chwili może pracować jedna osoba zajmująca się łączeniem kodu. Ciągłe łączenie jest ułatwione w XP dzięki prostym projektom, ciągłym testom i wspólnej odpowiedzialności za kod.

40-godzinny tydzień pracy Swego rodzaju symbolem, znakiem rozpoznawczym XP, stało się wymaganie 40-to godzinnego tygodnia pracy. Zespoły programistów powinny być przyzwyczajone do stałej wydajności i stałego obciążenia. Może przytrafić się czasem jeden tydzień nieco większego obciążenia, ale dwa tygodnie mogą już oznaczać kłopoty z harmonogramem prac. Oczywiste jest, że dla niektórych zespołów tydzień może trwać 45 godzin, a dla innych 35. Istotne jest to, by ustalić konkretną, nienaruszalną granicę obciążenia grupy.

Ciągły kontakt z klientem Aby zadowolić wymagania klienta należy bezwzględnie podążać za jego życzeniami. XP zakłada ciągłą możliwość konsultacji z klientem na żywo. W praktyce oznacza to codzienną obecność klienta w zespole programistów. Często bywa to jednak trudne do spełnienia. Zespoły takie mogą zrezygnować z XP, zorganizować zastępczą formę komunikacji z klientem, bądź znaleźć inne rozwiązania pozwalające na utrzymanie więzi z odbiorcą systemu.

Podsumowanie Programowanie Ekstremalne jest przykładem lekkiej metodyki, przyjaznej zarówno klientowi, jak i programistom. Zestaw dwunastu specyficznych dla XP praktyk, choć istotnie różniących się od metod znanych z tradycyjnej inżynierii oprogramowania, ma za zadanie osiągnięcie tych samych celów. Są one ukierunkowane na różne obszary aktywności w procesie budowy oprogramowania, od budowania relacji z klientem i pozyskiwania i zarządzania wymaganiami, poprzez projektowanie i testowanie aż do tworzenia kodu, które jest jądrem XP.

Podsumowanie Kanon praktyk podanych przez Kenta Becka na razie stanowi wzorzec wszelkich implementacji XP. Powstają modele próbujące klasyfikować lekkie procesy budowy oprogramowani i porównywać je z metodykami klasycznymi, jednak trudno na razie przesądzać o roli, jaką może odegrać XP. Niestety, XP posiada także kilka wad. Istotnym aspektem jest koszt wdrożenia takiej metodyki. Z przeprowadzonych badań wynika, że samo wdrożenie programowania parami jest znacznie kosztowniejsze niż zatrudnianie programistów pracujących pojedynczo.

Podsumowanie Nieznana jest także skuteczność stosowania XP przy tworzeniu systemów o wysokiej niezawodności oraz wymagających ścisłego dotrzymywania harmonogramu. Wdrożenie XP napotyka często opory ze strony decydentów, którzy odejście od planowanego i udokumentowanego procesu kojarzą ze spadkiem jakości produkowanego oprogramowania. Programowanie Ekstremalne wymaga dopasowania do okoliczności, w jakich jest stosowane, jednak faktycznie wnosi istotne nowości oraz niezbędny powiew świeżości. Oznacza to, że XP stanowi, lub niedługo będzie stanowić, istotną alternatywę dla tradycyjnych metod inżynierii oprogramowania, jednak obecnie

Koniec Dziękuję za uwagę