Inżynieria Oprogramowania
Transkrypt
Inżynieria Oprogramowania
Modele cyklu życia oprogramowania Wykład 2 Modele cyklu życia oprogramowania MIS-1-505-n Inżynieria oprogramowania Marzec 2014 Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie 2.1 Agenda 1 Przypomnienie: proces produkcji; czynności a modele 2 Podział metodologii tworzenia oprogramowania 3 Proces ujednolicony (Unified Process) 4 Metody zwinne (Agile) Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) 5 Inne metodologie Metody zwinne (Agile) Inne metodologie Podsumowanie 6 Podsumowanie 2.2 Czynności w czasie produkcji oprogramowania. Modele cyklu życia oprogramowania Inżynieria oprogramowania stara sie˛ zidentyfikować i opisać podstawowe fazy tworzenia i funkcjonowania oprogramowania, a także wskazać model optymalnego przebiegu tych faz. Co można robić w czasie tworzenia oprogramowania? Planowanie. Implementacja. Testowanie. Dokumentowanie. Wdrożenie. Utrzymanie (konserwacja). Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.3 Modele cyklu życia oprogramowania Edward V. Berard ”Walking on water and developing software from a specification are easy if both are frozen. ” (1993) Essays on object-oriented software engineering. Volume 1. Englewood Cliffs, N.J. : Prentice Hall Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.4 Ogólny schemat. Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.5 Dwa główne nurty. Modele cyklu życia oprogramowania Istnieje wiele całościowych metodologii tworzenia oprogramowania, z których dwie obecnie najważniejsze (i istniejace ˛ w wielu odmianach) to: Proces ujednolicony - Unified Process RUP Metody zwinne - agile methods Extream programming (XP) Obydwie grupy metodologii zakładaja˛ iteracyjne tworzenie oprogramowania, różniac ˛ sie˛ głównie stosunkiem do modelowania i planowania w trakcie procesu tworzenia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.6 Model iteracyjny Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.7 Model iteracyjny Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.7 Model iteracyjny Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.7 Model iteracyjny Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.7 Model iteracyjny Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.7 Model iteracyjny Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.7 Model przyrostowy Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.8 Model przyrostowy Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.8 Model przyrostowy Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.8 Model przyrostowy Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.8 Model przyrostowy Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.8 Model przyrostowy Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.8 Zasady RUP. 1 iteracyjne i przyrostowe tworzenie oprogramowania; sterowane ryzykiem i priorytetami, ułatwiajace ˛ integracje˛ całości kodu i dostosowanie do zmieniajacych ˛ sie˛ wymagań 2 zarzadzanie ˛ wymaganiami; we współpracy z klientem i w oparciu o przypadki użycia 3 stosowanie architektury opartej na komponentach graficzne modelowanie oprogramowania; różne perspektywy spojrzenia na system, użycie UML 4 5 kontrola i weryfikacja jakości oprogramowania przez cały czas procesu wytwarzania 6 zarzadzanie ˛ zmianami w oprogramowaniu Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.9 Fazy projektu RUP. 1 faza poczatkowa ˛ (inception) – wstepne ˛ określenie wymagań, ryzyka, kosztu, harmonogramu, a także architektury systemu 2 faza opracowania (elaboration) – ustalenie wymagań (wiekszości ˛ przypadków użycia), architektury systemu oraz planu całego procesu wytwarzania systemu 3 faza konstrukcji (construction) – tworzenie systemu (kolejnych komponentów), w trakcie nastepuje oddanie pierwszej (i być może dalszych) wersji użytkownikowi 4 faza przekazania (transition) – system jest przekazywany użytkownikowi, wdrażany, szkoleni sa˛ pracownicy obsługi systemu, nastepuje walidacja i końcowe sprawdzenie jakości Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.10 Dyscypliny - rodzaje wykonywanych zadań Modele cyklu życia oprogramowania modelowanie biznesowe wymagania analiza i projektowanie implementacja testowanie wdrożenie zarzadzanie ˛ konfiguracja˛ i zmianami zarzadzanie ˛ projektem (zarzadzanie ˛ ryzykiem, planowanie iteracji, monitorowanie postepów) ˛ organizacja środowiska (m.in. narz˛edzi) Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.11 Schemat RUP. Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.12 Agile programming Modele cyklu życia oprogramowania Metody te maja˛ pewne cechy wspólne, które wynikaja˛ z przyjetej ˛ ideologii tworzenia oprogramowania zapisanej w manifeście metod zwinnych (agile manifesto) Agile manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan Jednostki i interakcje ponad procesy i narz˛edzia Działajace ˛ oprogramowanie ponad wyczerpujac ˛ a˛ dokumentacje˛ Współpraca z klientem ponad negocjacje kontraktu Reagowanie na zmiany ponad realizowanie planu Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.13 Agile programming Modele cyklu życia oprogramowania Co jest charakterystyczne? Metody zwinne nadaja˛ sie˛ dla małych zespołów tworzacych ˛ małe i średniej wielkości oprogramowanie, najcz˛eściej dla biznesu (ważna szybkość dostarczania i dostosowanie do cz˛estych zmian). Extreme Programming (XP) należy do grupy metodologii wytwarzania oprogramowania nazywanych metodami zwinnymi (agile methods) Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.14 Programowanie ekstremalne - XP Modele cyklu życia oprogramowania Motywacja: klasyczne metodologie wytwarzania oprogramowania zbyt wolno reaguja˛ na zmiany rynku i wymagań klientów zbyt dużo planowania, analizy i tworzenia modeli oraz dokumentacji opóźnia wytworzenie i dostarczenie tego co naprawde˛ sie˛ liczy – kodu klasyczne podejścia powoduja, ˛ że zmiany (spowodowane np. wykryciem błedu) ˛ w późnych fazach tworzenia kodu sa˛ bardzo kosztowne w procesach opartych na drobiazgowej analizie i planowaniu zbyt mało ufa sie˛ i daje swobody, tym którzy tak naprawde˛ tworza˛ kod – programistom Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.15 Programowanie ekstremalne - XP Modele cyklu życia oprogramowania Podstawowe zasady: oprogramowanie jest rozwijane w krótkich cyklach i w ciagłej ˛ interakcji z klientem, po każdym cyklu może nastapić ˛ zmiana założeń co do dalszej pracy, co wiecej ˛ może nastapić ˛ rewizja już napisanego kodu (refactoring) każdy przyrost dostarcza konkretna˛ funkcjonalność określana˛ na podstawie scenariuszy (opowieści użytkownika , user stories) już pierwsze wydanie zawiera system o pewnej całościowej strukturze realizujacy ˛ istotne dla klienta funkcje kolejne wydania (releases) kodu nastepuj ˛ a˛ co kilka miesiecy ˛ (maximum), iteracje maja˛ po kilka tygodni, obowiazuje ˛ planowanie zadań kilka dni do przodu, przy założeniu, że kolejność działań jest określana przez priorytety ważności Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.16 Programowanie ekstremalne - XP Modele cyklu życia oprogramowania Podstawowe zasady: przed przystapieniem ˛ do kodowania opracowywane sa˛ szczegółowe testy majace ˛ za zadanie sprawdzenie wszelkich aspektów poprawności wprowadzanych zmian każda zmiana jest od razu integrowana z całościa˛ kodu oraz testowana – nowe oraz opracowane wcześniej testy (zautomatyzowane) sa˛ powtarzane codziennie (lub nawet kilka razy dziennie), żeby sprawdzić czy nie zostały wprowadzone błedy ˛ w ciagu ˛ całego procesu gromadzona jest informacja zwrotna służaca ˛ usprawnieniu procesu i ostatecznego kodu ważna jest specyficzna organizacja miejsca pracy kodowanie realizowane jest zgodnie z przyjetymi ˛ przez cały zespół regułami (coding standards) Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.17 Programowanie ekstremalne - XP Modele cyklu życia oprogramowania Podstawowe zasady: programowanie odbywa sie˛ parami (zgodnie ze szczegółowo ustalonymi zasadami), cz˛este sa˛ także dyskusje pomiedzy ˛ członkami całego zespołu tworzacego ˛ kod dokumentacja oprogramowania składa sie˛ z komentarzy w kodzie, opisu testów i niewiele wiecej ˛ Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.18 Programowanie ekstremalne - XP Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.19 Programowanie ekstremalne - XP Modele cyklu życia oprogramowania Troska o programistów: 40sto godzinny tydzień pracy - mamy za dużo pracy zamiast mamy za mało czasu odpowiednie środowisko pracy - otwarta przestrzeń z małymi prywatnymi pomieszczeniami na obrzeżach i stanowiskami w środku dla programowania parami wspólne posiadanie kodu nacisk na nieustanna˛ komunikacje˛ (zwiazane ˛ m.in. z programowaniem parami) stworzenie ideologii zespołu walczacego ˛ o zwyciestwo ˛ (i nagradzajacego ˛ sie˛ za wszystkie osiagni ˛ ecia) ˛ Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) dużo jedzenia i picia w zasiegu ˛ reki ˛ Metody zwinne (Agile) zasada work with human nature, not against it Inne metodologie Podsumowanie 2.20 Scrum. Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.21 Model spiralny - zarzadzanie ˛ ryzykiem. Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.22 V(ee)-model. Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.23 Dual V(ee)-model. Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.24 Cleanroom model. Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.25 Rapid Application Development. Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.26 Continuous Integration (Continuous Delivery) Modele cyklu życia oprogramowania Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.27 Istotne czynniki podczas wyboru modelu tworzenia oprogramowania Modele cyklu życia oprogramowania Tematyka Wielkość (obszerność) Czas trwania Złożoność Ryzyko (poziom i rodzaj) Zrozumienie wymagań użytkownika Zrozumienie obszaru zastosowań Zaangażowanie klienta Doświadczenie zespołu Wielkość zespołu Interakcje człowiek-komputer Dostepność ˛ narz˛edzi i technologii Wymagany poziom niezawodności Przypomnienie: proces produkcji; czynności a modele Podział metodologii tworzenia oprogramowania Proces ujednolicony (Unified Process) Metody zwinne (Agile) Inne metodologie Podsumowanie 2.28