Upload
zeheb
View
41
Download
1
Embed Size (px)
DESCRIPTION
Extreme Programming. Nowoczesne metody zespołowego tworzenia aplikacji Krzysztof Chłosta s1644. Extreme Programming. Extreme Programming czyli Wydajne Programowanie, w skrócie XP (bez skojarzeń!) Nowe techniki tworzenia aplikacji Powstawały i były rozwijane przez kilka niezależnych grup - PowerPoint PPT Presentation
Citation preview
Extreme Extreme ProgrammingProgramming
Nowoczesne metody zespołowego Nowoczesne metody zespołowego tworzenia aplikacjitworzenia aplikacji
Krzysztof Chłosta s1644Krzysztof Chłosta s1644
Extreme ProgrammingExtreme 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 grupniezależnych grup
• Tylko projekty ITTylko 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 metodyskuteczności tej metody
Extreme ProgrammingExtreme Programming
• Podejście do zmian Podejście do zmian w projektach:w projektach:– Klasyczne: zmiany Klasyczne: zmiany
są trudne i są trudne i kosztownekosztowne
– XP: zmiany są XP: zmiany są nieuniknione więc nieuniknione więc trzeba być na nie trzeba być na nie przygotowanymprzygotowanym
Tradycyjna krzywa kosztu zmian
0
200
400
600
800
1000
1200
1400
1 kwartał 2 kwartał 3 kwartał 4 kwartał 5 kwartał
Czas
Ko
szt
Krzywa kosztu zmian dla XP
0
200
400
600
800
1000
1200
1 kwartał 2 kwartał 3 kwartał 4 kwartał 5 kwartał
Czas
Ko
szt
Extreme ProgrammingExtreme 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 ProgrammingExtreme Programming
• Przykład teoretyczny:Przykład teoretyczny:– Zasoby wody na stacji Zasoby wody na stacji
kosmicznej są stałekosmicznej są stałe– W systemie zamkniętym W systemie zamkniętym
czysta woda trafia na czysta woda trafia na stronę brudnejstronę brudnej
– Urządzenie zawiera Urządzenie zawiera panel sterujący z panel sterujący z czterema pokrętłami: czterema pokrętłami: Czas, Zasoby, Czas, Zasoby, Możliwości, JakośćMożliwości, Jakość
– Każde z pokręteł steruje Każde z pokręteł steruje aspektami filtrowaniaaspektami filtrowania
KlienciWoda
niezdatna do picia
Woda zdatna do picia
Urządzenie do filtrowania
Extreme ProgrammingExtreme 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ówprogramistów
– Zrealizowane zamówienie Zrealizowane zamówienie trafia do klientatrafia 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ązanie w postaci
kodu
Proces tworzenia
Problem biznesow
y
Extreme ProgrammingExtreme 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 ProgrammingExtreme Programming
• Dobra Dobra komunikacjakomunikacja 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 projektpogrążyć dowolny projekt
• Klient odpowiada na pytania co powinno być Klient odpowiada na pytania co powinno być zrobione i jakie są priorytetyzrobione 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 ProgrammingExtreme Programming
• Zadawanie pytańZadawanie pytań jest jedynym jest jedynym sposobem poznawania zdania klienta.sposobem 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 pytania tym więcej mamy czasu na reakcję.reakcję.
• Częste uzyskiwanie odpowiedzi pozwala Częste uzyskiwanie odpowiedzi pozwala na częste wprowadzanie zmian i poprawekna częste wprowadzanie zmian i poprawek
Extreme ProgrammingExtreme Programming
• ProstotaProstota 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 Koszt dodania funkcji później będzie taki sam jak dzisiaj.taki sam jak dzisiaj.
Extreme ProgrammingExtreme Programming
• OdwagaOdwaga 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 ProgrammingExtreme 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 ProgrammingExtreme 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 Praktykowanie XP wymaga dyscypliny
ponieważ wykorzystywanie kilku technik bez ponieważ wykorzystywanie kilku technik bez znajomości interakcji może doprowadzić do znajomości interakcji może doprowadzić do poważnych błędów.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 ProgrammingExtreme Programming
• Techniki kodowania:Techniki kodowania:– Proste projektowanie i kodowanieProste projektowanie i kodowanie
• Cel: wykonanie oprogramowania łatwego w Cel: wykonanie oprogramowania łatwego w modyfikacjimodyfikacji
– 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 ProgrammingExtreme 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 Cel: rozszerzenie odpowiedzialności za kod na cały
zespółzespół
– Ciągła integracjaCiągła integracja• Cel: redukcja wpływu wprowadzenia nowych funkcjiCel: redukcja wpływu wprowadzenia nowych funkcji
Extreme ProgrammingExtreme 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 Cel: tworzenie harmonogramu dla najważniejszych
zadań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 marnezawierzył, ż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 ProgrammingExtreme 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 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 ProgrammingExtreme 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 ProgrammingExtreme Programming
• Oszacowanie czasu pracy i Oszacowanie czasu pracy i harmonogramowanieharmonogramowanie
• Oszacowanie daje klientowi możliwość Oszacowanie daje klientowi możliwość wybrania priorytetów dla funkcjiwybrania priorytetów dla funkcji
• Klient tworzy opisy funkcji (karty funkcji)Klient tworzy opisy funkcji (karty funkcji)• Programiści tworzą zadania dla każdej Programiści tworzą zadania dla każdej
funkcji i szacują czasfunkcji 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 WydanieWydanie czyli czyli
działająca wersję w pełni przetestowaną działająca wersję w pełni przetestowaną przez programistów.przez programistów.
Extreme ProgrammingExtreme Programming
• Elementy XPElementy XP– Karty funkcjiKarty funkcji
•Opis co zdaniem klienta co powinno być Opis co zdaniem klienta co powinno być wykonanewykonane
• 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 harmonogramieharmonogramie
•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 ProgrammingExtreme Programming
– Karty zadańKarty zadań• Jest to główne narzędzie planowania Jest to główne narzędzie planowania
programistówprogramistó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 funkcjiprowadzą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 podstawiefunkcji i powstaje na jej podstawie•Zadania powinny być niewielkie i zajmować Zadania powinny być niewielkie i zajmować
klika idealnych godzinklika idealnych godzin
Extreme ProgrammingExtreme 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 światapomieszczenie 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 tablickliku 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 ProgrammingExtreme 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 Współpracuje z programistami, wykonuje
testy adaptacyjnetesty adaptacyjne•Odpowiada za stronę finansową projektuOdpowiada za stronę finansową projektu•Określa priorytetyOkreśla priorytety
Extreme ProgrammingExtreme Programming
– ProgramistaProgramista•Pracuje nad kodem, zamienia opisy funkcji Pracuje nad kodem, zamienia opisy funkcji
na działające rozwiązaniana działające rozwiązania
•Współpracuje z klientem aby dobrze Współpracuje z klientem aby dobrze zrozumieć opis funkcjizrozumieć 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 ProgrammingExtreme 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 rzeczywistegooszacowanego do 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 ProgrammingExtreme Programming
• Kodowanie, styl XPKodowanie, 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łaniudobrze 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ładziałała•Nie będziemy tego potrzebowaliNie będziemy tego potrzebowali•Raz i tylko razRaz i tylko raz
Extreme ProgrammingExtreme Programming
• Wykonanie najprostszej rzeczy , jaka Wykonanie najprostszej rzeczy , jaka będzie działałabędzie 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
trudnetrudne– 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 ProgrammingExtreme Programming
• Nie będziemy tego potrzebowaliNie będziemy tego potrzebowali– Dzisiejszą pracę wykonaj dzisiaj a Dzisiejszą pracę wykonaj dzisiaj a
jutrzejszą jutrojutrzejszą 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 funkcjewłaściwe funkcje
Extreme ProgrammingExtreme Programming
• Raz i tylko razRaz i tylko raz– Unikanie powtórzeń w kodzieUnikanie powtórzeń w kodzie– Ponowne wykorzystanie fragmentów Ponowne wykorzystanie fragmentów
kodukodu– Częste używanie refaktoryzacjiCzęste używanie refaktoryzacji
Extreme ProgrammingExtreme Programming
KONIECKONIEC
Dziękuję za uwagę.Dziękuję za uwagę.