Title: SWOBODNE METODYKI PROJEKTOWANIA SI
1SWOBODNE METODYKI PROJEKTOWANIA SI
Politechnika warszawska 2008
- agile software development methods-
charakterystyka, przeglad, zasadnosc uzycia
Maciej Socha Prowadzacy dr G. Protaziuk
2PLAN PREZENTACJI
- Wprowadzenie
- Cykl zycia systemu zgodny z IOP
- Metody tworzenia SI zgodne z IOP
- Ryzyko tradycyjnych metod
- Specyfika swobodnych metodologii
- Manifest swobodnych metodyk
- Przeglad metodologii
- FDD
- SCRUM
- XP
3Cykl zycia zgodny z IOP
- 1. Inicjalizacja systemu i wstepne
planowanieZnalezienie potencjalnego obszaru
zastosowania systemu informatycznego, który
wspomoze lub zastapi dotychczasowe metody
przetwarzania informacji. - 2. Analiza wymagan i specyfikacja
wymaganIdentyfikacja problemów, które nowy
system informacyjny ma rozwiazac. Zarysowanie
wlasciwosci operacyjnych systemu, wydajnosci i
zasobów sprzetowych niezbednych do uzytkowania i
konserwowania systemu. - 3. Specyfikacja funkcjonalna i prototypowanie
Identyfikacja i formalizacja obiektów obliczen,
ich atrybutów i zaleznosci. Specyfikacja
transformacji, którym obiekty beda podlegac. - 4. Dekompozycja problemu Podzial systemu na
logiczne podsystemy na podstawie wymagan i
specyfikacji. Analiza logicznych podsystemów pod
katem uzycia juz istniejacych komponentów
informatycznych. Selekcja rozwiazan wykonac
samodzielnie, kupic, wykorzystac juz istniejace.
4Cykl zycia zgodny z IOP cd.
- 5. Projekt architekturalny i specyfikacja
konfiguracji Okreslenie zaleznosci pomiedzy
podsystemami, komponentami i modulami w sposób
uwzgledniajacy szczególy ich budowy i wymagania
wobec nich. - 6. Szczególowe projektowanie i specyfikacja
komponentów Opracowanie i kodyfikowanie metod
przetwarzania informacji w komponentach - 7. Implementacja komponentów i usuwanie bledów
Wytwarzanie kodu zródlowego komponentów na
podstawie uprzednich specyfikacji. Testowanie
podstawowych funkcji komponentów. - 8. Asemblacja systemu i testowanie Weryfikacja
komponentów pod katem kompletnosci i zgodnosci
ze specyfikacja. Asemblacja produktu z
komponentów, weryfikacja wydajnosci podsystemów
systemu jako calosci.
5Cykl zycia zgodny z IOP cd.
- 9. Przeglad dokumentacji i dostarczenie systemu
Opracowywanie i systematyzowanie dokumentacji
powstalej w trakcie prowadzenia projektu pod
katem raportów dla odbiorcy. - 10. Opracowanie procedur instalacyjnych i
instalacja Opracowanie dokumentacji
instalacyjnej opisujacej sposób instalacji
systemu. - 11. Szkolenie dla uzytkowników Zapoznanie
uzytkowników z systemem. Zapoznanie ich z
mozliwosciami i ograniczeniami systemu. - 12. Uzytkowanie i konserwacja oprogramowania
Uzytkowanie, usuwanie bledów dostrzezonych w
trakcie uzytkowania, rozbudowywanie systemu o
nowe wlasciwosci, poprawa wydajnosci systemu.
6Metody tworzenia SI zgodne z IOP
- Model kaskadowy
- Model przyrostowy
- Model spiralny
- Model komponentowy
- Model formalnego konstruowania
- Model prototypowania
7Ryzyko stosowania metod IOP
- Luka formalna w dziedzinie poznania
- Zagadnienia zaliczajace sie do luki poznawczej,
nie sa w trakcie analizy dostrzegane i nie
zostana wyczerpujaco opracowane, mozna wiec
okreslac je mianem ryzykownych punktów projektu. - Od ogólu do szczególu
- Na tym poziomie pojawiajace sie problemy umykaja
z powodu natloku szczególów w projekcie - Od szczególu do ogólu
- Problemy staja sie zbyt ogólne dla zespolów
zajmujacych sie zagadnieniami podstawowymi
8Idee metodyk
- Tradycyjne metody prowadzenia projektu maja w
zamysle sprzedac produkt gotowe oprogramowanie - Realizacja produktu dla klienta
- Sukces dobrze wynegocjowany kontrakt
- Bardzo sformalizowany cykl zycia produktu
- Nowe techniki zarzadzania projektem ukierunkowane
sa na usluge. - Realizacja produktu dla i przy pomocy klienta
- Czlowiek uzytkownik, jako czynnik sukcesu.
- Elastyczne traktowanie planu realizacji.
9Specyfika swobodnych metodyk
- Techniki zakladaja scisla wspólprace z
uzytkownikiem czy odbiorca. Wlasciwie postuluje
sie wlaczenie uzytkownika w proces projektowania
oprogramowania. - Sprzedawana jest usluga tworzenia oprogramowania
a nie gotowy produkt -oprogramowanie, tak wiec
uzytkownik jest tym, kto podejmuje decyzje co i w
jakiej kolejnosci bedzie w projekcie wykonywane. - Istotna wage przywiazuje sie do poprawnego
szacowania kosztów prac, tak by
inwestor/uzytkownik mógl swiadomie planowac swe
wydatki na rozwój oprogramowania.
10Specyfika swobodnych metodyk cd.
- Zobowiazuje sie wytwórce oprogramowania do tego,
ze kazdym swym dzialaniem powinien udowadniac
inwestorowi efektywne wykorzystanie czasu i
powierzonych mu srodków. - Sprzedajac usluge programowania rezygnuje sie z
zysków z ponownego uzycia kodu i modeli
analitycznych, bo prace odniesione sa do
niepowtarzalnego projektu. Przy takim zalozeniu
rozlegla dokumentacja projektowa staje sie
zbednym kosztem obciazajacym uzytkownika i unika
sie jej. - Uproszczenia dokumentacyjne wymuszaja specyficzny
sposób porozumiewania sie z uzytkownikiem. W
trakcie tworzenia oprogramowania czesto (na
biezaco) zadaje sie mu pytania i prosby o
potwierdzenie dotyczace niewielkiego zakresu
funkcjonalnosci. Stad wynikaja inkrementalny
sposób dostarczania oprogramowania oraz krótkie
iteracje implementacyjne.
11Specyfika swobodnych metodyk cd.
- Nie specyfikuje sie formalnych punktów
kontrolnych w projekcie - nie sa one potrzebne,
gdyz zakonczenie kazdej iteracji jest punktem
kontrolnym samym w sobie. Z drugiej strony
wprowadzenie sformalizowanych punktów kontrolnych
nie we wszystkich technikach jest mozliwe. - Sekwencyjna realizacja wymagan uzytkownika
powoduje czeste zmiany w architekturze systemu i
koniecznosc przebudowy kodu. W nowych metodykach
zadanie przebudowy kodu postrzega sie nie jako
wyjatek, lecz jako regule.
12Manifest swobodnych metodyk
- ludzie, ich kontakty, zdolnosc do rozwiazywania
problemów sa wazniejsze niz sztywne procedury i
narzedzia zarzadzania, - wynikiem projektu jest pracujace oprogramowanie a
nie dokumentacja, - z uzytkownikiem sie wspólpracuje a nie negocjuje
kontrakt, - wazniejsza jest umiejetnosc reagowania na
zmieniajace sie warunki otoczenia niz podazanie
za opracowanym na wstepie planem.
13METODOLOGIE ZWINNE
- FDDFUTURE DRIVEN DEVELOPMENT
14FDD - charakterystyka
- metodyka tworzenia oprogramowania, wspomagajaca
zarzadzanie fazami analiz, projektowania i
konstrukcji oprogramowania - jest projektowaniem zorientowanym na wlasciwosci
- prace rozpoczynaja sie od okreslenia ogólnego
modelu systemu. - okreslana jest domena projektu i iteracyjnie
dzielona na coraz to mniejsze znaczeniowo
obszary. - kazdy niepodzielny obszar znaczeniowy jest
opracowywany przez przypisana do niego grupe
projektantów, w wyniku czego powstaje model
szczególowy, bedacy skladnikiem calosciowego
modelu systemu. - zespól projektantów korzysta z opracowanych
wczesniej wymagan systemowych i przypadków
uzycia.
15FDD dobre praktyki IOP
- oparcie procesu o wymagania klienta
- architektura systemu
- krótkie iteracje
- indywidualna odpowiedzialnosc za kod
- inspekcje
16FDD pojecie cechy
- Zasadniczym elementem procesu FDD jest cecha
(feature) produktu. - Cecha jest maly fragment funkcjonalnosci
produktu. - Cecha w SI dostarcza klientowi interesujace go
wyniki. - Opisuje wymagania funkcjonalne wg
schematu ltactiongttheltresultgtltbyoftofromfor
gta(n)ltobjectgt - Grupuje sie w zbiory cech wg schematu ltactiongt
-ingltbuisness deliverablegtltbyoftofromforgta(n)lt
objectgt
17FDD role w zespole
- Menadzer projektu
- Eksperci dziedzinowi
- Glówny architekt
- Menadzer programistów
- Glówni programisci
- Wlasciciele klas
18FDD realizacja metody
- zalozeniem jest inkrementacyjne opracowywanie
poszczególnych funkcjonalnosci systemu - projekt w mysl FDD sklada sie z pieciu
sekwencyjnie nastepujacych etapów.
19FDD faza I
- stworzenia zespolu projektowego pod kierownictwem
Glównego Architekta, - przeprowadzenia przegladu dziedziny problemu,
- studiowanie dokumentów z wymaganiami i z
dziedziny problemu, - przygotowanie alternatywnych modeli w oddzielnych
malych grupach projektowych, - wypracowanie wspólnego modelu,
- Zatwierdzenie ogólnego modelu,
- Zdokumentowanie istotnych zalozen dotyczacych
projektu i alternatywnych rozwiazan.
20FDD faza II
- na podstawie specyfikacji wymagan systemowych
oraz opracowanego modelu/modeli opracowywanie sa
list funkcjonalnosci - Listy maja charakter hierarchiczny i zawieraja
funkcjonalnosci glówne - Rozdrabnianie funkcjonalnosci na coraz nizsze
poziomy - Przegladanie list przez uzytkowników i inwestorów
w celu kontroli poprawnosci i kompletnosci
21FDD faza III
- sformowania zespolu planujacego
- okreslenia kolejnosci implementacji
- przypisania zbioru cech glównym programistom
- przypisania klas do programistów
22FDD faza IV
- sformowania zespolu programistów pod kierunkiem
Glównego Programisty. - opcjonalnego przegladu dziedziny problemu i
studiowania dokumentów referencyjnych - stworzenia diagramów sekwencji
- uszczególowienia modelu obiektowego
- zapisania naglówków klas i metod
- inspekcji projektu
23FDD - faza V
- implementacja kodu klas
- przeprowadzenia inspekcji kodu
- testowania jednostkowego
- integracji nowego kodu z produktem
24METODOLOGIE ZWINNE
25SCRUM - charakterystyka
- Istota metody Scrum jest adaptacyjny,
samoorganizujacy sie proces wytwarzania
oprogramowania. - Zaklada ewolucyjny styl tworzenia oprogramowania.
- Koncentrujac sie na zadaniach zarzadzania
pozostawia wolny wybór w wyborze technik
prowadzenia prac programistycznych. - Ewolucyjny styl to generalnie iteracja, a
pojedynczy cykl to w istocie podprojekt kaskadowy
skladajacy sie z opracowania wymagan, analizy,
projektowania, kodowania i wdrozenia trwajacy nie
dluzej niz 30 dni.
26 ROLE Pig i Chicken
- Produkt Owner
- Scrum Master
- The Team
- Users
- Klient
- Managers
27Scrum Master
- Nie jest liderem,
- Nie planuje,
- Nie kontroluje,
- Nie przydziela
- Usuwa przeszkody stwarzajace problemy w pracy
zespolu - Zapewnia zgodnosc pracy nad projektem z celami
biznesowymi klienta - Zapewnia zdazanie do celu
- Reprezentuje zespól
28Product Owner
- Gwarant prac we wlasciwym kierunku
- Zajmuje sie
- Tworzeniem wymagan uzytownika (User stories)
- Nadawaniem priorytetów dla wymagan
- Budowaniem rejestru wymagan (Product Backlog)
29SCRUM realizacja metody
- rozpoczecie gry (pregame),
- faza produkcji (development phase),
- gra na zakonczenie (postgame).
30SCRUM - zarzadzanie
- Rozpoczecie prac zwiazane jest ze Spotkaniem
Planowania Cyklu (Sprint planning meeting), - Zakonczenie prac z nieformalnym Spotkaniem
Przegladowym (Scrum Review meeting). - Sa równiez Codzienne Spotkania Zespolu
projektantów i programistów (Daily Scrum meeting).
31SCRUM - kontrola
- Scrum przewiduje czeste dzialania zarzadcze
skupiajace sie na identyfikowaniu problemów i
przeszkód w pracach inzynieryjnych - Biezaca samokontrola calego zespolu, codzienne
spotkania, (Daily scrum meeting) 15 minut, - Co robilem wczoraj?
- Co bede robil dzisiaj?
- Co mi przeszkadza w pracy?
- W trakcie spotkania omawiane sa problemy oraz
planowane sa posuniecia z nich wynikajace.
32SCRUM planowanie cyklu
- Spotkanie poprzedzajace rozpoczecie cyklu
organizacja dzialan. - Zdejmowanie cech z rejestru zadan.
- Stworzenie rejestru zadan przebiegu.
- Obejmuje wszystkich czlonków zespolu (prosiaki i
kurczaki). - Chicken okreslaja cel przebiegu.
- Pig uscislaja rejestr zgodnie z okreslonym celem.
33SCRUM - dokumentacja
- Rejestr zadan (Product backlog)
- Historyjki klienta (User stories)
- Must be
- Should be
- Nice to have
- Rejestr zadan przebiegu (Sprint product backlog)
- Wykres spalania (Burn down) wykres
pracochlonnosci
34SCRUM tworzenie rejestru przebiegu
- rozbicie zyczen klienta, na elementarne czynnosci
techniczne, konieczne do realizacji analizowanego
celu - oszacowanie kazdej czynnosci technicznej na koszt
roboto-godziny potrzebnej do zrealizowania
funkcjonalnosci - przyporzadkowanie odpowiednich czynnosci do
realizacji osobom najbardziej kompetentnym do jej
wykonania, co ustala sam zespól, nie kierownik, - zsumowanie wszystkich roboto-godzin z wszystkich
wybranych czynnosci i sprawdzeniu czy laczna ich
liczba przekracza, czy nie zapelnia godzin
jednego pelnego cyklu, - dopelnienie lub ujecie wybranych czynnosci, aby
mozliwie jak najdokladniej zmiescic sie czasowo w
przebiegu jednego cyklu, czyli 30 dni.
35SCRUM - pregame
- obejmuje czynnosci planowania i opracowania
zarysu architektury systemu. - W trakcie tej fazy wszystkie znane wymagania sa
spisywane i opracowywana jest lista wymagan
(Product backlog). - Zródlem wymagan sa przede wszystkim uzytkownicy,
ale równiez dzial marketingu i sprzedazy, dzial
obslugi klienta oraz sam zespól
projektantów-programistów. - Wymaganiom zestawionym na liscie przypisywane sa
priorytety. - Na podstawie listy opracowywana jest architektura
systemu. - Finalnie, w ramach oddzielnego spotkania,
tworzony jest podzbiór listy wymagan. - Ustalany jest cel przebiegu.
36SCRUM faza produkcji
- (Product backlog). Lista ta jest otwarta, a
zadania do realizacji dopisywane sa do niej w
trakcie calego procesu tworzenia oprogramowania. - (sprint backlog list). Zawarte tam wymagania sa
realizowane w ramach aktualnej iteracji - Rozpatrywane sa zmiany w architekturze systemu
wynikle z wprowadzenia nowych wymagan. - Kontrola procesu wytwórczego estymacja wykresu
pracochlonnosci
37SCRUM - pracochlonnosc
- Proces estymacji pracochlonnosci polega na
gromadzeniu informacji statystycznych o
przebiegu projektu i wyznaczaniu kosztu prac na
ich podstawie. - Kazdego dnia aktualizowana jest pozostala do
realizacji liczba robotogodzin - Aproksymacja pokazuje przyblizony termin
zakonczenia przebiegu w odniesieniu do
osiagnietego tempa prac - Na jego podstawie aktualizuje sie rejestr
przebiegu.
38SCRUM - przebieg
39SCRUM postgame
- rozpoczyna sie wraz z ustaleniem pomiedzy
uzytkownikiem a projektantami, ze wymagania sa
zrealizowane (lista wymagan jest pusta). - System jest przygotowany do instalacji.
- W tej fazie wykonywana jest ostateczna integracja
modulów i testowanie, a takze przygotowuje sie
dokumentacje. - Spotkanie podsumowujace (Scrum Review Meeting)
- Omawiane sa na nim postepy prac oraz formulowane
sa wnioski, nowe wpisy do listy wymagan lub
postulowane sa generalne zmiany w architekturze
systemu.
40METODOLOGIE ZWINNE
41XP - charakterystyka
- Ewolucyjne podejscie do projektowania i
programowania - Praktyka bardzo krótkich cyklów wytwarzania
oprogramowania zmuszajaca do szybkich odpowiedzi
klienta - Ciagle zainteresowanie pracami klienta
- Ekstremalnie scisla wspólpraca z klientem
- nie ma uniwersalnej metody prowadzenia projektu
informatycznego. - praktyki XP powinny byc przystosowywane do
aktualnych potrzeb i specyfiki projektu.
42XP cykl zycia projektu
- eksploracji,
- planowania,
- iteracji wykonawczych,
- przygotowania do produkcji,
- utrzymania w ruchu,
- zakonczenia projektu.
43XP schemat cyklu zycia
44XP faza eksploracji
- zespól projektowy zapoznaje sie z tematem prac i
pozyskuje podstawowe informacje od uzytkownika. - Uzytkownik przedstawia sposób uzytkowania systemu
poprzez opowiadania (story), - na podstawie historyjek budowany jest zarys
architektury systemu - budowana jest lista funkcjonalnosci.
- W tym czasie projektanci testuja wybrana
technologie tworzac niezbedne prototypy oraz
zapoznaja sie z uzywanymi narzedziami
45XP faza planowania
- Opowiadania przedstawione przez uzytkownika sa
analizowane i nadawane sa im priorytety. - W porozumieniu z uzytkownikiem zestawiana jest
lista funkcjonalnosci, które maja byc opracowane. - Programisci oceniaja czas realizacji zadan i
ustalany jest harmonogram prac i termin
zakonczenia prac.
46XP faza iteracji wykonawczych
- Sklada sie z jedno lub kilkutygodniowych mini
cykli implementujacych kolejne wlasciwosci
systemu. - Wykonywane sa dzialania analityczne, projektowe,
kodowanie i testowanie. - Na koncu kazdego mini cyklu wykonywane sa testy
oprogramowania zaplanowane przez uzytkownika.
47XP faza przygotowania do produkcji
- W tej fazie system zawierajacy uzgodniona porcje
funkcjonalnosci jest przygotowywany do wdrozenia.
- Pojawiajace sie uwagi uzytkownika sa
implementowane lub przeznaczane do implementacji
w nastepnej wersji oprogramowania. - Wykonywane sa dodatkowe gruntowne testy.
48XP faza konserwacji
- Uzytkownik jest wyposazony w dzialajaca wersje
oprogramowania, która wymaga opieki i nadzoru. - Zespól projektowy w tym samym czasie wykonuje
kolejna wersje oprogramowania. - W trakcie pracy z oprogramowaniem odbiorca
formuluje kolejne postulaty dla zespolu
projektowego. - Wysilek poswiecany na utrzymanie w ruchu wersji
produkcyjnej wplywa na zmniejszenie predkosci
opracowywania nowej wersji oprogramowania.
49XP zakonczenie projektu
- Gdy uzytkownik nie jest juz zainteresowany
dodawaniem funkcjonalnosci do oprogramowania,
tempo wspólpracy z uzytkownikiem spada,
formulowane wnioski o rozszerzenie
funkcjonalnosci maja charakter drugorzedny i
czesto nie sa wdrazane z powodów ekonomicznych. - W tej fazie zespól projektowy podejmuje decyzje
o zakonczeniu projektu, blokuje zmiany w
architekturze systemu i kodzie zródlowym,
opracowuje dokumentacje systemu i projektu,
ostateczne wersje instrukcji uzytkownika oraz
instrukcje konserwacji.
50XP - praktyki
- Programowanie parami
- Ciagle testowanie
- Ciagle planowanie
- Ciagle integrowanie
- Refactoring kodu
- Utrzymywanie standardu kodowania
- Zbiorowa wlasnosc kodu
- Prostota rozwiazan
51XP etapy powstania wersji
52Dziekuje za uwage.