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