background image

 

 

Wprowadzenie do

Extreme Programming

Ireneusz Cygan

s2038

background image

 

 

Cel spotkania:

 

• Zalety Extreme Programming
• Motywacje i perspektywy
• Zakomunikuj pomysły, ale nie głoś 

ewangelii

background image

 

 

Tradycyjny model 

kaskadowy

 

Cykl rozwoju oprogramowania ma pięć podstawowych kroków

:

1. Specyfikacje: Określając "co" 

– Zidentyfikuj potrzeby klienta 

– Zwrócenie uwagi na potrzebne doświadczenie (wiedze)
 

2. Projektowanie: Decydując "jak" 

– Główny paradygmat: Decyzje o strukturze danych i algorytmach 

– paradygmat OO: Decyduje się na temat klas, obiektów, metod, przypadków użycia 

3. Kodowanie

4. Integracja i testowanie 

– Składanie elementów w całość 

– Testowanie próbek  niezależnie, oraz po połączeniu 

– Poprawianie błędów 

5. Utrzymanie 

– Debagowanie programu 

background image

 

 

Model tradycyjny, cd. 

Przykład:  (firma Labs Bell)

• Około 300 ludzi pracujących nad pięcio-komponentowym systemem, 

do tego system wspierania i system operacyjny.

• Pierwszy komponent: około 500 000 linii kodu 

• Rozdzielne grupy ludzi dla każdego z cykli wytwarzania: 

Specyfikacja: 20%    Projektowanie: 30% Kodowanie: 30% 

Integracja/Testowanie:20%

 

Model kaskadowy

 

Praca w jednej fazie w znacznym stopniu zależała od postępów w drugiej fazie 

Koszty poprawiania błędów wzrastają dramatycznie z jednej fazy wytwarzania 

do drugiej 

Projektowanie bazowało na kompletnej informacji

Interfejsy kodowania, protokoły bazowały na pełnym zrozumieniu algorytmów, 

struktur danych, przypadków użycia 

Cały cykl zajmuje około 1-2 lat 

– Ten konkretny zajął 3 lata 

background image

 

 

Problemy

 

„Model kaskadowy przyjmuję, że świat jest skonstruowany w sposób 

idealny”

W prawdziwym świecie: 
• Specyfikacje nigdy nie są kompletne

– Klient zna aktualną sytuację, ale bardzo trudno mu jest przewidzieć co się 

wydarzy w przyszłości

– Klient robi (niedbałe) założenia 

– Różni klienci (nawet w tej samej organizacji) mogą mieć różne wizje 

Przykłady: 

• North American Anti-ballistic Missile Defense System

• Podwozie F-16 

• Pierwsze wypuszczenie zajmuje 1-2 lata 

– Specyfikacje zmieniają się gdy klient identyfikuje nowe potrzeby 

– Prawo, zmiany w środowisku biznesu 

Modyfikacje kodowania muszą nadążyć za zmienionymi specyfikacjami, 

projektowanie

background image

 

 

Więcej problemów 

Inne zagrożenia

• Klient nie widzi żadnego produktu aż do wypuszczenia

– Wymagania projektu nie spełniają wymagań chwili obecnej 

– Niepotrzebne możliwości projektu

– Zapomniane możliwości teraz okazują się być bardzo pożądanymi 

– W fazie projektowania  można przewidzieć co będzie klientowi 

najbardziej potrzebne 

• Klient to nie wytwórca 

– Klient aktywnie nie zajął się kosztem opóźnień

– Jeśli (kiedy?) braknie czasu, klient nie bierze udziału w ustalaniu 

priorytetów 

– Jeśli (kiedy?) braknie pieniędzy (albo koszt dramatycznie rośnie), 

projekt może zostać odwołany przed pierwszy wypuszczeniem 

• Wymiana sztabu (najlepiej jeśli ludzie mogą odejść po 2 latach od 

rozpoczęcia projektu)

• Późne Testowanie

– Drogie debugowanie programu

background image

 

 

The Extreme Programming (XP) 

poglądy 

Zmiany w procesie wytwarzania
• Zmiana będzie wymagana 
• Rozwój oprogramowania będzie musiał 

dostosować się do tych zmian   

Model kaskadowy i jego niska wydajność
• Nie pożądany długi okres wytwarzania  
• Potrzeba włączenia klienta we wczesnej 

fazie projektu 

background image

 

 

XP Zasady 

Szybka reakcja 

• Reakcja, interpretacja, nauka, szybka implementacja 

