Extreme Programming (XP) Co to takiego?
- Współpraca z klientem
- Testy wyprzedzające
- Iteracyjność
- Gotowość wprowadzania zmian
|
Potrzeba ekstremalnych rozwiązań!
- jedna trzecia projektów informatycznych nigdy nie zostaje ukończona
- w co drugim zostaje przekroczony zaplanowany budżet
- 60 proc. zakończonych projektów nie spełnia oczekiwań zamawiających
- 90 proc. projektów jest uruchamianych po terminie
Te dane ukazują jak bardzo złożonym i trudnym procesem jest tworzenie dobrego oprogramowania. Dowodzą, że tradycyjne techniki programowania są zbyt powolne w stosunku do potrzeb. Klienci nie mają obowiązku posiadania fachowej wiedzy informatycznej. Ich wyobrażenie i oczekiwania w stosunku do zamawianego oprogramowania są zazwyczaj zdefiniowane bardzo ogólnie. Nasz zespół programistyczny ma tymczasem duże umiejętności i bogate doświadczenie w dziedzinie tworzenia systemów informatycznych. Do osiągnięcia sukcesu potrzebna jest mu jednak szczegółowa wiedza dotycząca obszaru, w którym doskonale zorientowany jest klient. Proces uzyskiwania tej wiedzy oraz cały zestaw interakcji programistów z klientem może być bardzo wydajnie wspierany przez techniki Programowania Ekstremalnego.
Extreme Programming (XP) - Co to takiego?
XP to sposób tworzenia oprogramowania, w którym szczególny nacisk kładziemy na współpracę z klientem,
wyprzedzające tworzenie testów, iteracyjność i gotowość wprowadzania zmian.
Współpraca z klientem
To najważniesza zasada XP - klient bezpośrednio uczestniczy w procesie tworzenia systemu. To on będzie jego przyszłym użytkownikiem i to on najlepiej zna swoje potrzeby. Współuczestniczy więc w podejmowaniu decyzji dotyczących najważniejszych aspektów projektu - zawartości poszczególnych części, priorytetów ich wykonania, stopnia ryzyka itp. Na bieżąco odpowiada na wiele pytań pojawiających się podczas tworzenia aplikacji.
Testy wyprzedzające
Równie ważne jest ciągłe testowanie zaimplementowanych funkcjonalności. Testy wykonujemy poczynając od poziomu poszczególnych jednostek (unit tests). Test weryfikuje działanie jednostki, co pozwala uznać ją za zakończoną i gotową do zintegrowania z innymi jednostkami. Test tworzymy przed napisaniem kodu jednostki. Zyskujemy dzięki temu dwie istotne korzyści:
- aby stworzyć test musimy znać zewnętrzne przejawy działania testowanej jednostki - ułatwia to późniejszą implementację, bo jasno określa jakie czynności ma wykonywać dana jednostka
- po stworzeniu jednostki możemy natychmiast przetestować jej działanie - nabieramy dzięki temu zaufania do już zaimplementowanego kodu i spokojnie możemy przejść do prac nad kolejnym fragmentem
Testy stają się integralną częścią dokumentacji systemu, bowiem opisują w sformalizowany sposób to, jak powinna zachowywać się testowana jednostka.
Iteracyjność
W projekcie prowadzonym według zasad XP efekty prac udostępniamy możliwie jak najczęściej. W zależności od skali projektu może to oznaczać okres od dwóch do kilku tygodni, ale nie więcej niż 2 - 3 miesiące. Udostępniane fragmenty zawsze są w pełni funkcjonalne i wolne od wszystkich błędów wykrytych przes testy wyprzedzające.
Bardzo ważną rolę pełni na tym etapie klient. Jego zadaniem jest stworzenie testów uznaniowych (acceptance tests) sprawdzających, czy nasz zespół programistów poprawnie zrozumiał i zaimplementował przedstawiony punkt widzenia użytkownika (user story). Pozwalają one stwierdzić, czy zachowanie produktu lub jego części jest zgodne ze zadeklarowanymi wcześniej potrzebami klienta.
Na częstym udostępnianiu kodu korzystamy również my - programiści. Zyskujemy pewność, że nasza praca posuwa się w porządanym kierunku. Wszelkie odstępstwa i błędy są wykrywane stosunkowo wcześnie, kiedy koszt ich usunięcia jest bardzo mały. Upraszcza się również proces planowania. Łatwiej objąć planem miesiąc niż pół roku, łatwiej też wprowadzić ewentualne zmiany.
Gotowość wprowadzania zmian
Rzeczywisty świat podlega nieustającym zmianom. Program w specyficzny sposób opisuje mały wycinek tego świata. Aby uwzględnić jego zmienność musi być elastyczny. XP wspiera ten aspekt tworzenia oprogramowania. Podział prac na niewielkie etapy, krótkie czasy ich wykonania, ciągły przepływ informacji między programistami i użytkownikami - te zasady zapewniają bezproblemowe wprowadzanie zmian w projekcie. Koszt zmian nie ulega istotnym zmianom w trakcie trwania projektu, dzięki czemu projekt może ewoluować do stanu, w którym wystarczająco dobrze będzie spełniał Państwa potrzeby.
|