Projektowanie oprogramowania
Termin zajęć: poniedziałek, 18.00-19.45
a podstawie materiału ze strony http://gromit.iiar.pwr.wroc.pl/p_inf/
Przebieg realizacji projektu (tabela 1)
Nr tygo dnia
Sprint Spotkanie Uwagi dotyczące realizacji Zespóły składające się z trzech studentów- przystapienie do kolejnego Daily Scrum po zaliczeniu poprzedzajacego
Liczba punktów (do oceny)
Zadania kierownika zespołów (Scrum Master)
1 Sprint
planning meeting (90 min)
1. Zajęcia organizacyjne ( podział na grupy, przydzielenie ról projektowych, uzyskanie dostępu do wymaganych narzędzi) 2. Sprint Backlog - Opracowanie modelu
biznesowego systemu zapisów studentów na zajęcia w oparciu o znane algorytmy wpierające proces wyboru najlepszego rozwiązania – udział wszystkich grup projektowych
3. Sprint Backlog - zdefiniowanie wymagań funkcjonalnych i niefunkcjonalnych– udział wszystkich grup projektowych
Sporządzenie dokumentacji p.2 i 3 (edytor tekstu itp)
2 Daily Scrum
of Scrums (20 min)
Definicja PU (przypadku użycia): opis słowny wg standardowego formularza – scenariusz można wykonać za pomocą diagramu aktywności
3-5 Integrowanie PU opracowanych przez prupy projektowe w postaci diagramu PU
3 Daily Scrum
of Scrums (20 min)
Projekt PU:
– diagram klas, – diagram sekwencji, – diagramy stanów – raport
– wygenerowanie
dokumentacji, zawierającej wymienione wyżej elemetny identyfikowane na podstawie PU, wykorzystanie wzorców projektowych (zalecane)
4-10 Integrowanie projektów PU opracowanych przez prupy projektowe w postaci jednego diagramu klas, eliminacja redundancji w projekcie,
Analiza raportów inspektorów, ocena wpływu
zidnetyfikowanych problemów na przebieg projektu
4 1
Daily Scrum of Scrums (20 min)
Implementacja1 PU (warstwa biznesowa):
– kod warstwy biznesowej,
– koncepcja i kod testów jednostkowych i integracyjnych wykonanych za pomocą JUnit – usuwanie błędów
– pomiar metryk oprogramowania za pomocą narzędzia CKJM
– ewentualna refaktoryzacja kodu w celu poprawy nieprawidłowych wartości metryk (w szczególności RFC, LCOM3)
– powtórzenie testów jednostkowych w przypadku refakatoryzacji kodu
3-5 Integrowanie kodu źródłowego: tworzenie wieloużywalnych pakietów (bibliotek)
5 Daily Scrum of Scrums (20 min)
Implementacja2 PU (warstwa prezentacji i klienta):
– opracowanie wspólnego szablonu tworzonych formularzy,
– ujednolicenie funkcjonalności formularzy w zakresie ich obsługi i walidacji danych – kod warstwy prezentacji i klienta
(technologia JSF),
– koncepcja i kod testów akceptacyjnych (Selenium lub recznych),
4-10 Kontrola przyjętego standardu formularzy,
6 Sprint
review meeting &
Sprint planning meeting (90 min)
Wszystkie grupy
Rozbudowa diagramu PU (Sprint Backlog):
– planowanie nowych PU,
– uwzględnienie wniosków z raportów opracowanych przez Scrum Master z wykonanych PU
Definicja PU (przypadku użycia): opis słowny wg standardowego formularza – scenariusz można wykonać za pomocą diagramu aktywności
3-5
7 Daily Scrum
of Scrums (20 min)
Projekt PU:
– diagram klas, – diagram sekwencji, – diagramy stanów – raport
– wygenerowanie
dokumentacji, zawierającej wymienione wyżej elemetny identyfikowane na podstawie PU, wykorzystanie wzorców projektowych (zalecane)
4-10
8 Daily Scrum
of Scrums (20 min)
Implementacja1 PU (warstwa biznesowa):
kod warstwy biznesowej,
– koncepcja i kod testów jednostkowych i integracyjnych wykonanych za pomocą JUnit – usuwanie błędów
– pomiar metryk oprogramowania za pomocą narzędzia CKJM
– ewentualna refaktoryzacja kodu w celu poprawy nieprawidłowych wartości metryk (w szczególności RFC, LCOM3)
– powtórzenie testów jednostkowych w przypadku refakatoryzacji
3-5
9 2
Daily Scrum of Scrums (20 min)
Implementacja2 PU (warstwa prezentacji i klienta):
– opracowanie wspólnego szablonu tworzonych formularzy,
– ujednolicenie funkcjonalności formularzy w zakresie ich obsługi i walidacji danych – kod warstwy prezentacji i klienta
(technologia JSF),
– koncepcja i kod testów akceptacyjnych (Selenium lub ręczne),
4-10
Podobnie jak w sprincie 1
10 3 Sprint
review meeting &
Sprint planning meeting (90 min)
Podobnie jak w sprincie 2 Podobnie jak w sprincie1
11 Daily Scrum of Scrums (20 min)
12 Daily Scrum
of Scrums (20 min)
13 Daily Scrum
of Scrums (20 min)
14 Sprint
review meeting &
Sprint retrospective meeting (1.5h)
Podsumowanie
Stosowany proces wytwarzania oprogramowania - Scrum
Stosowany będzie proces wytwarzania oprogramowania wzorowany na metodyce Scrum. Z metodyki tej zaczerpnięte zostały następujące elementy:
• Daily Scrum of Scrums - krótkie spotkanie dotyczące aktualnego statusu projektu, w trakcie którego następuje synchornizacja prac wykonywanych przez poszczególne zespoły. W spotkaniu bierze udział prowadzący, Scrum Master i dokładnie jeden przedstawiciel każdej grupy projektowej, pozostali członkowie grup projektowych mogą brać udział w spotkaniu tylko jako obserwatorzy. W trakcie spotkania przedstawiciel zespołu powinien udzielić odpowiedzi na następujące trzy pytania:
o Co zespół zrobił od poprzedniego Daily Scrum of Scrums?
o Co zespół planuje zrobić do następnego Daily Scrum of Scrums?
o Co przeszkadza zespołowi w realizowaniu zaplanowanych zadań?
• Product Owner - rola pełniona przez prowadzącego. Product Owner decyduje o priorytetach poszczególnych zadań, tym samym do niego należy rozstrzygający głos odnośnie zestawu zagadnień wybieranych do Sprint Backlog w trakcie Sprint planning meeting. Product Owner decyduje również o tym, czy dane zagadnienie zostało zrealizowane w wystarczającym stopniu i z wystarczającą jakości, aby mogło zostać uznane za zaliczone.
• Scrum Master - rola pełniona przez 3 studentów – każdy przez okres jednego sprintu. Powinni oni w miarę możliwości rozwiązywać problemy zagrażające sukcesowi sprintu. Administrują systemem Redmine. Pewne zdadania zostały wyspecyfikowane w tabeli 1.
• Sprint - ograniczona czasowo do 4 tygodni iteracja (patrz Tab. Przebieg realizacji projektu) w trakcie której zespóły pracują nad przekształceniem przydzielonych przypadków użycia w nadającą się do przekazania klientowi funkcjonalność.
• Sprint Backlog - lista błędów, zadań i przypadków użycia z przypisanymi punktami
odzwierciedlającymi ich trudność, które mają zostać zrealizowane w trakcie sprintu. Powstaje w systemie Redmine w trakcie Sprint planning meeting.
• Sprint planning meeting - 70 minutowe spotkanie rozpoczynające każdy sprint. W trakcie spotkania definiuje się Sprint Backlog. W spotkaniu biorą udział Product Owner, Scrum Master, administrator i przynajmniej jeden przedstawiciel każdej grupy projektowej.
• Sprint retrospective meeting - spotkanie podsumowujące projekt. W trakcie spotkania powinna odbyć się dyskusja dotycząca możliwości usprawnienia stosowanego procesu wytwarzania oprogramowania.
• Sprint review meeting - 20 minutowe spotkanie podsumowujące sprint. W trakcie spotkania prezentowane oraz omawiane są funkcjonalności zrealizowane w trakcie kończącego się sprintu.
Przepływ pracy
Przepływ pracy w projekcie wynika bezpośrednio z przedstawionego harmonogramu w tabeli 1: Przebieg realizacji projektu.
Cały projekt jest podzielony na 3 sprinty. Każdy sprint składa się z takich samych elementów. Zaczyna się spotkaniem Sprint planning meeting, w trakcie którego wybierana są zagadnienia do zrealizowania w
trakcie sprintu, a kończy się spotkaniem Sprint review meeting, w trakcie którego prezentowane są uzyskane wyniki. W trakcie sprintu, raz w tygodniu odbywają się spotkania Daily Scrum of Scrums, na których raportowany jest aktualny status. Najważniejszym zadaniem w trakcie sprintu jest rozwiązywanie zaplanowanych na sprint zagadnień, czyli błędów, zadań i przypadków użycia.
Każdy wynik prezentowany podczas Daily Scrum of Scrums jest oceniane za pomocą przydzielanych punktów, podanych w tabeli 1, zarówno zespołowi, jak i kierownikowi (Scrum Master)
Realizacja przypadku użycia może być stosunkowo zawiła i obejmuje zazwyczaj wiele różnych aktywności.
W związku z tym zaleca się aby kierownik zespołu wprowadził w systemie Redmine zadania składające się na realizację danego przypadkiem użycia i poprzydzielał je członkom zespołu.
Role projektowe
Jeden projekt będzie realizowany przez wszystkich studentów zapisanych na dany termin, czyli zespół projektowy będzie się składał z około 16 osób.
• Podział na 3-osobowe podgrupy
o Programista / modelarz – 2-3 osoby w podgrupie, odpowiedzialne za specyfikowanie wymagań, projektowanie aplikacji, programowanie i testowanie na poziomie testów jednostkowych o Kierownik - 1 osoba w podgrupie, odpowiedzialna za koordynowanie prac wewnątrz podgrupy
(np. definiowanie niepunktowanych podzadadań w Redmine), osoba kontaktowa w komunikacji między podgrupami, równocześnie pełni rolę programisty / modelarza
o Inspektor / tester – 1-2 osoby w podgrupie, odpowiedzialne za przeglądanie i weryfikowanie wymagań oraz modelu (przygotowują raport inspektora) oraz za testy akceptacyjne. Listy kontrolne dla inspektora:
Lista kontrolna diagramów hierarchii okien
http://gromit.iiar.pwr.wroc.pl/p_inf/Lista_kontrolna_diagramu_hierarchii_okien.htm
Lista kontrolna opisów PU
http://gromit.iiar.pwr.wroc.pl/p_inf/pliki/lista_kontrolna_opis_PU.pdf
Lista kontrolna diagramów klas
http://gromit.iiar.pwr.wroc.pl/p_inf/pliki/lista_kontrolna_diagram_klas.pdf
Lista kontrolna diagramów sekwencji
http://gromit.iiar.pwr.wroc.pl/p_inf/pliki/lista_kontrolna_diagram_sekwencji.pdf
Lista kontrolna diagramów stanów
http://gromit.iiar.pwr.wroc.pl/p_inf/pliki/lista_kontrolna_stany.PDF
Szablon raportu inspektora
http://gromit.iiar.pwr.wroc.pl/p_inf/RaportInspektora.html
• Administrator – 1 osoba w całym projekcie, odpowiedzialne za przygotowywanie i konserwowanie środowiska programistycznego ze szczególnym uwzględnieniem systemu ciągłej integracji oraz za raportowanie i przypisywanie błędów znalezionych przy pomocy systemu ciągłej integracji. Funkcja cykliczna, kadencja trwa 1 sprint, każdy kolejny administrator powinien pochodzić z innej 3-
osobowej podgrupy.
• Scrum Master. Funkcja cykliczna, kadencja trwa 4 tygodnie, jedna osoba w projekcie. Każdy kolejny Scrum Master powinien pochodzić z innej 3-osobowej podgrupy. Scrum Master oprócz swojej funkcji powinien wykonywać zadania związane z implementacją realizowanego przez jego grupę przypadku użycia. Administruje systemem Redmine, w szczegolnosci ma uprawnienia do zmieniania osoby przypisanej do błędu.
Jak wybrać kierownika oraz inspektora
http://gromit.iiar.pwr.wroc.pl/p_inf/pliki/KIEROWANIE.PDF Przygotowywane artefakty
• Faza modelowania
o scenariusz PU, najlepiej w postaci diagramu aktywności, czas życia dokumentu - czas trwania całego projekt
o specyfikacja testów akceptacyjne do PU, czas życia dokumentu - czas trwania całego projekt albo do momentu zautomatyzowania w postaci wykonywalnej w systemie ciągłej integracji o diagram sekwencji do PU
o diagram klas do PU
o diagram stanów (jeżeli jest potrzebny) do PU
o raport inspektora (można generowac z Redmine albo przygotowywać ręcznie na podstawie wspomnianego powyżej szablonu)
• Faza implementacji
o kod (działająca aplikacja) – obowiązkowa separacja kodu warstwy biznesowej od warstwy prezentacji
o zautomatyzowane testy jednostkowe (JUnit)
o uruchomione manualnie lub zautomatyzowane w wybranym narzędziu testy akceptacyjne
• Dokumenty wytwarzane poza fazami, czas życia dokumentu - czas trwania całego projekt o diagram PU
o diagramy ilustrujące architekturę całego systemu, np.: diagram klas domenowych, diagram ilustrujący podział systemu na komponenty
Czas życia dokumentu wynosi 1 sprint (kodu i zautomatyzowanych testów nie zaliczamy do dokumentów), chyba że napisano w opisie dokumentu inaczej. Dokumenty o czasie życia wynoszącym 1 sprint nie muszą być aktualizowane po zakończeniu sprintu, w którym żyły. Pozostałe dokumenty muszą być aktualizowane aż do końca projektu. Odpowiedzialna za aktualizację dokumentu jest grupa, która wprowadziła zmianę w efekcie której, dokument musi zostać zaktualizowany.
Zalecane narzędzia
• UML 2.1 - Visual Paradigm 8.1 Community Edition (każdy diagram powinien powstawać w osobnym pliku)
• Netbeans 7.0
• Maven 2.2.1
• Hudson
o Na potrzeby systemu ciaglej integracji został udostepniony serwer:
snow.iiar.pwr.wroc.pl:8080/hudson (156.17.40.149)
• Java 1.6, JSF, Java EE 6.0
• SVN :http://gromit.iiar.pwr.wroc.pl/p_inf/SVN.html
• Redmine (http://snow.iiar.pwr.wroc.pl:4000):http://gromit.iiar.pwr.wroc.pl/p_inf/redmine.html
• JUnit 4: http://gromit.iiar.pwr.wroc.pl/p_inf/JUnit.html
• FitNesse, Selenium lub inne narzędzie do testów funkcjonalnych:
http://gromit.iiar.pwr.wroc.pl/p_inf/FitNesse.html Warunki zaliczania i metoda oceniania
Ocena końcowa będzie zależeć od liczby zrealizowanych i zaliczonych zagadnień (zagadnienie może być przypadkiem użycia, zadaniem albo błędem), które wcześniej zostały zgłoszone w Redmine. Liczba punktów zależy głównie od liczby wykonanych zagadnień i ich znaczenia w projekcie. Waga wykonanych zgadanień będzie omawiana podczas poszczególnych spotkań w ramach każdego sprintu.
Warunkiem uzyskania danej oceny jest zdobycie odpowiedniej liczby punktów, wg tabeli 2:
Tabela 2
Ocena Punkty
3,0 42-49
3,5 50-59
4,0 60-69
4,5 70-79
5,0 80-90
Temat projektu
Registration for classes at the university - Wykonanie systemu zapisów studentów na zajęcia w oparciu o znane algorytmy wpierające proces wyboru najlepszego rozwiązania – wykonanie warstwy integracji z bazą danych jest opcjonalne.
Literatura: http://gromit.iiar.pwr.wroc.pl/p_inf/literatura.html