• Odnosi się do planowania, rozwoju systemu i  wszystkich innych faz.

Prostota

• Założenie, że wszystko będzie na czas 

• Czas zaoszczędzony na poszukiwaniach uproszczeń może być 

wykorzystany przy bardziej złożonych projektach 

Zmiany przyrostowe

• Duże zmiany, robisz wszystko jednocześnie, duży poziom ryzyka 

• Małe zmiany skłaniają do pracy nad nimi 

Zmiany powiązań

• Nastąpią czy chcesz tego czy nie 

Jakość pracy

• Każdy chce lepszej pracy 

background image

 

 

Główne artefakty planowania w 

XP to 

• historie użytkownika (ang. User Stories)
• planowanie kolejnych małych wydań
• projekt jest podzielony na iteracje, 

planowanie kolejnej zaczyna się po 

zakończeniu ostatniej

• rotacja ludzi pomiędzy obowiązkami
• krótkie zebrania na początku każdego 

dnia pracy

• dostrajanie XP

background image

 

 

Główne artefakty 

projektowania to 

• prostota
• wybranie metafory dla systemu
• używanie kart CRC podczas 

projektowania

• używanie prototypów dla konkretnych 

problemów

• implementowane jest tylko to co jest 

niezbędne

• wszechobecna refaktoryzacja 

background image

 

 

Główne artefakty 

programowania to 

• klient jest zawsze dostępny 
• programowanie odbywa się z 

uwzględnieniem ustalonych 
standardów

• najpierw pisze się testy a później 

implementację

• cały kod produkcyjny jest 

wytwarzany w parach

background image

 

 

Główne artefakty 

programowania

• tylko jedna para w danym momencie 

integruje swoje zmiany, integracja 

kodu odbywa się jak najczęściej

• współwłasność kodu
• procesowi optymalizacji kodu 

przydzielany jest najniższy priorytet

• brak nadgodzin
• Krótki okres pomiędzy kolejnymi 

wydaniami.

background image

 

 

Główne artefakty 

testowania to 

• do każdej istotnej części kodu istnieją testy 

jednostkowe (ang. Unit Tests)

• wszystkie testy muszą zakończyć się 

sukcesem zanim kod może zostać 
zintegrowany

• w momencie znalezienia błędu tworzony 

jest nowy test wykrywający znaleziony błąd

• testy akceptacji są wykonywane często i ich 

wynik jest publikowany

background image

 

 

Wnioski 

XP Wady

• Ciągłe zaangażowanie klienta
• zbyt częste nadgodziny powodują wypalenie się 

pracowników 

• współwłasność kodu oraz stosowanie 

najprostszych możliwych rozwiązań, wraz 

rygorystycznym ich przestrzeganiem podczas 

przeglądów kodu okazało się problemem podczas 

wprowadzania nowych programistów do zespołu 

• problemy związane z programowaniem w parach 
 

background image

 

 

Wnioski

XP Zalety

• Communication 

– Need constant interactions of customer, developers 
– Pairs help 
– Most problems caused by miscommunication (or lack of communication) 

• Simplicity 

– "What is the simplest thing that could possibly work?" 
– Do not anticipate future requirements (they may not happen) 
– Simplify (refactor) whenever possible 

• Feedback 

– Testing drives development (so you know when something must change and 

when it is fixed) 

– Customers write "stories", based on current system 
– Consider every release a prototype for the next 

• Courage 

– Move ahead quickly 
– Throw away code that seems hopeless 
– Pause as needed to refactor 

background image

 

 

Źródła 

The Basic Reference:
Kent Beck, extreme Programming explained: Embrace change Addison-Wesley, 

2000. 

Other books in the Addison-Wesley XP Series.

Ken Auer and Roy Miller, Extreme Programming Applied: Playing to Win

Addison-Wesley, 2002. (A practical guide to getting started using extreme 

programming.) 

Kent Beck and Martin Fowler, Planning Extreme Programming, (Estimation is 

a vital part of the extreme programming approach, and this discusses this 

and related strategic matters.) 

Giancarlo Succi and Michele Marchesi, Extreme Programming Examined

Addison-Wesley, 2001. (A collection of 33 articles explaining various elements 

of extreme programming.) 

William Wake, Extreme Programming Explored, Addison-Wesley, 2001. 

(Wake's first-hand experiences using extreme programming on actual 

projects.) 

Laurie Williams and Robert Kessler, Pair Programing Illunimated, Addison-

Wesley, 2003. (Lists both principles and best practices for pair programming.) 


Document Outline