Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.1
Wykład 2
Modele cyklu ˙zycia oprogramowania
MIS-1-505-n In˙zynieria oprogramowania
Marzec 2014
Kazimierz Michalik
Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.2
Agenda
1
Przypomnienie: proces produkcji; czynno ´sci a modele
2
Podział metodologii tworzenia oprogramowania
3
Proces ujednolicony (Unified Process)
4
5
6
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.3
Czynno ´sci w czasie produkcji oprogramowania.
In˙zynieria oprogramowania stara si ˛e zidentyfikowa´c i opisa´c
podstawowe fazy tworzenia i funkcjonowania oprogramowania,
a tak˙ze wskaza´c model optymalnego przebiegu tych faz.
Co mo˙zna robi ´c w czasie tworzenia oprogramowania?
Planowanie.
Implementacja.
Testowanie.
Dokumentowanie.
Wdro˙zenie.
Utrzymanie (konserwacja).
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.4
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´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.5
Ogólny schemat.
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.6
Dwa główne nurty.
Istnieje wiele cało´sciowych metodologii tworzenia
oprogramowania, z których dwie obecnie najwa˙zniejsze (i
istniej ˛
ace w wielu odmianach) to:
Proces ujednolicony - Unified Process
RUP
Metody zwinne - agile methods
Extream programming (XP)
Obydwie grupy metodologii zakładaj ˛
a iteracyjne tworzenie
oprogramowania, ró˙zni ˛
ac si ˛e głównie stosunkiem do
modelowania i planowania w trakcie procesu tworzenia
oprogramowania
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.7
Model iteracyjny
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.7
Model iteracyjny
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.7
Model iteracyjny
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.7
Model iteracyjny
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.7
Model iteracyjny
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.7
Model iteracyjny
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.8
Model przyrostowy
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.8
Model przyrostowy
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.8
Model przyrostowy
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.8
Model przyrostowy
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.8
Model przyrostowy
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.8
Model przyrostowy
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.9
Zasady RUP.
1
iteracyjne i przyrostowe tworzenie oprogramowania;
sterowane ryzykiem i priorytetami, ułatwiaj ˛
ace integracj ˛e
cało´sci kodu i dostosowanie do zmieniaj ˛
acych si ˛e
wymaga ´n
2
zarz ˛
adzanie wymaganiami; we współpracy z klientem i w
oparciu o przypadki u˙zycia
3
stosowanie architektury opartej na komponentach
4
graficzne modelowanie oprogramowania; ró˙zne
perspektywy spojrzenia na system, u˙zycie UML
5
kontrola i weryfikacja jako´sci oprogramowania przez cały
czas procesu wytwarzania
6
zarz ˛
adzanie zmianami w oprogramowaniu
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.10
Fazy projektu RUP.
1
faza pocz ˛
atkowa (inception) – wst ˛epne okre´slenie
wymaga ´n, ryzyka, kosztu, harmonogramu, a tak˙ze
architektury systemu
2
faza opracowania (elaboration) – ustalenie wymaga ´n
(wi ˛ekszo´sci przypadków u˙zycia), 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´c mo˙ze dalszych) wersji u˙zytkownikowi
4
faza przekazania (transition) – system jest przekazywany
u˙zytkownikowi, wdra˙zany, szkoleni s ˛
a pracownicy obsługi
systemu, nastepuje walidacja i ko ´ncowe sprawdzenie
jako´sci
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.11
Dyscypliny - rodzaje wykonywanych zada ´
n
modelowanie biznesowe
wymagania
analiza i projektowanie
implementacja
testowanie
wdro˙zenie
zarz ˛
adzanie konfiguracj ˛
a i zmianami
zarz ˛
adzanie projektem (zarz ˛
adzanie ryzykiem, planowanie
iteracji, monitorowanie post ˛epów)
organizacja ´srodowiska (m.in. narz ˛edzi)
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.12
Schemat RUP.
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.13
Agile programming
Metody te maj ˛
a pewne cechy wspólne, które wynikaj ˛
a z
przyj ˛etej ideologii tworzenia oprogramowania zapisanej w
manife´scie 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łaj ˛
ace oprogramowanie ponad wyczerpuj ˛
ac ˛
a
dokumentacj ˛e
Współpraca z klientem ponad negocjacje kontraktu
Reagowanie na zmiany ponad realizowanie planu
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.14
Agile programming
Co jest charakterystyczne?
Metody zwinne nadaj ˛
a si ˛e dla małych zespołów tworz ˛
acych
małe i ´sredniej wielko´sci oprogramowanie, najcz ˛e´sciej dla
biznesu (wa˙zna szybko´s´c dostarczania i dostosowanie do
cz ˛estych zmian).
Extreme Programming (XP) nale˙zy do grupy metodologii
wytwarzania oprogramowania nazywanych metodami
zwinnymi (agile methods)
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.15
Programowanie ekstremalne - XP
Motywacja:
klasyczne metodologie wytwarzania oprogramowania zbyt
wolno reaguj ˛
a na zmiany rynku i wymaga ´n klientów
zbyt du˙zo planowania, analizy i tworzenia modeli oraz
dokumentacji opó´znia wytworzenie i dostarczenie tego co
naprawd ˛e si ˛e liczy – kodu
klasyczne podej´scia powoduj ˛
a, ˙ze zmiany (spowodowane
np. wykryciem bł ˛edu) w pó´znych fazach tworzenia kodu s ˛
a
bardzo kosztowne
w procesach opartych na drobiazgowej analizie i
planowaniu zbyt mało ufa si ˛e i daje swobody, tym którzy
tak naprawd ˛e tworz ˛
a kod – programistom
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.16
Programowanie ekstremalne - XP
Podstawowe zasady:
oprogramowanie jest rozwijane w krótkich cyklach i w
ci ˛
agłej interakcji z klientem, po ka˙zdym cyklu mo˙ze
nast ˛
api´c zmiana zało˙ze ´n co do dalszej pracy, co wi ˛ecej
mo˙ze nast ˛
api´c rewizja ju˙z napisanego kodu (refactoring)
ka˙zdy przyrost dostarcza konkretn ˛
a funkcjonalno´s´c
okre´slan ˛
a na podstawie scenariuszy (opowie´sci
u˙zytkownika , user stories)
ju˙z pierwsze wydanie zawiera system o pewnej
cało´sciowej strukturze realizuj ˛
acy istotne dla klienta
funkcje
kolejne wydania (releases) kodu nast ˛epuj ˛
a co kilka
miesi ˛ecy (maximum), iteracje maj ˛
a po kilka tygodni,
obowi ˛
azuje planowanie zada ´n kilka dni do przodu, przy
zało˙zeniu, ˙ze kolejno´s´c działa ´n jest okre´slana przez
priorytety wa˙zno´sci
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.17
Programowanie ekstremalne - XP
Podstawowe zasady:
przed przyst ˛
apieniem do kodowania opracowywane s ˛
a
szczegółowe testy maj ˛
ace za zadanie sprawdzenie
wszelkich aspektów poprawno´sci wprowadzanych zmian
ka˙zda zmiana jest od razu integrowana z cało´sci ˛
a kodu
oraz testowana – nowe oraz opracowane wcze´sniej testy
(zautomatyzowane) s ˛
a powtarzane codziennie (lub nawet
kilka razy dziennie), ˙zeby sprawdzi´c czy nie zostały
wprowadzone bł ˛edy
w ci ˛
agu całego procesu gromadzona jest informacja
zwrotna słu˙z ˛
aca usprawnieniu procesu i ostatecznego
kodu
wa˙zna jest specyficzna organizacja miejsca pracy
kodowanie realizowane jest zgodnie z przyj ˛etymi przez
cały zespół regułami (coding standards)
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.18
Programowanie ekstremalne - XP
Podstawowe zasady:
programowanie odbywa si ˛e parami (zgodnie ze
szczegółowo ustalonymi zasadami), cz ˛este s ˛
a tak˙ze
dyskusje pomi ˛edzy członkami całego zespołu tworz ˛
acego
kod
dokumentacja oprogramowania składa si ˛e z komentarzy w
kodzie, opisu testów i niewiele wi ˛ecej
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.19
Programowanie ekstremalne - XP
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.20
Programowanie ekstremalne - XP
Troska o programistów:
40sto godzinny tydzie ´n pracy - mamy za du˙zo pracy
zamiast mamy za mało czasu
odpowiednie ´srodowisko pracy - otwarta przestrze ´n z
małymi prywatnymi pomieszczeniami na obrze˙zach i
stanowiskami w ´srodku dla programowania parami
wspólne posiadanie kodu
nacisk na nieustann ˛
a komunikacj ˛e (zwi ˛
azane m.in. z
programowaniem parami)
stworzenie ideologii zespołu walcz ˛
acego o zwyci ˛estwo (i
nagradzaj ˛
acego si ˛e za wszystkie osi ˛
agni ˛ecia)
du˙zo jedzenia i picia w zasi ˛egu r ˛eki
zasada work with human nature, not against it
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.21
Scrum.
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.22
Model spiralny - zarz ˛
adzanie ryzykiem.
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.23
V(ee)-model.
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.24
Dual V(ee)-model.
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.25
Cleanroom model.
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.26
Rapid Application Development.
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.27
Continuous Integration (Continuous Delivery)
Przypomnienie: proces
produkcji; czynno´sci a
modele
Podział metodologii
tworzenia
oprogramowania
Proces ujednolicony
(Unified Process)
2.28
Istotne czynniki podczas wyboru modelu tworzenia
oprogramowania
Tematyka
Wielko´s´c (obszerno´s´c)
Czas trwania
Zło˙zono´s´c
Ryzyko (poziom i rodzaj)
Zrozumienie wymaga ´n u˙zytkownika
Zrozumienie obszaru zastosowa ´n
Zaanga˙zowanie klienta
Do´swiadczenie zespołu
Wielko´s´c zespołu
Interakcje człowiek-komputer
Dost ˛epno´s´c narz ˛edzi i technologii
Wymagany poziom niezawodno´sci