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 m.szlenk@ia.pw.edu.pl 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 Nie Projekt wdrożeniowy 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 Odwzorowanie wymagań w konstrukcję systemu, czyli określenie jak system będzie zrealizowany Implementacja Zbudowanie działającego systemu Testowanie Sprawdzanie poprawności działania i usuwanie błędów Wdrożenie i pielęgnacja Instalacja oprogramowania i dalsze utrzymanie Wymagania systemowe Dobranie architektury, struktury oprogramowania, środowiska implementacji 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 Interpretacja ogólna Przejście do fazy n+1 wymaga zakończenia fazy n 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 Analiza wymagań Testowanie walidacyjne Q Projektowanie Testowanie weryfikacyjne Q Q Implementacja 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 Kod Bezbłędny! Propozycja teoretyczna Trudności specyfikowania i dowodzenia 23
Model Driven Architecture (MDA) CIM Model biznesowy (computation independent) Model zależny od platformy (platform specific) PIM PSM Kod iteracje Model niezależny od platformy (platform independent) 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 przypadków użycia Diagram klas Diagram stanów Diagram sekwencji Diagram komponentów Diagram wdrożenia 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 iteracje Kod 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