extreme programming

30
Extreme Extreme Programming Programming Nowoczesne metody zespołowego Nowoczesne metody zespołowego tworzenia aplikacji tworzenia aplikacji Krzysztof Chłosta s1644 Krzysztof Chłosta s1644

Upload: zeheb

Post on 12-Jan-2016

41 views

Category:

Documents


1 download

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

TRANSCRIPT

Page 1: Extreme Programming

Extreme Extreme ProgrammingProgramming

Nowoczesne metody zespołowego Nowoczesne metody zespołowego tworzenia aplikacjitworzenia aplikacji

Krzysztof Chłosta s1644Krzysztof Chłosta s1644

Page 2: Extreme Programming

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

Page 3: Extreme Programming

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

Page 4: Extreme Programming

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ść

Page 5: Extreme Programming

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

Page 6: Extreme Programming

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

Page 7: Extreme Programming

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

Page 8: Extreme Programming

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)

Page 9: Extreme Programming

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

Page 10: Extreme Programming

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.

Page 11: Extreme Programming

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.

Page 12: Extreme Programming

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.

Page 13: Extreme Programming

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.

Page 14: Extreme Programming

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

Page 15: Extreme Programming

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

Page 16: Extreme Programming

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

Page 17: Extreme Programming

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.

Page 18: Extreme Programming

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.

Page 19: Extreme Programming

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.

Page 20: Extreme Programming

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.

Page 21: Extreme Programming

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

Page 22: Extreme Programming

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ń

Page 23: Extreme Programming

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

Page 24: Extreme Programming

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

Page 25: Extreme Programming

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

Page 26: Extreme Programming

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

Page 27: Extreme Programming

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ń

Page 28: Extreme Programming

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

Page 29: Extreme Programming

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

Page 30: Extreme Programming

Extreme ProgrammingExtreme Programming

KONIECKONIEC

Dziękuję za uwagę.Dziękuję za uwagę.