Extreme Programming Extreme Programming
Nowoczesne metody zespołowego Nowoczesne metody zespołowego
tworzenia aplikacji tworzenia aplikacji
Krzysztof Chłosta s1644 Krzysztof Chłosta s1644
Extreme Programming Extreme Programming
• Extreme Programming czyli Wydajne Extreme Programming czyli Wydajne Programowanie, w skrócie XP
Programowanie, w skrócie XP (bez skojarzeń!)(bez skojarzeń!)
• Nowe techniki tworzenia aplikacjiNowe techniki tworzenia aplikacji
• Powstawały i były rozwijane przez kilka Powstawały i były rozwijane przez kilka niezależnych grup
niezależnych grup
• Tylko projekty ITTylko projekty IT
• W ostatnich latach tysiące firm i programistów W ostatnich latach tysiące firm i programistów przekonało się o skuteczności tej metody
przekonało się o skuteczności tej metody
Extreme Programming Extreme Programming
• Podejście do zmian w Podejście do zmian w projektach:
projektach:
– Klasyczne: zmiany są Klasyczne: zmiany są trudne i kosztowne trudne i kosztowne – XP: zmiany są XP: zmiany są
nieuniknione więc nieuniknione więc trzeba być na nie trzeba być na nie
przygotowanym przygotowanym
Extreme Programming Extreme Programming
• Równanie XPRównanie XP
– Projektami można zarządzać w czterech Projektami można zarządzać w czterech kategoriach:
kategoriach:
• CzasCzas
• MożliwościMożliwości
• ZasobyZasoby
• JakośćJakość
Extreme Programming Extreme Programming
• Przykład teoretyczny:Przykład teoretyczny:
– Zasoby wody na stacji Zasoby wody na stacji kosmicznej są stałe kosmicznej są stałe
– W systemie zamkniętym W systemie zamkniętym czysta woda trafia na czysta woda trafia na
stronę brudnej stronę brudnej
– Urządzenie zawiera panel Urządzenie zawiera panel sterujący z czterema
sterujący z czterema
pokrętłami: Czas, Zasoby, pokrętłami: Czas, Zasoby,
Możliwości, Jakość Możliwości, Jakość
– Każde z pokręteł steruje Każde z pokręteł steruje
Klienci Woda
niezdatna do picia
Woda zdatna do
picia
Extreme Programming Extreme Programming
• Ten sam schemat przy Ten sam schemat przy
tworzeniu oprogramowania:
tworzeniu oprogramowania:
– Klient składa zamówienie – Klient składa zamówienie – niedokończone zadanie lub niedokończone zadanie lub
problem biznesowy.
problem biznesowy.
– Zamówienie jest realizowane Zamówienie jest realizowane przez programistów
przez programistów
– Zrealizowane zamówienie Zrealizowane zamówienie trafia do klienta
trafia do klienta
– Na podstawie wyników klient Na podstawie wyników klient podejmuje decyzję o złożeniu podejmuje decyzję o złożeniu ponownego zamówienia i cały ponownego zamówienia i cały
cykl się powtarza.
cykl się powtarza.
Klient
Rozwiązanie w postaci
kodu Proces
tworzenia Problem
biznesowy
Extreme Programming Extreme Programming
• Wartości XPWartości XP
• Wydajne Programowanie składa się z Wydajne Programowanie składa się z czterech podstawowych wartości:
czterech podstawowych wartości:
– KomunikacjaKomunikacja
– Odpowiedzi na pytaniaOdpowiedzi na pytania – ProstotaProstota
– OdwagaOdwaga
Extreme Programming Extreme Programming
• Dobra Dobra komunikacjakomunikacja do podstawa każdego projektu. do podstawa każdego projektu.
• Ignorowanie bądź ukrywanie informacji potrafi pogrążyć Ignorowanie bądź ukrywanie informacji potrafi pogrążyć dowolny projekt
dowolny projekt
• Klient odpowiada na pytania co powinno być zrobione i Klient odpowiada na pytania co powinno być zrobione i jakie są priorytety
jakie są priorytety
• Programiści i analitycy mówią w jaki sposób zadanie Programiści i analitycy mówią w jaki sposób zadanie zostanie wykonane, ile potrwa to czasu oraz określają zostanie wykonane, ile potrwa to czasu oraz określają
ryzyko.
ryzyko.
• Dobra, częsta i szczera komunikacja z klientem to jedno Dobra, częsta i szczera komunikacja z klientem to jedno z kluczowych założeń XP
z kluczowych założeń XP
(klient członkiem zespołu) (klient członkiem zespołu)
Extreme Programming Extreme Programming
• Zadawanie pytańZadawanie pytań jest jedynym sposobem jest jedynym sposobem poznawania zdania klienta.
poznawania zdania klienta.
• Jedynym sposobem zaakceptowania kodu przez Jedynym sposobem zaakceptowania kodu przez klienta jest przetestowanie.
klienta jest przetestowanie.
• Im wcześniej uzyskamy odpowiedzi na pytania Im wcześniej uzyskamy odpowiedzi na pytania tym więcej mamy czasu na reakcję.
tym więcej mamy czasu na reakcję.
• Częste uzyskiwanie odpowiedzi pozwala na Częste uzyskiwanie odpowiedzi pozwala na częste wprowadzanie zmian i poprawek
częste wprowadzanie zmian i poprawek
Extreme Programming Extreme Programming
• ProstotaProstota oznacza wykonywanie tylko tej oznacza wykonywanie tylko tej części systemu która rzeczywiście musi części systemu która rzeczywiście musi
być wykonana.
być wykonana.
• Koszta złożoności są duże a Koszta złożoności są duże a
przewidywanie przyszłości trudne.
przewidywanie przyszłości trudne.
• Wystarczy zapytać, nie trzeba zgadywać. Wystarczy zapytać, nie trzeba zgadywać.
• Koszt dodania funkcji później będzie taki Koszt dodania funkcji później będzie taki sam jak dzisiaj.
sam jak dzisiaj.
Extreme Programming Extreme Programming
• OdwagaOdwaga oznacza podejmowanie trudnych oznacza podejmowanie trudnych decyzji gdy jest to konieczne.
decyzji gdy jest to konieczne.
• Jeżeli funkcja nie działa, naprawia się ją.Jeżeli funkcja nie działa, naprawia się ją.
• Gdy nie uda nam się dostarczyć wszystkich Gdy nie uda nam się dostarczyć wszystkich funkcji w zaplanowanym terminie należy
funkcji w zaplanowanym terminie należy od razu powiadomić klienta. To on
od razu powiadomić klienta. To on
zdecyduje którymi funkcjami należy się zdecyduje którymi funkcjami należy się
zająć najpierw.
zająć najpierw.
Extreme Programming Extreme Programming
• Zakładanie dostateczności rozwiązaniaZakładanie dostateczności rozwiązania
– Wystarczająca ilość czasu zakłada niski koszt Wystarczająca ilość czasu zakłada niski koszt zmian w dowolnym etapie projektu.
zmian w dowolnym etapie projektu.
– XP stara się stworzyć najlepsze XP stara się stworzyć najlepsze
oprogramowanie w dostępnym czasie i oprogramowanie w dostępnym czasie i
zasobach. Oznacza to, iż w najgorszym zasobach. Oznacza to, iż w najgorszym
przypadku projekt zostanie dokończony w przypadku projekt zostanie dokończony w
określonym czasie jednak niektóre mniej określonym czasie jednak niektóre mniej
ważne funkcje nie zostaną dodane.
ważne funkcje nie zostaną dodane.
Extreme Programming Extreme Programming
• Techniki XPTechniki XP
– Istnieje 12 technik Extreme Programming.Istnieje 12 technik Extreme Programming.
– Wspierają się one nawzajem i ułatwiają Wspierają się one nawzajem i ułatwiają podejmowanie decyzji.
podejmowanie decyzji.
– Praktykowanie XP wymaga dyscypliny ponieważ Praktykowanie XP wymaga dyscypliny ponieważ wykorzystywanie kilku technik bez znajomości wykorzystywanie kilku technik bez znajomości
interakcji może doprowadzić do poważnych błędów.
interakcji może doprowadzić do poważnych błędów.
– Można używać tylko kliku technik ale zaleca się Można używać tylko kliku technik ale zaleca się wdrożenie całego zestawu.
wdrożenie całego zestawu.
Extreme Programming Extreme Programming
• Techniki kodowania:Techniki kodowania:
– Proste projektowanie i kodowanieProste projektowanie i kodowanie
• Cel: wykonanie oprogramowania łatwego w modyfikacjiCel: wykonanie oprogramowania łatwego w modyfikacji
– Bezlitosna refaktoryzacjaBezlitosna refaktoryzacja
• Cel: Znalezienie optymalnego projektu koduCel: Znalezienie optymalnego projektu kodu
– Opracowanie standardów kodowaniaOpracowanie standardów kodowania
• Cel: łatwe przekazywanie pomysłów przy użyciu koduCel: łatwe przekazywanie pomysłów przy użyciu kodu
– Stosowanie wspólnego słownictwaStosowanie wspólnego słownictwa
• Cel: łatwe przekazywanie nowych pomysłówCel: łatwe przekazywanie nowych pomysłów
Extreme Programming Extreme Programming
• Techniki tworzenia:Techniki tworzenia:
– Kreowanie z nakierowaniem na testyKreowanie z nakierowaniem na testy
• Cel: udowodnienie, że kod działa zgodnie z założeniamiCel: udowodnienie, że kod działa zgodnie z założeniami
– Programowanie w parachProgramowanie w parach
• Cel: szerzenie wiedzy, doświadczenia i pomysłówCel: szerzenie wiedzy, doświadczenia i pomysłów
– Stosowanie zasady wspólnej własności koduStosowanie zasady wspólnej własności kodu
• Cel: rozszerzenie odpowiedzialności za kod na cały zespółCel: rozszerzenie odpowiedzialności za kod na cały zespół
– Ciągła integracjaCiągła integracja
• Cel: redukcja wpływu wprowadzenia nowych funkcjiCel: redukcja wpływu wprowadzenia nowych funkcji
Extreme Programming Extreme Programming
• Techniki biznesowe:Techniki biznesowe:
– Klient jest członkiem zespołuKlient jest członkiem zespołu
• Cel: aby dobrze spełnić założenia biznesoweCel: aby dobrze spełnić założenia biznesowe
– Zabawa w planowanieZabawa w planowanie
• Cel: tworzenie harmonogramu dla najważniejszych zadańCel: tworzenie harmonogramu dla najważniejszych zadań
– Regularne wydaniaRegularne wydania
• Cel: częste zwracanie klientowi działającej wersji, by Cel: częste zwracanie klientowi działającej wersji, by zawierzył, że inwestycja nie idzie na marne
zawierzył, że inwestycja nie idzie na marne
– Praca we względnym spokojuPraca we względnym spokoju
• Cel: pójście do domu zmęczonym a nie wykończonymCel: pójście do domu zmęczonym a nie wykończonym
Extreme Programming Extreme Programming
• Zdarzenia XPZdarzenia XP
– Iteracje to bardzo ważny składnik XP.Iteracje to bardzo ważny składnik XP.
– Są to mniejsze i szybsze wersje tradycyjnego Są to mniejsze i szybsze wersje tradycyjnego cyklu tworzenia oprogramowania.
cyklu tworzenia oprogramowania.
– Są od siebie niezależne.Są od siebie niezależne.
– Zwiększają szybkość przepływu informacji.Zwiększają szybkość przepływu informacji.
– Praca odbywająca się małymi kroczkami Praca odbywająca się małymi kroczkami pozwala podejmować lepsze decyzje.
pozwala podejmować lepsze decyzje.
Extreme Programming Extreme Programming
• Planowanie Iteracji:Planowanie Iteracji:
– Każda kolejna iteracja daje szanse na Każda kolejna iteracja daje szanse na
dostosowanie harmonogramu do zmian w dostosowanie harmonogramu do zmian w
projekcie.
projekcie.
– Spotkania dotyczące planowania prowadzone Spotkania dotyczące planowania prowadzone są przez klienta.
są przez klienta.
– Są na nich określane priorytety funkcji które Są na nich określane priorytety funkcji które mają być zaimplementowane i dostarczone w mają być zaimplementowane i dostarczone w
danej iteracji.
danej iteracji.
Extreme Programming Extreme Programming
• Oszacowanie czasu pracy i harmonogramowanieOszacowanie czasu pracy i harmonogramowanie
• Oszacowanie daje klientowi możliwość wybrania Oszacowanie daje klientowi możliwość wybrania priorytetów dla funkcji
priorytetów dla funkcji
• Klient tworzy opisy funkcji (karty funkcji)Klient tworzy opisy funkcji (karty funkcji)
• Programiści tworzą zadania dla każdej funkcji i Programiści tworzą zadania dla każdej funkcji i szacują czas
szacują czas
• Klient umieszcza zadania w iteracji.Klient umieszcza zadania w iteracji.
• Na końcu iteracji następuje Na końcu iteracji następuje WydanieWydanie czyli czyli
działająca wersję w pełni przetestowaną przez działająca wersję w pełni przetestowaną przez
programistów.
programistów.
Extreme Programming Extreme Programming
• Elementy XPElementy XP
– Karty funkcjiKarty funkcji
• Opis co zdaniem klienta co powinno być wykonaneOpis co zdaniem klienta co powinno być wykonane
• Jest to informacja biznesowaJest to informacja biznesowa
• Programiści szacują funkcje które następnie Programiści szacują funkcje które następnie zostają umieszczone przez klienta w
zostają umieszczone przez klienta w harmonogramie
harmonogramie
• Funkcje powinny być w miarę możliwości Funkcje powinny być w miarę możliwości niezależne od siebie.
niezależne od siebie.
Extreme Programming Extreme Programming
– Karty zadańKarty zadań
• Jest to główne narzędzie planowania programistówJest to główne narzędzie planowania programistów
• Odpowiadają na pytanie jak powinno być Odpowiadają na pytanie jak powinno być wykonane zadanie?
wykonane zadanie?
• Zadanie reprezentują rzeczywiste kroki, Zadanie reprezentują rzeczywiste kroki, prowadzące do zaimplementowanie funkcji prowadzące do zaimplementowanie funkcji
• Każda karta zadań jest powiązana z kartą funkcji i Każda karta zadań jest powiązana z kartą funkcji i powstaje na jej podstawie
powstaje na jej podstawie
• Zadania powinny być niewielkie i zajmować klika Zadania powinny być niewielkie i zajmować klika idealnych godzin
idealnych godzin
Extreme Programming Extreme Programming
– Pokój wojennyPokój wojenny
• Jest to pomieszczenie pracy programistówJest to pomieszczenie pracy programistów
• Zaleca się by było to jedno dużo otwarte Zaleca się by było to jedno dużo otwarte pomieszczenie odizolowane od świata
pomieszczenie odizolowane od świata
• Stanowisko komputerowe przewidziane dla dwóch Stanowisko komputerowe przewidziane dla dwóch osób (programowanie parami)
osób (programowanie parami)
• Na ścianach powinno znaleźć się miejsce dla kliku Na ścianach powinno znaleźć się miejsce dla kliku tablic
tablic
• Klient powinien przebywać w pokoju wojennym Klient powinien przebywać w pokoju wojennym ponieważ ułatwia to zadawanie pytań
ponieważ ułatwia to zadawanie pytań
Extreme Programming Extreme Programming
• Role w XPRole w XP
– KlientKlient
• Steruje projektem, definiuje goSteruje projektem, definiuje go
• Określa celeOkreśla cele
• Im lepszy kontakt z klientem tym większe Im lepszy kontakt z klientem tym większe prawdopodobieństwo odniesienia sukcesu.
prawdopodobieństwo odniesienia sukcesu.
• Współpracuje z programistami, wykonuje testy Współpracuje z programistami, wykonuje testy adaptacyjne
adaptacyjne
• Odpowiada za stronę finansową projektuOdpowiada za stronę finansową projektu
Extreme Programming Extreme Programming
– ProgramistaProgramista
• Pracuje nad kodem, zamienia opisy funkcji na Pracuje nad kodem, zamienia opisy funkcji na działające rozwiązania
działające rozwiązania
• Współpracuje z klientem aby dobrze zrozumieć Współpracuje z klientem aby dobrze zrozumieć opis funkcji
opis funkcji
• Tworzy karty zadańTworzy karty zadań
• Określa czas potrzebny na wykonanie funkcjiOkreśla czas potrzebny na wykonanie funkcji
• Unika decyzji biznesowychUnika decyzji biznesowych
Extreme Programming Extreme Programming
– Dodatkowe role:Dodatkowe role:
• Organizator:Organizator:
– Śledzi zgodność prac z harmonogramemŚledzi zgodność prac z harmonogramem
– Mierzy szybkość prac, stosunek czasu oszacowanego do Mierzy szybkość prac, stosunek czasu oszacowanego do rzeczywistego
rzeczywistego
• TrenerTrener
– Potrzebny przy wdrażaniu technik XPPotrzebny przy wdrażaniu technik XP – Pomaga i dopinguje zespółPomaga i dopinguje zespół
– Powinien być osobą z autorytetem wśród zespołuPowinien być osobą z autorytetem wśród zespołu
Extreme Programming Extreme Programming
• Kodowanie, styl XPKodowanie, styl XP
– Cele XP są proste: oprogramowanie powinno Cele XP są proste: oprogramowanie powinno być dobrze przetestowane i dobrze sprawdzać być dobrze przetestowane i dobrze sprawdzać
się w działaniu się w działaniu
– Programiści XP używają trzech powiedzeń:Programiści XP używają trzech powiedzeń:
• Wykonanie najprostszej rzeczy , jaka będzie Wykonanie najprostszej rzeczy , jaka będzie działała
działała
• Nie będziemy tego potrzebowaliNie będziemy tego potrzebowali
• Raz i tylko razRaz i tylko raz
Extreme Programming Extreme Programming
• Wykonanie najprostszej rzeczy , jaka będzie Wykonanie najprostszej rzeczy , jaka będzie działała
działała
– Zachowanie równowagi pomiędzy funkcjonalnością i Zachowanie równowagi pomiędzy funkcjonalnością i prostotą
prostotą
– Prosty nie oznacza najszybszy do napisania!Prosty nie oznacza najszybszy do napisania!
– Znalezienie najprostszego rozwiązania jest trudneZnalezienie najprostszego rozwiązania jest trudne
– Unikamy pytania „a jeśli…?”, piszemy tylko to co jest Unikamy pytania „a jeśli…?”, piszemy tylko to co jest potrzebne w danej chwili, trzymamy się kart zadań potrzebne w danej chwili, trzymamy się kart zadań
Extreme Programming Extreme Programming
• Nie będziemy tego potrzebowaliNie będziemy tego potrzebowali
– Dzisiejszą pracę wykonaj dzisiaj a jutrzejszą Dzisiejszą pracę wykonaj dzisiaj a jutrzejszą jutro
jutro
– Nie przewiduj przyszłych funkcji ponieważ Nie przewiduj przyszłych funkcji ponieważ założenia mogą się zmieniać
założenia mogą się zmieniać
– Należy zaufać klientowi, że zidentyfikuje Należy zaufać klientowi, że zidentyfikuje właściwe funkcje
właściwe funkcje
Extreme Programming Extreme Programming
• Raz i tylko razRaz i tylko raz
– Unikanie powtórzeń w kodzieUnikanie powtórzeń w kodzie
– Ponowne wykorzystanie fragmentów koduPonowne wykorzystanie fragmentów kodu – Częste używanie refaktoryzacjiCzęste używanie refaktoryzacji
Extreme Programming Extreme Programming
KONIEC KONIEC
Dziękuję za uwagę.
Dziękuję za uwagę.