Projektowanie oprogramowania Termin zajęć: poniedziałek, 18.00
Transkrypt
Projektowanie oprogramowania Termin zajęć: poniedziałek, 18.00
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 1 1 Sprint planning meeting (90 min) 2 Daily Scrum of Scrums (20 min) 3 Daily Scrum of Scrums (20 min) 4 Daily Scrum of Scrums (20 min) Uwagi dotyczące realizacji Zespóły składające się z trzech studentów- przystapienie do kolejnego Daily Scrum po zaliczeniu poprzedzajacego 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 Definicja PU (przypadku użycia): opis słowny wg standardowego formularza – scenariusz można wykonać za pomocą diagramu aktywności Liczba punktów (do oceny) Zadania kierownika zespołów (Scrum Master) 3-5 Integrowanie PU opracowanych przez prupy projektowe w postaci diagramu PU 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, 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 Sporządzenie dokumentacji p.2 i 3 (edytor tekstu itp) Analiza raportów inspektorów, ocena wpływu zidnetyfikowanych problemów na przebieg projektu Integrowanie kodu źródłowego: tworzenie wieloużywalnych pakietów (bibliotek) 5 6 2 7 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), Sprint review meeting & Sprint planning meeting (90 min) Daily Scrum of Scrums (20 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 8 Daily Scrum of Scrums (20 min) 9 Daily Scrum of Scrums (20 min) 10 3 Sprint review meeting & Sprint planning meeting (90 min) 4-10 Kontrola przyjętego standardu formularzy, Podobnie jak w sprincie 1 Definicja PU (przypadku użycia): opis słowny wg standardowego formularza – scenariusz można wykonać za pomocą diagramu aktywności 3-5 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) 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 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), Podobnie jak w sprincie 2 4-10 3-5 4-10 Podobnie jak w sprincie1 Daily Scrum of Scrums (20 min) Daily Scrum of Scrums (20 min) Daily Scrum of Scrums (20 min) Sprint review meeting & Sprint retrospective meeting (1.5h) 11 12 13 14 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 3osobowej 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 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 o • • 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