Upload
phungthien
View
217
Download
0
Embed Size (px)
Citation preview
1
Inżynieria oprogramowania
Programowanie Ekstemalne
Koncepcja wykładu:Slajdy/Lektor/Montaż:
Jerzy Nawrocki/Łukasz OlekŁukasz Olek
Witam Państwa serdeczenie na kolejnym wykładzie dotyczącym inżynieriioprogramowania!
2
Inżynieria oprogramowania
Programowanie Ekstremalne (2)
Plan wykładów
Zasady skutecznego działaniaSpecyfikacja wymagańKontrola jakości artefaktówJęzyk UML, cz. IJęzyk UML, cz. IIMetody formalneWzorce projektoweZarządzanie konfiguracjąWprowadzenie do testowaniaAutomatyzacja wykonywania testówProgramowanie EkstremalneEwolucja oprogramowania i refaktoryzacja
Jest to jedenasty wykład w tym cyklu i będzie dotyczył podejść do projektówinformatycznych, a w szczególności Programowania Ekstremalnego.Zaczniemy od krótkiego wprowadzenia…
3
Inżynieria oprogramowania
Programowanie Ekstremalne (3)
Wprowadzenie
• Syndrom LOOP– Late
Późno– Over budget
Przekrocznoy budżet– Overtime
Nadgodziny– Poor quality
Kiepska jakość
LOOP
W dziedzinie tworzenia oprogramowania, w latach 80-90 nasilił się syndromLOOP. Powstające oprogramowanie stawało się coraz bardziej złożone, aludzie nie mieli sposobu na poradzenie sobie z tą złożonością. W związku ztym powszechne stawało się przekraczanie terminów, nadwyrężanie budżetu,programiści wypracowywali wiele nadgodzin, a w rezultacie system miałniższą jakość.
4
Inżynieria oprogramowania
Programowanie Ekstremalne (4)
Rozwiązanie problemu (lata 80-90)
Więcej dyscypliny!
Odpowiedzią na te problemy były standardy i wymagania dotyczące procesówwytwarzania oprogramowania. Wszystkie one zakładały, że należy stworzyćprocedury wykonywania poszczególnych czynności w projektachinformatycznych, a następnie zmusić programistów do ich przestrzegania.
5
Inżynieria oprogramowania
Programowanie Ekstremalne (5)
ISO 9000
Audytor
Jednym z najbardziej znanych standardów dotyczących jakości (nie tylko wprojektach informatycznych) jest standard ISO 9000. Pierwsza wersja tegostandardu powstała już w 1987 roku, kolejne w 1994 i 2000.Standard ten wymagał, aby firma udokumentowała wszystkie swoje proceduryzwiązane z wytwarzaniem oprogramowania. Następnie specjalny audytorsprawdzał te procedury i firma otrzymywała certyfikat ISO 9000. Dojrzałośćfirmy badano jedynie przez pryzmat tych zdefiniowanych procedur i jeżeli firmatakowych nie posiadała była uważana za gorszą, mimo że mogła produkowaćświetne oprogramowanie.
6
Inżynieria oprogramowania
Programowanie Ekstremalne (6)
Model CMM (Capability Maturity Model)
• Departament Obrony USA• SEI, Carnegie-Mellon
Univ.• 1987-97• CMMI: grudzień, 2000
CMM
Innym sposobem na ocenę procesów wytwarzania oprogramowania wprzedsiębiorstwie jest model dojrzałości CMM, opracowany przez SoftwareEngineering Institute z Carnegie-Mellon University.Model był rozwijany w latach 1987-1997. Od 1997 roku zaczęto pracować nadnowszą wersją nazwaną CMMI, która była pozbawiona wielu wad modeluCMM.Model CMM dzieli firmy na 5 poziomów, w zależności od ich potencjalnychmożliwości wyprodukowania oprogramowania wysokiej jakości. Z każdympoziomem związany jest zbiór standardów (procedur), które muszą byćprzestrzegane w firmie.
Poziom pierwszy - nie nakłada żadnych wymagań. Każda firma wytwarzającaoprogramowanie znajduje się początkowo na tym poziomie.
7
Inżynieria oprogramowania
Programowanie Ekstremalne (7)
Procedury dla CMM Poziom 2
• przeglądy zobowiązań zewnętrznych• opracowywanie planu przedsięwzięcia• szacowanie rozmiaru, pracochłonności,
kosztu, krytycznych zasobówobliczeniowych i harmonogramu
• dokonywanie zmian w planie• przeglądy przedsięwzięcia przy
kamieniach milowych• planowanie zapewnienia jakości• ...
Pomiędzy poziomem pierwszym, a drugim obserwujemy ogromną różnicę.Poziom pierwszy nie nakłada żadnych wymagań, natomiast na poziomiedrugim należy mieć opracowane dosyć dojrzałe procesy wytwórcze.Wybrane procedury dla poziomu 2 przedstawione są na slajdzie. Dotyczą onepodstaw zarządzania projektem, w celu śledzenia kosztu i harmonogramu.Przy każdym kamieniu milowym następuje zbadanie postępów projektu.
8
Inżynieria oprogramowania
Programowanie Ekstremalne (8)
Krytyka podejść zorientowanych na dyscyplinę
• Dużo czasu poświęcanegona administrację
• Papierowa fikcja• Skupienie się na procesie,
nie jakości produktu• Zapis procedur utrudnia
poprawy procesów
Niestety, podejścia zorientowane na procedury i dyscyplinę mają poważnewady. Niektórzy zarzucają, iż dużo czasu trzeba poświęcić na administrację,zamiast na pisanie oprogramowania.Inni mówią o papierowej fikcji - dokumenty często powstają sztucznie, tylkodlatego, że są wymagane, ale nic z nich nie wynika.Kolejny argument to opinia, iż nie zawsze skupienie się na jakości procesuskutkuje wysoką jakością produktu.Jedną z największych wad jednak są sztywne procedury. Po opracowaniuprocedur i otrzymaniu certyfikatu (kosztownego zresztą) nie można dowolnieich zmieniać, nawet wtedy, gdy zmiana ta skutkowałaby oczywistą poprawąprocesu. Po każdej zmianie wymagany jest ponowny audyt, na co niewszystkie organizacje stać.
9
Inżynieria oprogramowania
Programowanie Ekstremalne (9)
Dyscyplina zabija inicjatywę i elastyczność
Ostatni argument przeciwko zorientowaniu na dyscyplinę - opracowaneprocedury zabijają inicjatywę i elastyczność.Dobrze obrazuje to rysunek na slajdzie.Podsumowując… W podejściu zorientowanym na procedury i dyscyplinęstarano się poprawić jakość wytwarzanego oprogramowania. Niestetypoprawiając jedną rzecz, zaniedbano inną, jaką jest fakt, iż praca programistyto praca twórca. Tego rodzaju pracy nie można dobrze opisać za pomocązbioru procedur, a następnie rygorystycznie ich przestrzegać.
10
Inżynieria oprogramowania
Programowanie Ekstremalne (10)
Programowanie Ekstremalne
• Extreme Programming (XP):– lekka (ang. agile)
metodyka rozwojuoprogramowania
– 1999– Kent Beck
Dlatego też, pod koniec lat 90-tych zaczęto obserwować irytację podejściaminastawionymi na kontrolowanie procedur i dyscyplinę. Ludzie zastanawiali się,w jaki sposób można „odchudzić” procesy wytwarzania oprogramowania, przyzachowaniu wysokiej jakości (lub czasem wręcz jej poprawieniu). W tensposób powstały „lekkie” metodyki rozwoju oprogramowania, których dobrymprzykładem jest Programowanie Ekstremalne, po angielsku zwane również„XP”. XP zostało wymyślone przez Kenta Becka w latach 1996-1999, kiedy topracował w firmie Chrysler nad oprogramowaniem przetwarzającym listy płacdla 87000 pracowników.
11
Inżynieria oprogramowania
Programowanie Ekstremalne (11)
Plan wykładu
• Wprowadzenie• Manifest zwinności• Wartości XP• Główne reguły i praktyki
XP:– Struktura zespołu– Relacje z klientem– Zapewnienie jakości– Programowanie parami
• Czynniki ryzyka
Po tym krótkim wprowadzeniu zostaną przedstawione następujące tematy:-manifest zwinności - zbiór zasad wspólny dla wszystkich zwinnych metodykwytwarzania oprogramowania (nie tylko XP)-wartości, którymi kieruje się Programowanie Ekstremalne-główne reguły i praktyki XP, dotyczące struktury zespołu, relacji z klientem,zapewnienia jakości, czy też programowania parami-czynniki ryzyka, czy też wady programowania ekstremalnego
12
Inżynieria oprogramowania
Programowanie Ekstremalne (12)
Manifest zwinności
• Luty 2001, Snowbird,Utah, 17 osób:– Kent Beck
– Alistair Cockburn
– Martin Fowler
– Jim Highsmith
W 2001 roku w kurorcie narciarskim Snowbird w stanie Utah w USA spotkałosię 17 osób związanych ze zwinnymi metodykami.Ważniejsze osobistości to:-wspomniany już Kent Beck - twórca metody kart CRC stosowanej podczasanalizy obiektowej, autor narzędzi xUnit - wspomagających testowaniejednostkowe oraz twórca XP-Alistair Cockburn - autor rodziny zwinnych metodyk Crystal, oraz książekpoświęconych inżynierii wymagań (głównie przypadkom użycia)-Martin Fowler - twórca pomysłu refaktoryzacji, autor świetnej książki „UMLDistilled” (UML w kropelce)-Jim Highsmith - autor metodyki Adaptive Software DevelopmentOsoby te miały już pewne doświadczenia związane ze zwinnymi metodykamiwytwarzania oprogramowania, a spotkały się w celu przedyskutowaniawspólnych zasad tych metodyk.
13
Inżynieria oprogramowania
Programowanie Ekstremalne (13)
Manifest zwinności
Jednostki i interakcje
O K
Działające oprogr.
Współpraca klienta Nadążanie za zmianami
Jutro, albo nigdy!
W wyniku tego spotkania powstał tzw. manifest zwinności, czyli zbiór 4podstawowych zasad zwinnych metodyk wytwarzania oprogramowania.Postulują oni, iż ważniejsze:
•Jednostki i interakcje niż procesy inarzędzia, czyli ewidentnie sprzeciwiająsię podejściom zorientowanym naprocedury i dyscyplinę
•Działające oprogramowanie niżobszerna dokumentacja - stawiają najakość produktu końcowego•Współpraca klienta niż negocjacjakontraktu•Nadążanie za zmianami niżtrzymanie się planu - to ostatniazasada i zarazem kolosalna zmianaw porównaniu do podejśćzorientowanych na dyscyplinę. Odtej chwili dowolnie dopuszczamyzmiany w wymaganiach, zamiastblokować je i tłumaczyć tym, że „jużza późno”, ale zakładamyjednocześnie, że klient za wszystkozapłaci.
14
Inżynieria oprogramowania
Programowanie Ekstremalne (14)
Plan wykładu
• Wprowadzenie• Manifest zwinności• Wartości XP• Główne reguły i praktyki
XP:– Struktura zespołu– Relacje z klientem– Zapewnienie jakości– Programowanie parami
• Czynniki ryzyka
Przejdźmy do wartości XP. XP wymienia pięć wartości (początkowo były 4,jedna została dodana w drugim wydaniu książki Kenta Becka), na którychzbudowana jest metodyka. Zobaczmy, co to za wartości…
15
Inżynieria oprogramowania
Programowanie Ekstremalne (15)
Wartości XP
• Komunikacja– wymagania, wyobrażenie systemu– głównie werbalna
• Prostota• Sprzężenie zwrotne• Odwaga• Szacunek
Są to po kolei: komunikacja, prostota, sprzężenie zwrotne, odwaga, szacunek.Jak widać, są one bardzo ogólne, można by powiedzieć, że aż dziwne, żedotyczą one podejścia do wytwarzania systemów informatycznych. Kent Beckstawia jednak bardzo mocno na dobre relacje pomiędzy firmą informatyczną, aklientem, stara się zbudować atmosferę zaufania - wtedy dużo łatwiej sięporozumieć, zwłaszcza w sprawach spornych.Tak więc po kolei…Pierwszą wartością XP jest komunikacja. Budowanie systemówinformatycznych wymaga przekazania wymagań od klienta do programistów.W tradycyjnych metodykach wykorzystuje się w tym celu dokumenty(specyfikację wymagań). XP posługuje się komunikacją werbalną, dziękiczemu wiedza o systemie bardzo szybko rozprzestrzenia się w zespole. Dziękikomunikacji wszyscy członkowie zespołu mają takie samo wyobrażenieprzyszłego systemu i wiedzą w jakim kierunku projekt dąży.
16
Inżynieria oprogramowania
Programowanie Ekstremalne (16)
Wartości XP
• Komunikacja• Prostota
– na początku najprostszerozwiązanie
– refaktoryzacja pomaga przekształcić wbardziej skomplikowane
• Sprzężenie zwrotne• Odwaga• Szacunek
Drugą wartością jest prostota.XP zachęca do rozpoczęcia najprostszym możliwym rozwiązaniem problemu(minimalnym, spełniającym pewne początkowe wymagania). Dopiero kiedy sięupewnimy że idziemy w prawidłowym kierunku, na tej podstawiedobudowujemy resztę.Ktoś z Państwa zaraz zacznie się buntować - przecież w momencie kiedy takeksperymentujemy i budujemy stopniowo wielu rzeczy nie będziemy w stanieprzewidzieć na początku, natomiast kiedy trzeba będzie je zrobić, okaże sięże musimy „łatać” obecne rozwiązanie. W ten sposób w bardzo krótkim czasiearchitektura systemu może się popsuć, a jakoś znacznie spadnie.XP radzi sobie z tym problemem za pomocą refaktoryzacji. Refaktoryzacja, tometoda poprawiania architektury obecnego rozwiązania za pomocą małychprzekształceń, zamiast tworzenia wszystkiego od nowa. Tak więc dziękirefaktoryzacji jakość produktu jest stale na najwyższym poziomie.Dzięki prostocie programiści skupiają się na projektowaniu i kodowaniu napotrzeby bieżącego dnia, a nie robią nic na wyrost.Ta wartość jest powiązana z „komunikacją”, gdyż prostota architektury i koduułatwia zrozumienie, przez co komunikacja staje się łatwiejsza.
17
Inżynieria oprogramowania
Programowanie Ekstremalne (17)
Wartości XP
• Komunikacja• Prostota• Sprzężenie zwrotne
– w różnych wymiarach:• system• klient• zespół
• Odwaga• Szacunek
Kolejna wartość to sprzężenie zwrotne.W programowaniu ekstremalnym sprzężenie zwrotne dotyczy różnychwymiarów:-systemu - ważna jest odpowiedź systemu, otrzymywana w procesietestowania jednostkowego. Dzięki testom programiści mogą bardzo szybkosprawdzić poprawność odpowiedzi systemu w momencie wprowadzaniazmian.-klienta - w postaci testów akceptacyjnych. Klient przygotowuje takie testywraz z testerem, gdyż sam nie ma niezbędnej wiedzy informatycznej. Dziękitakim testom można sprawdzić w jakim stanie znajduje się aktualniebudowany system-zespołu - w momencie kiedy klient proponuje nowe wymagania podczas gryplanistycznej, zespół podaje szacunki ile czasu zajmie ichzaimplementowanie. Dzięki temu klient może podjąć decyzję, czy danewymaganie będzie realizowane od razu, w przyszłości, a może w ogóle.
18
Inżynieria oprogramowania
Programowanie Ekstremalne (18)
Wartości XP
• Komunikacja• Prostota• Sprzężenie zwrotne• Odwaga:
– aby nie projektować na wyrost– aby refaktoryzować kod– aby wyrzucić kod kiedy potrzeba
• Szacunek
Odwaga jest również postrzegana w wielu wymiarach.Po pierwsze, odwaga jest potrzebna, aby przestrzegać zasady projektowania ikodowania wg aktualnych potrzeb, bez zastanawiania się co będzie potrzebnew przyszłości.Po drugie, odwaga, aby nie angażować się za bardzo w projektowanie i odrazu przejść do kodowania.Po trzecie, odwaga jest potrzebna, aby zrefaktoryzować kod, wtedy kiedy tojest potrzebne, aby nie bać się refaktoryzacji.Po czwarte, jeżeli okaże się, że pewien fragment kodu jest już nieprzydatny,lub musi zostać zmieniony, do podjęcia decyzji o wyrzuceniu takiego kodupotrzeba dużo odwagi
19
Inżynieria oprogramowania
Programowanie Ekstremalne (19)
Wartości XP
• Komunikacja• Prostota• Sprzężenie zwrotne• Odwaga• Szacunek
– pomiędzy członkami zespołu– czasu i pracy innych
Ostatnia wartość to szacunek. Szacunek do pracy i czasu innych osób wzespole:-nie można wysyłać do repozytorium zmian, które nie dają się skompilowaćlub powodują błędy w testach jednostkowych, gdyż przez to praca innychosób będzie utrudniona, lub niemożliwa i stracą one dużo czasu.-poprzez dążenie do najwyższej jakości i szukanie najlepszych rozwiązańprojektowych (dzięki refaktoryzacji). Dzięki temu innym osobom będzie dużołatwiej wykorzystać kod napisany przez nas.
20
Inżynieria oprogramowania
Programowanie Ekstremalne (20)
Wartości XP
Podsumujmy. Najważniejsze wartości XP to: komunikacja, prostota,sprzężenie zwrotne, odwaga, szacunek.Zauważmy, że w odróżnieniu od podejść zorientowanych na dyscyplinę, niema tutaj mowy o procesach, dokumentacji, narzędziach. Najważniejsi sąludzie, gdyż to oni tworzą rozwiązania informatyczne.
21
Inżynieria oprogramowania
Programowanie Ekstremalne (21)
Plan wykładu
• Wprowadzenie• Manifest zwinności• Wartości XP• Główne reguły i praktyki
XP:– Struktura zespołu– Relacje z klientem– Zapewnienie jakości– Programowanie parami
• Czynniki ryzyka
Przejdźmy do szczegółów metodyki programowania ekstremalnego. Po koleizapoznamy się z jej regułami…Najpierw omówimy strukturę zespołu XP.
22
Inżynieria oprogramowania
Programowanie Ekstremalne (22)
Struktura zespołu
Klient
Programiści
Coach
Tracker
Tester
XP wymienia 2 najważniejsze role osób z zespołu:-programiści-klient.Zauważmy, że klient uważany jest za członka zespołu, więc musi przez całyczas pracować razem z informatykami (w jednym pomieszczeniu). Czasemnie występuje w tej roli osobiście, lecz za pośrednictwem przedstawicielaklienta.Oprócz tego mamy jeszcze kilka ról pomocniczych:-tester, którego zadaniem jest napisanie skryptów testowych na podstawierozmów z klientem-coach, to osoba, która pomaga rozwiązywać napotkane problemy-tracker natomiast zbiera statystyki dotyczące wykonanych zadań, czasupracy i tworzy podsumowania postępów projektu
23
Inżynieria oprogramowania
Programowanie Ekstremalne (23)
Plan wykładu
• Wprowadzenie• Manifest zwinności• Wartości XP• Główne reguły i praktyki
XP:– Struktura zespołu– Relacje z klientem– Zapewnienie jakości– Programowanie parami
• Czynniki ryzyka
XP bardzo mocno stawia na współpracę zespołu z klientem. Zakłada pełnezaufanie członków zespołu do klienta, oraz klienta do członków zespołu.
24
Inżynieria oprogramowania
Programowanie Ekstremalne (24)
Opowieści użytkowników (ang. user stories)
Data: 06.06.2006 Typ: Nowa: X Naprawa:__ Rozbudowa:__
Numer opowieści: 23
OPOWIEŚĆ: System przechowuje artykuły w formaciePDF. Umożliwia ich dodawanie, listowanie, atakże pobieranie.
Rozmiar: 3 dni
Po pierwsze - przedstawiciel klienta jest ciągłym źródłem wymagań.Wymagania są przedyskutowywane z nim na bieżąco, natomiast ślad z tychdyskusji jest przechowywany w formie opowieści użytkowników.Każda opowieść jest zapisana w kilku zdaniach na małej kartce papieru. Możebyć oznaczona dodatkowymi atrybutami (np. data utworzenia, typ, numer,rozmiar).
25
Inżynieria oprogramowania
Programowanie Ekstremalne (25)
Opowieści użytkowników
• Są wstępem dorozmowy
• Są krótkie• Opisują funkcję/cechę
systemu• Mają wartość dla klienta• Muszą być testowalne
Muszęnapisać
opowieść
Klient
Opowieść użytkownika nie jest kompletnym wymaganiem - wymaganiabowiem są jedynie przekazywane w bezpośredniej rozmowie.Po co więc zapisywać opowieści użytkownika? Powodów jest kilka:-dzięki temu można uporządkować rozmowę o wymaganiach-łatwo przydzielać funkcje do poszczególnych przyrostów-w łatwy sposób można śledzić postęp projektuWażne, aby każda opowieść miała wartość dla klienta i była testowalna!
26
Inżynieria oprogramowania
Programowanie Ekstremalne (26)
Hydrodynamiczny model projektu
Data dostarczenia Koszt Defekty Niekompletność
Jest jedna bardzo ważna prawidłowość wszystkich projektów informatycznych.Aby dobrze zrozumieć podejście programowania ekstremalnego, musimy tąprawidłowość poznać. Dobrze ją obrazuje „Hydrodynamiczny model projektu”.Istotne jest, aby każdy klient oraz informatyk znał ten model podczas rozmówo wymaganiach systemu. Bez niego może bowiem dojść do wielunieporozumień i problemów.Projekt informatyczny można zobrazować jako szczelny systemhydrodynamiczny 4 zmiennych: daty dostarczenia, kosztu, defektów orazniekompletności funkcji.
27
Inżynieria oprogramowania
Programowanie Ekstremalne (27)
Hydrodynamiczny model projektu
Data dostarczenia Koszt Defekty Niekompletność
Z fizycznego punktu widzenia niemożliwe jest obniżenie wszystkich czterechzmiennych jednocześnie, gdyż ilość „cieczy”, czyli pracy do wykonania jeststała w projekcie informatycznym.
28
Inżynieria oprogramowania
Programowanie Ekstremalne (28)
Hydrodynamiczny model projektu
Data dostarczenia Koszt Defekty Niekompletność
W momencie kiedy chcemy obniżyć koszt projektu, na pewno wzrośnie namjedna z innych zmiennych, np. niekompletność.Znając tę prawidłowość możemy „sterować” projektem. Np. zwiększyć jakość(obniżyć poziom defektów) poprzez zwiększenie kosztu, lub przy zachowanymkoszcie - zrezygnować z niektórych funkcji.Prawidłowość ta jest wykorzystywana w XP: zakładamy niski poziomdefektów, a klient sam steruje kosztami w zależności od tego ilefunkcjonalności sobie życzy.
29
Inżynieria oprogramowania
Programowanie Ekstremalne (29)
Cykl życia: model kaskadowy i XP
Kompletnawersja
zbieranie wymagań, analiza, projektowanie, kodowanie, testowanie,…
Kolejny element Programowania Ekstremalnego to cykl życia projektu.W tradycyjnym modelu kaskadowym wytwarzania oprogramowania, napoczątku mamy rozległą fazę zbierania wymagań, analizy, projektowania,kodowania, a na końcu testowania - zanim klient otrzyma kompletną wersjęsystemu.
30
Inżynieria oprogramowania
Programowanie Ekstremalne (30)
Cykl życia: model kaskadowy i XP
Wizja klienta
zbieranie wymagań, analiza, projektowanie, kodowanie, testowanie,… Końcowysystem
Niestety, w takim podejściu często okazuje się, że gdzieś w początkowychfazach nie zrozumieliśmy się do końca z klientem i wymagania były błędne. Wzwiązku z tym końcowy system może się zupełnie rozminąć z potrzebamiklienta.
31
Inżynieria oprogramowania
Programowanie Ekstremalne (31)
Cykl życia: model kaskadowy i XP
Wstępnawersja
Wizjaklienta
Kolejnawersja
Wizjaklienta
Programowanie Ekstremalne stara się zaradzić temu problemowi poprzezczęste wydania systemu, czyli zbudowanie wersji, która jest pokazywanaklientowi (a często nawet wdrażana). Dzięki temu klient jest w stanieskonfrontować rezultat ze swoimi oczekiwaniami. W ten sposób kolejne wersjesystemu są coraz bliższe wizji klienta.
32
Inżynieria oprogramowania
Programowanie Ekstremalne (32)
Cykl życia w XP
Wydanie 2Wydanie 1
Przyrost 1 Przyrost 2 Przyrost 1 Przyrost 2
Cykl życia w XP wygląda zatem następująco: mamy wydania podzielone naprzyrosty.
33
Inżynieria oprogramowania
Programowanie Ekstremalne (33)
Pierwsze wydaniesterowca gotowe!
Stosuj częste, krótkie wydania
• Wydanie:– Ma wartość użytkową.– Trafia do użytkowników
końcowych.
Każde wydanie ma wartość użytkową i trafia do użytkowników końcowych,dzięki czemu programiści dostają sprzężenie zwrotne.
34
Inżynieria oprogramowania
Programowanie Ekstremalne (34)
Przyrost I
Przyrost II
Wydanie podziel na przyrosty
• Przyrost:– Niepusty zbiór opowieści
użytkownika.– Charakter wewnętrzny
(nie trafia doużytkownikakońcowego).
– 2 – 3 tygodnie
Przyrosty mają jedynie charakter wewnętrzny. Pośrednie przyrostyniekoniecznie stanowią produkt, z którego klient byłby w stanie skorzystać.Każdy przyrost powinien trwać 2-3 tygodnie, oraz zawierać kilka opowieściużytkownika.
35
Inżynieria oprogramowania
Programowanie Ekstremalne (35)
Znajdź metaforę dla systemu
• Metafora:– Wyjaśnia działanie
systemu wterminachzrozumiałych dlaklienta
Sterowiec? Totaka łódka, tyle, żepływa w powietrzua nie po wodzie.
Kolejne zalecenie metodyki XP, to wyjaśnienie działania systemu za pomocąmetafory, czyli w terminach zrozumiałych dla klienta. Przykładowo możemypowiedzieć, że sterowiec to taka łódka, która pływa w powietrzu. Jeżeli klientznał pojęcie łódki, a nie znał sterowca, to na tej podstawie będzie w stanieprzybliżyć sobie obraz systemu.Metafora przydaje się zwłaszcza do ukrycia terminów technicznych, np.zamiast mówić relacja w bazie danych przechowująca dane faktur, możnapowiedzieć: komputerowy segregator z fakturami.
36
Inżynieria oprogramowania
Programowanie Ekstremalne (36)
Gra planistyczna
Pisze opowieść Dzieli opowieśćSzacują opowieść
Zaduża!
Klient KlientInformatycy
Klient sam wybiera, w jakiej kolejności funkcje będą implementowane. Robi topodczas gry planistycznej. Na początku, podczas rozmów dot. wymagańsystemu spisuje on opowieści użytkownika. Informatycy szacują rozmiaropowieści, podając liczbę osobo-dni potrzebnych do jej zrealizowania. Jeżeliokazuje się, że opowieść jest za duża (np. wykracza poza jeden przyrost),wówczas dzieli się ją na 2 mniejsze. Czasem dana opowieść jest też zbytmała (np. jej realizacja zajęłaby kilkanaście minut) - wtedy łączy się ją z innąopowieścią.
37
Inżynieria oprogramowania
Programowanie Ekstremalne (37)
Gra planistyczna
Pisze opowieść Wybiera zakresSzacują opowieść
Więcej
kolorów 9 h
Klient KlientInformatycy
Więcej
kolorów
Więcej
kolorów
Więcej
opcji9 h6 h
W momencie kiedy mamy już spisane wstępne opowieści i oszacowane przezinformatyków, klient wybiera zakres kolejnych przyrostów. On zna kosztkażdej opowieści i może zadecydować czy będzie ona realizowana czy teżnie, oraz kiedy będzie realizowana, czyli do którego dwutygodniowegoprzyrostu należy ją przypisać.
38
Inżynieria oprogramowania
Programowanie Ekstremalne (38)
CMM & Zarządzanie zmianą
Żądaniezmiany
Err
Użytkownik S.C. Manager
Żądaniezmiany
Programista
Raportzmiany
KierownictwoDecyzja
Poleceniezmiany
Menadżer OK
Kolejna praktyka, która różni się znacznie w stosunku do metodyknastawionych na dyscyplinę to podejście do zmian.Przykładowo, CMM proponuje następujący proces zarządzania zmianą.Najpierw użytkownik zapisuje żądanie zmiany, następnie kierownikzarządzania konfiguracją wysyła je do programisty, który analizuje zmianę iprzygotowuje odpowiedni raport. Na tej podstawie kierownictwo wydajedecyzję, czy zmiana jest dopuszczalna, czy też nie.Jak widać, proces ten jest skomplikowany, więc przetwarzanie zmian w tymmodelu jest bardzo kosztowne i czasochłonne.
39
Inżynieria oprogramowania
Programowanie Ekstremalne (39)
Zarządzanie zmianą w XP
Klient
Zmieńmywymagania
Programiści
OK OK OK OK
XP proponuje zupełnie inne podejście bazujące na dobrej współpracy zklientem.Po prostu zakłada, że klient w dowolnym momencie może zmienić zdanie izaproponować zmianę wymagań.Nie mieliśmy na początku dokładnego kontraktu, który określałby zakresdziałań oraz koszt projektu. W XP klient płaci na bieżąco za wykonaną pracę izdaje sobie sprawę z tego, że zmiana elementów już zaimplementowanychbędzie go kosztowała dodatkowo. Dzięki temu informatycy nie muszą sięmartwić, gdyż zawsze dostaną wynagrodzenie za swoją pracę.
40
Inżynieria oprogramowania
Programowanie Ekstremalne (40)
Zarządzanie zmianą w XP
Klient
Mamy problem.Zmieńmy wymagania
Programiści
OK
Działa to również w drugą stronę - jeżeli programiści dostrzegą pewienproblem i zaproponują rozwiązanie, które zmienia wymagania - klient ma donich zaufanie i również zgadza się na przedstawione rozwiązanie.
41
Inżynieria oprogramowania
Programowanie Ekstremalne (41)
Testy akceptacyjne
Klient Tester
FailureSuccess
Kolejna ważna praktyka w programowaniu ekstremalnym, to testowanieakceptacyjne. Testy akceptacyjne, to testy, które pochodzą od klienta. Klient wten sposób dokładnie określa, jak system musi się zachować w określonychwarunkach, aby zaspokoić jego potrzeby.Najlepiej gdy testy te mogą być wykonywane automatycznie, więc gdy sązapisane w języku skryptowym. Niestety - klient rzadko kiedy posiadaumiejętności programistyczne. Z pomocą przychodzi tester - czyli osoba,której zadaniem jest zapisanie testów klienta w formie skryptów testowych.W momencie kiedy mamy już takie skrypty, zyskujemy 2 rzeczy:-po pierwsze, klient jest pewien, że system spełnia jego wymagania-uruchamiając testy na bieżąco jesteśmy w stanie powiedzieć, jak wyglądapostęp projektu, czyli ile % funkcjonalności zostało już zaimplementowane.Obrazowo pokazuje to wykres na slajdzie - poszczególne słupki oznaczająposzczególne przyrosty (i1,1 = wydanie 1, przyrost 1, i1,2 = wydanie 1,przyrost 2, itp), kolor fioletowy - liczbę testów, które zostały pomyślniewykonane, natomiast czerwony - liczbę testów wykonanych błędnie.Obserwując zmianę takiego wykresu w czasie, widzimy, że kolor czerwonypowoli przechodzi w fioletowy, czyli pewne partie systemu zostałyzaimplementowane. Słupki cały czas rosną w czasie, gdyż przy każdymprzyroście mamy coraz więcej funkcjonalności, a co za tym idzie - corazwięcej przypadków testowych.
42
Inżynieria oprogramowania
Programowanie Ekstremalne (42)
Plan wykładu
• Wprowadzenie• Manifest zwinności• Wartości XP• Główne reguły i praktyki
XP:– Struktura zespołu– Relacje z klientem– Zapewnienie jakości– Programowanie parami
• Czynniki ryzyka
Następne slajdy pokazują, w jaki sposób XP radzi sobie z jakością tworzonegosystemu…
43
Inżynieria oprogramowania
Programowanie Ekstremalne (43)
Zapewnianie jakości
• Dbaj o prostotę• Unikaj optymalizacji• Dla każdej jednostki kodu
opracuj NAJPIERW zestawtestów, potem pisz kod
• Automatyczne wykonanietestów
• Refaktoryzacja
Jakość ta jest również zapewniana w odmienny sposób niż w przypadkumetodyk tradycyjnych:-po pierwsze - XP stawia na prostotę rozwiązań (optymalizować kod należytylko wtedy, gdy jest to konieczne)-po drugie - przed rozpoczęciem kodowania należy przygotować przypadkitestowe (ang. test-first-coding)-tak przygotowane testy są następnie jak najczęściej wykonywaneautomatycznie - dzięki czemu na bieżąco wychwytywane są błędy-do poprawy czytelności kodu stosuje się refaktoryzację
44
Inżynieria oprogramowania
Programowanie Ekstremalne (44)
Refaktoryzacja
Nowawersja
Starawersja
Lepszawersja
RefaktoryzacjaMała
zmiana
Starawersja
Nowawersja
Duża zmiana
Ta samafunkcjonalność
Więcej informacji o refaktoryzacji otrzymacie Państwo podczas kolejnegowykładu. Po krótce jednak - refaktoryzacja to sposób na systematycznąpoprawę jakości kodu i ewolucję architektury produktu.Załóżmy, że mamy do przeprowadzenia dużą zmianę w oprogramowaniu.Zamiast wykonywać ją od razu na starej wersji systemu, robi się to stopniowo:-najpierw tworzymy lepszą wersję systemu o tej samej funkcjonalności(czyścimy kod za pomocą przekształceń refaktoryzacyjnych), dzięki czemu wkolejnym kroku możemy osiągnąć nową wersję, wprowadzając już tylko małązmianę.Takie podejście pozwala na bezpieczne wprowadzanie zmianarchitektonicznych - w przypadku kiedy dotychczasowa architektura nie pasujedo nowych wymagań.
45
Inżynieria oprogramowania
Programowanie Ekstremalne (45)
Zapewnianie jakości
• Kod musi przejść wszystkietesty jednostkowe zanimprzekażesz go do eksploatacji
• Dla każdego wykrytego błęduutwórz zestaw testów
• Często integruj kod• Często wykonuj testy
akceptacyjne i publikuj ichwyniki
Kolejnych kilka zasad związanych z zapewnieniem jakości:-Zanim udostępni się zmiany dla innych programistów, należy dokładnieprzetestować go za pomocą testów jednostkowych-Jeżeli wykryjemy jakiś błąd na przetestowanym kodzie, oznacza to, że sitozłożone z testów jednostkowych w pewnym miejscu jest „nieszczelne”. Wtakiej sytuacji należy je „uszczelnić” dodając nowe przypadki testowezapobiegające przedostaniu się tego błędu w przyszłości-Należy również jak najczęściej uruchamiać testy integracyjne i akceptacyjne
46
Inżynieria oprogramowania
Programowanie Ekstremalne (46)
Plan wykładu
• Wprowadzenie• Manifest zwinności• Wartości XP• Główne reguły i praktyki
XP:– Struktura zespołu– Relacje z klientem– Zapewnienie jakości– Programowanie parami
• Czynniki ryzyka
Ostatnia praktyka, jaką przedstawimy na tym wykładzie to programowanieparami. Wiele osób ze środowiska związanego z informatyką bardzokrytycznie spogląda na takie pomysły, lecz osoby, które próbująwykorzystywać zwinne metodyki mówią, że to działa… O co zatem chodzi wprogramowaniu parami?
47
Inżynieria oprogramowania
Programowanie Ekstremalne (47)
Programowanie parami
if (x=y) z=0;
Autor Recenzent
Powinno byćx==y!
W tym podejściu, przy jednym komputerze siedzą 2 osoby jednocześnie: autori recenzent. Autor pisze kod, natomiast recenzent na bieżąco go przegląda iwychwytuje defekty.Autor jest bardzo skupiony na tworzeniu kodu, a recenzent ma więcej czasuna myślenie. Może się okazać zatem, że znajdzie lepszy sposób narozwiązanie problemu, lub np. dostrzeże problemy związane z testowaniemobecnego kodu, lub po prostu wychwyci błąd w programie.
48
Inżynieria oprogramowania
Programowanie Ekstremalne (48)
Programowanie parami
• Cały produkt jestkodowany w parach
• Standard kodowania• Tylko jedna para
integruje kod w danejchwili
• Pary się zmieniają
XP zaleca, żeby każdy fragment kodu powstał poprzez programowanieparami.Aby można było wygodnie pracować w parach, potrzebny jest wspólnystandard kodowania dla całego zespołu.XP zakłada również, że będą następować częste zmiany w parach, tak abykażda osoba pracowała nad każdym fragmentem systemu. Ma to dodatkowązaletę w postaci przepływania wiedzy pomiędzy poszczególnymiprogramistami. Dodatkowo w momencie kiedy jeden programista odejdzie zzespołu, dla każdego fragmentu kodu znajdziemy inną osobę, która będzieznała ten fragment.
49
Inżynieria oprogramowania
Programowanie Ekstremalne (49)
Programowanie parami
• Kod jest własnościącałego zespołu
• System zarządzaniawersjami!
• Otwarta przestrzeńpracy dla zespołu
W XP nie ma osoby odpowiedzialnej za każdą część kodu - kod jestwłasnością całego zespołu.Nie da się wydajnie pracować parami, jeżeli nie ma w firmie systemuzarządzania wersjami, np. CVS.Wymagana jest również otwarta przestrzeń pracy dla zespołu - abyposzczególne osoby mogły się łatwo komunikować.
50
Inżynieria oprogramowania
Programowanie Ekstremalne (50)
Plan wykładu
• Wprowadzenie• Manifest zwinności• Wartości XP• Główne reguły i praktyki
XP:– Struktura zespołu– Relacje z klientem– Zapewnienie jakości– Programowanie parami
• Czynniki ryzyka
Czy XP ma jakieś wady? Lub jakieś czynniki ryzyka, które znacznie utrudniająjego zastosowanie w praktyce?
51
Inżynieria oprogramowania
Programowanie Ekstremalne (51)
Czynniki ryzyka
• Klient pracuje cały czas zzespołem
• Brak dokumentacji• Brak fazy projektowania• Krótka perspektywa
planowania
XP nie jest rozwiązaniem uniwersalnym: ma również wiele czynników ryzyka,które mogą się okazać wadami:-Założenie, że klient przez cały czas pracuje z zespołem może się okazaćnierealne - rzadko który klient może sobie pozwolić na oddelegowaniejednego pracownika na kilka miesięcy (gdyż tyle może trwać projekt)-Brak dokumentacji z jednej strony powoduje przyspieszenie projektu, leczczasem może się okazać, że po pewnym czasie trzeba wrócić do prac nadsystemem (np. dodać nową funkcjonalność). Wtedy, bez odpowiedniejdokumentacji, trudno przypomnieć sobie za co poszczególne fragmenty kodubyły odpowiedzialne.-Niektórzy zarzucają również brak fazy projektowania - twierdzą, żerozwiązania powstają za bardzo ad hoc-Krótka perspektywa planowania (planuje się tylko kolejne wydanie) niepozwala przewidzieć, kiedy system będzie ukończonyTe wady przyczyniają się do tego, że niektórym ludziom trudno skłonić się dowypróbowania zwinnych podejść do wytwarzania oprogramowania.
52
Inżynieria oprogramowania
Programowanie Ekstremalne (52)
Podsumowanie
• Manifest zwinności:– Zorientowanie na ludzi i
komunikację– Dopuszczenie zmian– Jakość oprogramowania
• Gra planistyczna• Programowanie parami• Wady XP
Wreszcie
Podsumujmy wykład:-Manifest zwinności to zbiór zasad wspólnych dla zwinnych metodykwytwarzania oprogramowania. Są one zorientowane na ludzi i komunikacjęmiędzy nimi, dopuszczają dowolne zmiany w wymaganiach, oraz stawiają najakość oprogramowania, a nie obszerną dokumentację-XP jest jedną ze zwinnych metodyk wytwarzania oprogramowania -ważniejsze elementy tej metodyki to: gra planistyczna, programowanie parami,testowanie jednostkowe, ścisła współpraca z klientem-XP nie jest złotym rozwiązaniem - ma również pewne wady, np. założenie, żeklient pracuje z zespołem, brak dokumentacji, krótka perspektywa planowania