Slajd 1
Metody tworzenia
systemów
informatycznych
Slajd 2
Plan wykładu
Tworzenie kaskadowe
Tworzenie ewolucyjne
Tworzenie formalne systemu
Tworzenie z użyciem wielokrotnym
Iteracja procesu tworzenia
oprogramowania
Tworzenie przyrostowe
Tworzenie spiralne
Slajd 3
Tworzenie
kaskadowe
Slajd 4
Metody tworzenia systemów
informatycznych
Tworzenie kaskadowe
W tym modelu podstawowe
czynności specyfikowania,
tworzenia, zatwierdzania i ewolucji
są odrębnymi fazami procesu.
Slajd 5
Fazy modelu kaskadowego
•
Definiowanie i analiza wymagań
•
Projektowanie systemu i analiza
wymagań
•
Implementacja i testowanie jednostek
•
Integracja i testowanie systemu
•
Działanie i pielęgnacja
Slajd 6
Model kaskadowy
Definiowanie wymagań
Definiowanie wymagań
Projektowanie systemu
i oprogramowania
Implementacja i testowanie
jednostek
Integracja i testowanie
systemu
Działanie i
pielęgnacja
Slajd 7
Problemy modelu
kaskadowego
•
Następnej fazy nie powinno się
rozpoczynać, jeśli poprzednia się nie zakończy.
•
Koszty opracowania i akceptacji
dokumentów są wysokie i dlatego iteracje są
również kosztowne oraz wymagają powtarzania
wielu prac.
•
Wadą modelu kaskadowego jest zawarty w nim
nieelastyczny podział na rozłączne etapy.
•
Model kaskadowy powinien być używany
jedynie wówczas, gdy wymagania są jasne i
zrozumiałe.
Slajd 8
Tworzenie
ewolucyjne
Slajd 9
Metody tworzenia systemów
informatycznych
Tworzenie ewolucyjne
W tym procesie czynności
specyfikowania, projektowania i
zatwierdzania przeplatają się.
Slajd 10
Tworzenie ewolucyjne
•
Tworzenie badawcze
•
Celem procesu jest praca z klientem, polegająca na
badaniu wymagań i dostarczeniu ostatecznego
systemu. Tworzenie rozpoczyna się od tych części
systemu, które są dobrze rozpoznane. System
ewoluuje przez dodawanie nowych cech, które
proponuje klient.
•
Prototypowanie z porzuceniem
•
Celem procesu tworzenia ewolucyjnego jest
zrozumienie wymagań klienta i wypracowanie lepszej
definicji wymagań stawianych systemowi. Budowanie
prototypu ma głównie na celu eksperymentowanie z
tymi wymaganiami użytkownika, które są niejasne.
Slajd 11
Tworzenie ewolucyjne
Wersja
początko
wa
Ogólny opis
Specyfikacja
Tworzenie
Zatwierdzenie
Wersje pośrednie
Wersja końcowa
Równolegle czynności
Slajd 12
Tworzenie ewolucyjne
•
Problemy
•
Proces nie jest widoczny
•
System ma złą strukturę
•
Konieczne mogą być specjalne narzędzia i techniki
•
Stosowanie
•
W wypadku systemów małych (mniej niż 100 000
wierszy kodu) lub średnich (do 500 000 wierszy kodu) z
krótkim czasem życia podejście ewolucyjne jest
najlepsze.
•
W wypadku dużych systemów o długim czasie życia
wady tworzenia ewolucyjnego ujawniają się jednak z
całą ostrością.
Slajd 13
Tworzenie formalne
systemu
Slajd 14
Metody tworzenia systemów
informatycznych
Tworzenie formalne systemu
To podejście jest oparte na
budowaniu formalnych
matematycznych specyfikacji
systemu i przekształcaniu tych
specyfikacji w program za pomocą
metod matematycznych.
Slajd 15
Tworzenie formalne
systemów
Definicja
wymagań
Specyfikacja
formalna
Przekształce
nie
formalne
Integracja i testowanie
systemu
Slajd 16
Tworzenie formalne
systemów
R2
Formal
specification
R3
Executable
program
P2
P3
P4
T1
T2
T3
T4
Proofs of transformation correctness
Formal transformations
R1
P1
Slajd 17
Problemy i stosowalność
•
Oprócz specjalistycznych dziedzin procesy
oparte na przekształceniach formalnych
są używane rzadko.
•
Wymagają specjalistycznej wiedzy i w
praktyce okazuje się, że w wypadku
większości systemów nie powodują
zmniejszenia kosztów lub polepszenia
jakości w porównaniu z innymi
podejściami.
•
Interakcje systemów nie poddają się
łatwo specyfikowaniu formalnemu.
Slajd 18
Tworzenie z użyciem
wielokrotnym
Slajd 19
Metody tworzenia systemów
informatycznych
Tworzenie z użyciem wielokrotnym
W tym podejściu zakłada się
istnienie dużej liczby komponentów
zdatnych do ponownego użycia.
Slajd 20
Tworzenie z użyciem
wielokrotnym
•
W większości przedsięwzięć
programistycznych występuje użycie
wielokrotne oprogramowania.
•
Etapy procesu
•
Analiza komponentów
•
Modyfikacja wymagań
•
Projektowanie systemu z użyciem wielokrotnym
•
Tworzenie i integracja
•
Zakłada się
istnienie wielkiego zbioru
dostępnych komponentów programowych
użycia wielokrotnego
oraz integrującej je
struktury.
Slajd 21
Tworzenie z użyciem
wielokrotnym
Specyfikacja
wymagań
Zatwierdze
nie
systemu
Tworzenie i
integracja
Projekt systemu z
użyciem
wielokrotnym
Analiza
komponentów
Modyfikacja
wymagań
Slajd 22
Iteracja procesu
tworzenia
oprogramowania
Slajd 23
Iteracja procesu
•
Potrzebne jest wspomaganie iteracji
procesu, która polega na powtarzaniu
fragmentu w miarę ewolucji wymagań
stawianych systemowi.
•
Prace projektowe i implementacyjne
muszą być ponownie wykonane, aby
spełnić zmienione wymagania.
•
Dwa hybrydowe modele
•
Tworzenie przyrostowe
•
Tworzenie spiralne
Slajd 24
Tworzenie przyrostowe
Slajd 25
Tworzenie przyrostowe
Podejście przyrostowe do tworzenia zaproponował
Mills jako sposób na ograniczenie powtarzania
prac w procesie tworzenia oraz danie klientom
pewnych możliwości odkładania decyzji o
szczegółowych wymaganiach do czasu, aż zdobędą
pewne doświadczenia w pracy z systemem.
W procesie przyrostowym klienci identyfikują w
zarysie usługi, które system ma oferować. Wskazują,
które z nich są dla nich najważniejsze, a które
najmniej ważne. Definiuje się następnie pewną liczbę
przyrostów, które mają być dostarczone.
Gdy przyrost jest już gotowy i dostarczony, klienci
mogą go uruchomić. Oznacza to, że szybko otrzymują
część funkcjonalności systemu
Slajd 26
Przyrostowy model tworzenia
systemu
Definicja
wymagań
Architektur
a
Analiza
Projekt
Kodowanie i
testowanie
Wdrożenie
Projekt
Projekt
Kodowanie i
testowanie
Kodowanie i
testowanie
Wdrożenie
Wdrożenie
.
.
Slajd 27
Tworzenie przyrostowe
Zdefiniuj zarys
wymagań
Wytwórz przyrost
systemu
Przypisz wymagania
do przyrostów
Zweryfikuj
przyrost
Zaprojektuj
architekturę systemu
Zintegruj system
Zweryfikuj system
System
końcowy
System nie ukończony
Slajd 28
Zalety procesu tworzenia
przyrostowego
Klienci nie musza czekać na dostarczenie
całego systemu, zanim zaczną czerpać z niego
korzyść.
Klienci mogą używać wstępnych przyrostów
jako rodzaju prototypu i zdobywać
doświadczenia, które inspirują wymagania wobec
późniejszych przyrostów.
Ryzyko całkowitej porażki przedsięwzięcia jest
mniejsze.
Usługi o najwyższym priorytecie będą
dostarczane jako pierwsze.
Slajd 29
Tworzenie spiralne
Slajd 30
Tworzenie spiralne
•
Każda pętla spirali reprezentuje
jedną fazę procesu.
•
Najbardziej wewnętrzna pętla
może być poświęcona
wykonalności systemu, następna
- definicji wymagań stawianych
systemowi, kolejna projektowaniu
itd..
Slajd 31
Każda pętla spirali jest
podzielona na cztery
sektory:
Ustalanie celów
•
Definiuje się konkretne cele tej fazy przedsięwzięcia.
Identyfikuje się ograniczenia, którym podlega proces i
produkt.
Rozpoznanie i redukcja zagrożeń
•
Przeprowadza się szczegółową analizę każdego z
rozpoznanych zagrożeń przedsięwzięcia
.
Tworzenie i zatwierdzanie
•
Po ocenie zagrożeń wybiera się model tworzenia systemu.
Planowanie
•
Recenzuje się przedsięwzięcie i podejmuje decyzję, czy
rozpoczynać następną pętlę spirali.
Slajd 32
Model spiralny procesu
tworzenia oprogramowania
Określ cele,
inne strategie
i ograniczenia
Oceń inne strategie,
rozpoznaj i zmniejsz
zagrożenia
RECENZJA
Plan wymagań
Plan cyklu życia
Plan tworzenia
Plan testowania
i integracji
Zaplanuj następną
fazę
Analiza zagrożeń
Analiza zagrożeń
Analiza zagrożeń
Analiza
zagrożeń
Prototyp 1
Prototyp 2
Prototyp 3
Działający
prototyp
Sposób
postępowania
Symulacje, modele, miary odniesienia
Zatwierdzenie
wymagań
Wymagania
S/W Projekto-
wanie
produktu
Weryfikacja i
zatwierdzenie
działanie
Testy
akceptacji
Testy
integracji
Testy
jednostek
kodowanie
Szczegółowe
projekto-
wanie
Utwórz, zweryfikuj
produkt następnego
poziomu
Slajd 33
Model cyklu życia
oprogramowania
Analiza
Projektowanie
Programowanie
Kaskadowy
Bardzo dokładna
Staranne, ale nie narażone na
ciągłe zmiany. Znaczna część pracy
przerzucona na projektantów i
programistów
Łatwe jeśli dobry projekt.
Kaskadowy z nawrotami
Dokładna
Staranne, ale nie narażone na
ciągłe zmiany. Znaczna część pracy
przerzucona na projektantów i
programistów
Dość łatwe ale musi uwzględniać
możliwość pewnych zmian.
Przyrostowy
Dokładna w obrębie podzbioru
Łatwe na początku bo projektuje się
mały podzbiór, jednocześnie przy
rozszerzaniu funkcjonalności jest
się związanym tym co się wcześniej
zaprojektowało. System należy tak
projektować aby był
konfigurowalny
Prowadzi od improwizacji, wymaga
dużej wiedzy od programistów.
Prototypowy
Nie wymaga dużej przenikliwości.
J.w. Znaczna część pracy
przerzucona na programistów.
Odkrywczy
Brak
Brak
Czasem trzeba wszystko zrobić od
nowa. Kod nieprofesjonalny
Komponentowy
Dokładna
Brak
Znikome lub brak
Oprogramowanie oparte na
koncepcji rodzin
Dokładna zarówno dla rodziny i narzędzi z
nią związanych
Bardzo dokładna dla produktu.
Specyfikacja produktu w języku specjalnie
zaprojektowanym dla całej rodziny
Bardzo dokładne dla narzędzi dla
całej rodziny i języka opisu
członków rodziny
Bardzo dokładne dla narzędzi dla
całej rodziny
Wykonywane automatycznie dla
konkretnych produktów.
Zestawienie modeli cykli życia oprogramowania
Slajd 34
O czym był wykład?
Tworzenie kaskadowe
Tworzenie ewolucyjne
Tworzenie formalne systemu
Tworzenie z użyciem wielokrotnym
Iteracja procesu tworzenia
oprogramowania
Tworzenie przyrostowe
Tworzenie spiralne
Slajd 35
Literatura dodatkowa
1. Z. Szyjewski, Metodyki zarządzania
projektami
informatycznymi,
Wydawnictwo Placet, Warszawa 2004
2. M. Flasiński, Wstęp do analitycznych
metod
projektowania
systemów
informatycznych,
Wydawnictwa
Naukowo-Techniczne, Warszawa 1997