Extreme
Extreme
Programming
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 aplikacji
Nowe 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 IT
Tylko projekty IT
•
W ostatnich latach tysiące firm i
W ostatnich latach tysiące firm i
programistów przekonało się o
programistów przekonało się o
skuteczności tej metody
skuteczności tej metody
Extreme Programming
Extreme Programming
•
Podejście do zmian
Podejście do zmian
w projektach:
w projektach:
–
Klasyczne: zmiany
Klasyczne: zmiany
są trudne i
są trudne i
kosztowne
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 XP
Równanie XP
–
Projektami można zarządzać w czterech
Projektami można zarządzać w czterech
kategoriach:
kategoriach:
•
Czas
Czas
•
Możliwości
Możliwości
•
Zasoby
Zasoby
•
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
aspektami filtrowania
aspektami filtrowania
Klienci
Woda
niezdatn
a do
picia
Woda
zdatna
do
picia
Urządzenie do
filtrowania
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
Zamówienie jest
realizowane przez
realizowane przez
programistów
programistów
–
Zrealizowane zamówienie
Zrealizowane zamówienie
trafia do klienta
trafia do klienta
–
Na podstawie wyników
Na podstawie wyników
klient podejmuje decyzję o
klient podejmuje decyzję o
złożeniu ponownego
złożeniu ponownego
zamówienia i cały cykl się
zamówienia i cały cykl się
powtarza.
powtarza.
Klient
Rozwiązani
e w postaci
kodu
Proces
tworzenia
Problem
biznesow
y
Extreme Programming
Extreme Programming
•
Wartości XP
Wartości XP
•
Wydajne Programowanie składa się z
Wydajne Programowanie składa się z
czterech podstawowych wartości:
czterech podstawowych wartości:
–
Komunikacja
Komunikacja
–
Odpowiedzi na pytania
Odpowiedzi na pytania
–
Prostota
Prostota
–
Odwaga
Odwaga
Extreme Programming
Extreme Programming
•
Dobra
Dobra
komunikacja
komunikacja
do podstawa każdego
do podstawa każdego
projektu.
projektu.
•
Ignorowanie bądź ukrywanie informacji potrafi
Ignorowanie bądź ukrywanie informacji potrafi
pogrążyć dowolny projekt
pogrążyć dowolny projekt
•
Klient odpowiada na pytania co powinno być
Klient odpowiada na pytania co powinno być
zrobione i jakie są priorytety
zrobione i jakie są priorytety
•
Programiści i analitycy mówią w jaki sposób
Programiści i analitycy mówią w jaki sposób
zadanie zostanie wykonane, ile potrwa to czasu
zadanie zostanie wykonane, ile potrwa to czasu
oraz określają ryzyko.
oraz określają ryzyko.
•
Dobra, częsta i szczera komunikacja z klientem to
Dobra, częsta i szczera komunikacja z klientem to
jedno z kluczowych założeń XP
jedno 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
Jedynym sposobem zaakceptowania kodu
przez klienta jest przetestowanie.
przez klienta jest przetestowanie.
•
Im wcześniej uzyskamy odpowiedzi na
Im wcześniej uzyskamy odpowiedzi na
pytania tym więcej mamy czasu na reakcję.
pytania 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
•
Prostota
Prostota
oznacza wykonywanie tylko
oznacza wykonywanie tylko
tej części systemu która rzeczywiście
tej części systemu która rzeczywiście
musi być wykonana.
musi 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
Wystarczy zapytać, nie trzeba
zgadywać.
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
•
Odwaga
Odwaga
oznacza podejmowanie
oznacza podejmowanie
trudnych decyzji gdy jest to konieczne.
trudnych 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ć
Gdy nie uda nam się dostarczyć
wszystkich funkcji w zaplanowanym
wszystkich funkcji w zaplanowanym
terminie należy od razu powiadomić
terminie należy od razu powiadomić
klienta. To on zdecyduje którymi
klienta. To on zdecyduje którymi
funkcjami należy się zająć najpierw.
funkcjami należy się zająć najpierw.
Extreme Programming
Extreme Programming
•
Zakładanie dostateczności rozwiązania
Zakładanie dostateczności rozwiązania
–
Wystarczająca ilość czasu zakłada niski
Wystarczająca ilość czasu zakłada niski
koszt zmian w dowolnym etapie projektu.
koszt 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 XP
Techniki 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
interakcji może doprowadzić do poważnych
błędów.
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 kodowanie
Proste projektowanie i kodowanie
•
Cel: wykonanie oprogramowania łatwego w
Cel: wykonanie oprogramowania łatwego w
modyfikacji
modyfikacji
–
Bezlitosna refaktoryzacja
Bezlitosna refaktoryzacja
•
Cel: Znalezienie optymalnego projektu kodu
Cel: Znalezienie optymalnego projektu kodu
–
Opracowanie standardów kodowania
Opracowanie standardów kodowania
•
Cel: łatwe przekazywanie pomysłów przy użyciu kodu
Cel: łatwe przekazywanie pomysłów przy użyciu kodu
–
Stosowanie wspólnego słownictwa
Stosowanie wspólnego słownictwa
•
Cel: łatwe przekazywanie nowych pomysłów
Cel: łatwe przekazywanie nowych pomysłów
Extreme Programming
Extreme Programming
•
Techniki tworzenia:
Techniki tworzenia:
–
Kreowanie z nakierowaniem na testy
Kreowanie z nakierowaniem na testy
•
Cel: udowodnienie, że kod działa zgodnie z założeniami
Cel: udowodnienie, że kod działa zgodnie z założeniami
–
Programowanie w parach
Programowanie w parach
•
Cel: szerzenie wiedzy, doświadczenia i pomysłów
Cel: szerzenie wiedzy, doświadczenia i pomysłów
–
Stosowanie zasady wspólnej własności kodu
Stosowanie zasady wspólnej własności kodu
•
Cel: rozszerzenie odpowiedzialności za kod na cały
Cel: rozszerzenie odpowiedzialności za kod na cały
zespół
zespół
–
Ciągła integracja
Ciągła integracja
•
Cel: redukcja wpływu wprowadzenia nowych funkcji
Cel: redukcja wpływu wprowadzenia nowych funkcji
Extreme Programming
Extreme Programming
•
Techniki biznesowe:
Techniki biznesowe:
–
Klient jest członkiem zespołu
Klient jest członkiem zespołu
•
Cel: aby dobrze spełnić założenia biznesowe
Cel: aby dobrze spełnić założenia biznesowe
–
Zabawa w planowanie
Zabawa w planowanie
•
Cel: tworzenie harmonogramu dla najważniejszych zadań
Cel: tworzenie harmonogramu dla najważniejszych zadań
–
Regularne wydania
Regularne 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 spokoju
Praca we względnym spokoju
•
Cel: pójście do domu zmęczonym a nie wykończonym
Cel: pójście do domu zmęczonym a nie wykończonym
Extreme Programming
Extreme Programming
•
Zdarzenia XP
Zdarzenia XP
–
Iteracje to bardzo ważny składnik XP.
Iteracje to bardzo ważny składnik XP.
–
Są to mniejsze i szybsze wersje
Są to mniejsze i szybsze wersje
tradycyjnego cyklu tworzenia
tradycyjnego cyklu tworzenia
oprogramowania.
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
dostosowanie harmonogramu do zmian
w projekcie.
w projekcie.
–
Spotkania dotyczące planowania
Spotkania dotyczące planowania
prowadzone są przez klienta.
prowadzone są przez klienta.
–
Są na nich określane priorytety funkcji
Są na nich określane priorytety funkcji
które mają być zaimplementowane i
które mają być zaimplementowane i
dostarczone w danej iteracji.
dostarczone w danej iteracji.
Extreme Programming
Extreme Programming
•
Oszacowanie czasu pracy i
Oszacowanie czasu pracy i
harmonogramowanie
harmonogramowanie
•
Oszacowanie daje klientowi możliwość
Oszacowanie daje klientowi możliwość
wybrania priorytetów dla funkcji
wybrania priorytetów dla funkcji
•
Klient tworzy opisy funkcji (karty funkcji)
Klient tworzy opisy funkcji (karty funkcji)
•
Programiści tworzą zadania dla każdej funkcji
Programiści tworzą zadania dla każdej funkcji
i szacują czas
i szacują czas
•
Klient umieszcza zadania w iteracji.
Klient umieszcza zadania w iteracji.
•
Na końcu iteracji następuje
Na końcu iteracji następuje
Wydanie
Wydanie
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 XP
Elementy XP
–
Karty funkcji
Karty funkcji
•
Opis co zdaniem klienta co powinno być
Opis co zdaniem klienta co powinno być
wykonane
wykonane
•
Jest to informacja biznesowa
Jest 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
Jest to główne narzędzie planowania
programistów
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ą
Każda karta zadań jest powiązana z kartą
funkcji i powstaje na jej podstawie
funkcji i powstaje na jej podstawie
•
Zadania powinny być niewielkie i zajmować
Zadania powinny być niewielkie i zajmować
klika idealnych godzin
klika idealnych godzin
Extreme Programming
Extreme Programming
–
Pokój wojenny
Pokój wojenny
•
Jest to pomieszczenie pracy programistów
Jest 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
Stanowisko komputerowe przewidziane dla
dwóch osób (programowanie parami)
dwóch osób (programowanie parami)
•
Na ścianach powinno znaleźć się miejsce dla
Na ścianach powinno znaleźć się miejsce dla
kliku tablic
kliku tablic
•
Klient powinien przebywać w pokoju
Klient powinien przebywać w pokoju
wojennym ponieważ ułatwia to zadawanie
wojennym ponieważ ułatwia to zadawanie
pytań
pytań
Extreme Programming
Extreme Programming
•
Role w XP
Role w XP
–
Klient
Klient
•
Steruje projektem, definiuje go
Steruje projektem, definiuje go
•
Określa cele
Okreś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
Współpracuje z programistami, wykonuje
testy adaptacyjne
testy adaptacyjne
•
Odpowiada za stronę finansową projektu
Odpowiada za stronę finansową projektu
•
Określa priorytety
Określa priorytety
Extreme Programming
Extreme Programming
–
Programista
Programista
•
Pracuje nad kodem, zamienia opisy funkcji
Pracuje nad kodem, zamienia opisy funkcji
na działające rozwiązania
na działające rozwiązania
•
Współpracuje z klientem aby dobrze
Współpracuje z klientem aby dobrze
zrozumieć opis funkcji
zrozumieć opis funkcji
•
Tworzy karty zadań
Tworzy karty zadań
•
Określa czas potrzebny na wykonanie funkcji
Określa czas potrzebny na wykonanie funkcji
•
Unika decyzji biznesowych
Unika 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
Mierzy szybkość prac, stosunek czasu
oszacowanego do rzeczywistego
oszacowanego do rzeczywistego
•
Trener
Trener
–
Potrzebny przy wdrażaniu technik XP
Potrzebny przy wdrażaniu technik XP
–
Pomaga i dopinguje zespół
Pomaga i dopinguje zespół
–
Powinien być osobą z autorytetem wśród zespołu
Powinien być osobą z autorytetem wśród zespołu
Extreme Programming
Extreme Programming
•
Kodowanie, styl XP
Kodowanie, styl XP
–
Cele XP są proste: oprogramowanie
Cele XP są proste: oprogramowanie
powinno być dobrze przetestowane i
powinno być dobrze przetestowane i
dobrze sprawdzać się w działaniu
dobrze sprawdzać się w działaniu
–
Programiści XP używają trzech
Programiści XP używają trzech
powiedzeń:
powiedzeń:
•
Wykonanie najprostszej rzeczy , jaka będzie
Wykonanie najprostszej rzeczy , jaka będzie
działała
działała
•
Nie będziemy tego potrzebowali
Nie będziemy tego potrzebowali
•
Raz i tylko raz
Raz 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
Zachowanie równowagi pomiędzy
funkcjonalnością i prostotą
funkcjonalnością i prostotą
–
Prosty nie oznacza najszybszy do napisania!
Prosty nie oznacza najszybszy do napisania!
–
Znalezienie najprostszego rozwiązania jest
Znalezienie najprostszego rozwiązania jest
trudne
trudne
–
Unikamy pytania „a jeśli…?”, piszemy tylko to
Unikamy pytania „a jeśli…?”, piszemy tylko to
co jest potrzebne w danej chwili, trzymamy się
co jest potrzebne w danej chwili, trzymamy się
kart zadań
kart zadań
Extreme Programming
Extreme Programming
•
Nie będziemy tego potrzebowali
Nie będziemy tego potrzebowali
–
Dzisiejszą pracę wykonaj dzisiaj a
Dzisiejszą pracę wykonaj dzisiaj a
jutrzejszą jutro
jutrzejszą jutro
–
Nie przewiduj przyszłych funkcji
Nie przewiduj przyszłych funkcji
ponieważ założenia mogą się zmieniać
ponieważ 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 raz
Raz i tylko raz
–
Unikanie powtórzeń w kodzie
Unikanie powtórzeń w kodzie
–
Ponowne wykorzystanie fragmentów
Ponowne wykorzystanie fragmentów
kodu
kodu
–
Częste używanie refaktoryzacji
Częste używanie refaktoryzacji
Extreme Programming
Extreme Programming
KONIEC
KONIEC
Dziękuję za uwagę.
Dziękuję za uwagę.