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