Modele procesów wytwórczych w inżynierii systemów informatycznych

Transkrypt

Modele procesów wytwórczych w inżynierii systemów informatycznych
Procesy wytwarzania oprogramowania
Specyfikacja i projektowanie oprogramowania
dr inż. Marcin Szlenk
Politechnika Warszawska
Wydział Elektroniki i Technik Informacyjnych
Wprowadzenie
O mnie
dr inż. Marcin Szlenk
Instytut Automatyki i Informatyki Stosowanej, pok. 555
www.ia.pw.edu.pl/~mszlenk
[email protected]
O wykładzie
Procesy konstrukcji systemów informatycznych:
kaskadowy, V, konstrukcji prototypów, przyrostowy,
iteracyjny, spiralny, transformacji formalnych
Model Driven Architecture (MDA) a
Domain Specific Modeling (DSM)
2
Kategorie projektów informatycznych
Zapotrzebowanie
Czy na rynku dostępne są
zadowalające nas rozwiązania COTS ?
Tak
Projekt wdrożeniowy
Nie
Projekt konstrukcyjny
Kastomizacja oprogramowania wdrożeniowego =
(mały) projekt konstrukcyjny
3
Proces wytwórczy systemu
Proces wytwórczy systemu
Zbiór czynności i związanych z nimi wyników, które prowadzą do
powstania systemu
Czynności wspólne dla wszystkich procesów:
Analiza wymagań
Projektowanie
Implementacja
Testowanie
Wdrożenie i pielęgnacja
4
Analiza wymagań
Zebranie i uporządkowanie wymagań użytkownika oraz
określenie, co system będzie robił by je spełnić
Projektowanie
Wymagania systemowe
Odwzorowanie wymagań w konstrukcję systemu, czyli
określenie jak system będzie zrealizowany
Implementacja
Zbudowanie działającego systemu
Dobranie architektury,
struktury oprogramowania,
środowiska implementacji
Testowanie
Sprawdzanie poprawności działania i usuwanie błędów
Wdrożenie i pielęgnacja
Instalacja oprogramowania i dalsze utrzymanie
Usuwanie błędów,
wprowadzanie zmian
5
Wymagania użytkownika i systemowe
Wymaganie użytkownika
1. Oprogramowanie musi zapewnić mechanizmy reprezentowania
i dostępu do plików zewnętrznych tworzonych przez inne
narzędzia
Wymaganie systemowe
1. Użytkownik powinien mieć możliwość definiowania typów plików
zewnętrznych
2. Każdemu typowi pliku zewnętrznego użytkownik może
przypisać narzędzie do obróbki takich plików
3. Każdy typ pliku zewnętrznego powinien być przedstawiony na
ekranie w postaci charakterystycznej ikony
4. Gdy użytkownik wybierze ikonę powiązaną z plikiem
zewnętrznym następuje uruchomienie narzędzia przypisanego
tego typu plikom
Ian Sommerville: Inżynieria oprogramowania, WNT (2003)
6
Wymagania funkcjonalne i pozafunkcjonalne
Wymagania funkcjonalne
Usługi lub funkcje wymagane od systemu
Wymagania pozafunkcjonalne
Ograniczenia jakim ma podlegać tworzenie i działanie systemu:
• niezawodność
• wydajność
• pielęgnowalność
• przenośność
• bezpieczeństwo
7
Studium wykonalności Czy?
Ustalenie możliwości realizacji przedsięwzięcia i
podjęcie decyzji o realizacji dalszych prac
Na podstawie
ogólnej analizy
1. Czy system jest w ogóle potrzebny?
2. Czy system da się zrealizować przy użyciu dostępnych
technologii?
3. Czy system jest ekonomicznie opłacalny?
4. Czy system da się zrealizować w ramach ustalonego budżetu i
ograniczeń czasowych?
5. Czy system da się zintegrować z istniejącymi systemami?
8
Modele procesów wytwórczych
Model procesu wytwórczego
= abstrakcja przebiegu wytwarzania systemu informatycznego
Kluczowe modele:
Model kaskadowy
Model V
Prototypowanie (model konstrukcji prototypów)
Model przyrostowy
Model iteracyjny
Model spiralny
Transformacje formalne
9
Model kaskadowy
Analiza wymagań
Projektowanie
Implementacja
Testowanie
Wdrożenie i pielęgnacja
Interpretacja ścisła
Fazy nie nakładają się na siebie
Przejście do fazy n+1
wymaga zakończenia fazy n
Interpretacja ogólna
Sąsiednie fazy nakładają się w czasie, ale w minimalnym stopniu
Na początku fazy n+1 można
dokonać zmian w fazie n
10
Zalety
naturalność i zrozumiałość
ułatwia planowanie, harmonogramowanie i śledzenie postępów
projektu
Wady
utrudnia reagowanie na:
• zmieniające się wymagania użytkownika
• błędy wymagające cofnięcia się do faz zakończonych
do końca projektu utrzymuje się wysokie ryzyko, że system nie
spełni wymagań użytkownika
wysoki koszt błędów popełnionych w fazie analizy
Sprawdza się w niewielkich projektach o łatwych do określenia i
stabilnych wymaganiach co do systemu
11
Model V
Testowanie
walidacyjne
Analiza wymagań
Q
Projektowanie
Testowanie
weryfikacyjne
Q
Implementacja
Q
Q
Q – czynności weryfikujące jakość wykonanych prac
Odmiana modelu kaskadowego (fazy wykonywane
sekwencyjnie)
Faza zostaje zamknięta po pozytywnej ocenie jakości
Testy opracowuje się równolegle do prac analitycznych i
projektowych
12
Kilka uwag na temat testowania
Weryfikacja
Czy budujemy system we właściwy sposób?
(Czy system działa poprawnie?)
Walidacja
Czy budujemy właściwy system?
(Czy system realizuje wymagania użytkownika?)
Podstawowe rodzaje testów:
testy jednostkowe
testy integracyjne
testy systemowe
testy akceptacyjne
Wymagania funkcjonalne i
pozafunkcjonalne
Podstawa odbioru
13
Zalety
obniżone ryzyko popełnienia błędów i konieczności nawrotów
dzięki ciągłej kontroli jakości
zapewnienie wysokiej jakości systemu (obniżenie kosztów
dalszego utrzymania)
Wady
narzuty dodatkowej pracy, czasu i kosztu realizacji
silnie rozbudowana dokumentacja
utrudniona adaptacja do zmiennych wymagań lub warunków
prowadzenia projektu (jak w modelu kaskadowym)
14
Prototypowanie
Wstępna analiza wymagań
Konstrukcja prototypu
Weryfikacja prototypu
Określenie wymagań i konstrukcja
właściwego systemu
(model kaskadowy)
Prototyp systemu
Uproszczenie docelowego systemu, konstruowane przy
względnie niedużym nakładzie środków i czasu
15
Zalety
minimalizacja ryzyka błędnego określenia wymagań
Wady
dodatkowy koszt związany z konstrukcją prototypu
problemy z dokonywaniem nawrotów do faz wcześniejszych jak
w modelu kaskadowym
Odmianą prototypowania jest programowanie odkrywcze
16
Czas
Model przyrostowy
Analiza wymagań
Projektowanie
Analiza wymagań
Implementacja
Projektowanie
fragment 1
Implementacja
fragment 2
...
...
Podział systemu na mniejsze fragmenty i ich sukcesywna
realizacja
Czynności dotyczące odrębnych fragmentów mogą być
wykonywane równolegle
17
Zalety
lepszy kontakt z przyszłym użytkownikiem
możliwość bardziej elastycznego reagowania na opóźnienia
Wady
nie zawsze możliwe rozbicie systemu na niezależne fragmenty
możliwe kłopoty z późniejszą integracją fragmentów
dodatkowe koszty tworzenia atrap brakujących fragmentów
18
Model iteracyjny
iteracja 1
iteracja 2
Analiza wymagań
Analiza wymagań
Projektowanie
Projektowanie
Implementacja
Implementacja
Testowanie
Testowanie
...
Czas
Stopniowe dochodzenie do pożądanego rozwiązania
Iteracje względnie krótkie
Zazwyczaj w połączeniu z podejściem przyrostowym
19
Zalety
mniejsze ryzyko, że końcowy system nie spełni wymagań
użytkownika
łatwiejsza adaptacja do zmian w wymaganiach lub w przyjętych
założeniach projektowych
Wady
problem z zaplanowaniem procesu (określenie potrzebnej liczby
iteracji i harmonogramu prac)
większa czasochłonność (osiągniecie docelowej wersji systemu
bardziej rozłożone w czasie)
20
Model spiralny
Planowanie
Analiza ryzyka
Atestowanie
Konstrukcja
Bardzo ogólny model (Boehm 1988)
Nacisk na analizę i redukcję ryzyka
Pasuje do procesu tworzenia oprogramowania rynkowego
21
Planowanie
Określenie celów, alternatyw i ograniczeń
Analiza ryzyka
Ocena możliwych rozwiązań oraz identyfikacja i oszacowanie
ryzyka dla każdego z nich
Konstrukcja
Konstrukcja kolejnego przybliżenia systemu zgodnie z modelem
kaskadowym
Atestowanie
Ocena przez klienta powstałej wersji systemu
ocena negatywna → kolejny cykl
22
Transformacje formalne
Specyfikacja wymagań
w języku formalnym
Dowód poprawności
Postać pośrednia
Dowód poprawności
Postać pośrednia
…
Bezbłędny !
Kod
Propozycja teoretyczna
Trudności specyfikowania i dowodzenia
23
Model Driven Architecture (MDA)
Model biznesowy
(computation independent)
CIM
Model niezależny od
platformy (platform
independent)
PIM
Model zależny od
platformy (platform
specific)
PSM
iteracje
Kod
Zapisanego w języku UML
(Unified Modeling Language)
Proces wytwórczy polega na transformacji jednego modelu w
inny i na końcu w kod
Proces iteracyjno-przyrostowy – transformacje mogą być
wykonywane wiele razy (najlepiej automatycznie)
24
Dwa słowa o UML ...
Diagram stanów
Diagram
przypadków użycia
Diagram klas
Diagram wdrożenia
Diagram sekwencji
Diagram komponentów
25
Zalety
praca skupia się na abstrakcyjnych modelach (głównie PIM), co
uniezależnia od platformy
możliwość ponownego użycia fragmentów modelu PIM
automatyzacja zmniejsza ryzyko popełnienia błędów i
przyśpiesza proces tworzenia
Wady
transformacje są zadaniem trudnym i obecnie tylko nieznacznie
wspieranym przez narzędzia
problem zastosowania w przypadku rozwoju już istniejących
systemów (odtworzenie modelu PIM na podstawie PSM)
26
Domain Specific Modeling (DSM)
Wymagania użytkownika
Modele zapisane
w UML
CIM
Wymagania użytkownika
PIM
Model dziedzinowy
PSM
Kod
iteracje
Kod
Model zapisany w
języku dziedzinowym
Model systemu jest zapisywany w dedykowanym języku
(Domain Specific Modeling Language) – język specyficzny dla
danej dziedziny problemu
Wchodzący w skład języka generator kodu przekształca model w
kod całkowicie automatycznie
27
Źródło: www.metacase.com
28
Zalety
Modelowanie oprogramowania przy użyciu pojęć z dziedziny
(intuicyjny język modelowania)
Możliwość szybkiego generowania kodu wysokiej jakości
Przydatność w przypadku tzw. linii produktowych (software
product line)
Wady
Konieczność opracowania języka dziedzinowego i generatora
kodu
Wymagane duże umiejętności projektanta języka
Sprawdza się w przypadku gdy opracowany język będzie
wykorzystywany wielokrotnie (np. różne wersje oprogramowanie
urządzeń mobilnych)
29
Literatura
Mariusz Flasiński, Zarządzanie projektami informatycznymi,
Wydawnictwo Naukowe PWN (2006)
Ian Sommerville, Inżynieria oprogramowania, WNT (2003)
Andrzej Jaszkiewicz, Inżynieria oprogramowania, Wydawnictwo
HELION (1997)
Stanisław Szejko, Metody wytwarzania oprogramowania,
Wydawnictwo MIKOM (2002)
Alan Monnox, J2EE: Podstawy programowania aplikacji
korporacyjnych, HELION (2006)
Steven Kelly, Juha-Pekka Tolvanen, Domain-Specific Modeling:
Enabling Full Code Generation, Wiley-Interscience (2008)
30

Podobne dokumenty