Konfiguracja modelowania w procesie wytwarzania oprogramowania Anna Bobkowska Materiały pomocnicze do wykładu z Modelowania i Analizy Systemów na Wydziale ETI PG. Ich lektura nie zastępuje obecności na wykładzie. Wykorzystanie materiałów w innym celu oraz ich rozpowszechnianie jest zabronione.
Plan wykładu: 1. Idea konfiguracji procesu wytwarzania 2. Zarys metody konfiguracji procesu 3. Cele zastosowań modeli, uwarunkowania i rola modeli w projekcie informatycznym 4. Rodzaje modeli i typowe rozwiązania 5. Konfiguracja procesu, produktów, odpowiedzialności i narzędzi 6. Zastosowanie SPEM do opisu procesu
Sukces projektu... Anulowane projekty Wysoka jakość Udane projekty Zadowoleni klienci Przekroczony budżet Spóźnienia Konfiguracja Strategia Metody i narzędzia Dokumentacja Planowanie i szacowanie Proces wytwarzania Zapewnienie jakości Standardy Współpraca Z klientem Modelowanie Zarządzanie Warunki pracy pracowników Komunikacja Kompetencje pracowników Ryzyko
Idea konfiguracji procesu Zaawansowana technologia inżynierii oprogramowania i... nieudane projekty kwestia odpowiedniego wykorzystania technik Efektywność: czas, koszt i jakość Różnorodność projektów Konfiguracja procesu a plan projektu Konfiguracja procesu dla projektów określonego typu Plan projektu 1 IBM Rational Unified Process (RUP) OMG Software and Systems Process Engineering Metamodel (SPEM) Plan projektu 2 Plan projektu n
Potrzeba konfiguracji modelowania Przypadek1: projekt dotyczący wykonania oprogramowania o średniej złożoności przewidywany brak utrzymania systemu jeden mały zespół Przypadek 2: duży projekt wykonywany przez rozproszone zespoły wielu udziałowców oczekiwane utrzymanie systemu złożona organizacja odbiorcy
Metoda konfiguracji ETAP 1 Analiza Wyznaczenie celu konfiguracji procesu (modelowania w procesie) Określenie charakterystyk projektu obejmujących cechy projektu, cechy aplikacji oraz czynnik ludzki Określenie problemów, które wymagają rozwiązania oraz priorytetów ETAP 2 - Przyjęcie założeń podstawowych procesu wynikających ze specyfiki projektu, celów, istniejących problemów i priorytetów ETAP 3 - Wykonanie konfiguracji procesu zgodnej ze standardem SPEM w środowisku Eclipse Process Framework Composer
Różnorodne cele modelowania w konkretnych przypadkach Uporządkowanie i/lub zunifikowanie procesu wytwarzania Gromadzenie wiedzy na temat projektów Ułatwienie wytwarzania Dokumentacja różnych wersji u różnych klientów Automatyczne przetwarzanie Komunikacja w zespole i z klientem Wymaganie dla podwykonawcy...
Uwarunkowania i charakterystyki projektu Wielkość i złożoność wytwarzanego systemu Innowacyjność projektu Budżet i czas trwania projektu Rodzaj systemu, dziedzina problemowa Złożoność organizacji Stabilność wymagań Użytkownicy i udziałowcy Wymagany poziom formalności Przyszły rozwój systemu Różne wersje systemu, czas na dostarczenie kolejnej wersji Wielkość zespołu i umiejętności poszczególnych osób Poziom rotacji personelu Priorytety powiązane ze spełnieniem celu projektu Narzędzia
Rola modeli w cyklu życia systemów Zrozumienie złożoności systemu Analiza: zrozumienie dziedziny problemowej, zrozumienie celu i zakresu systemu, wyróżnienie cech istotnych Projektowanie: uporządkowanie wiedzy na temat podjętych decyzji Utrzymanie: zrozumienie zakresu, struktury i działania systemu Specyfikowanie struktury i zachowania w celu przewidywania zachowania i właściwości Produkty analizy i projektowania: weryfikacja, walidacja, ocena rozwiązań Dokumentacja podjętych decyzji i komunikacja W zespole projektowym: analitycy-projektanci-programiści-testerzy Z kierownictwem Z klientem
Korzyści z modelowania według badań ankietowych Poprawa dokumentacji produktu Poprawa jakości oprogramowania Poprawa dostępności do wiedzy na temat projektu Zwiększenie możliwości weryfikacji i przetwarzania specyfikacji Ułatwienie w ustaleniu zakresu funkcjonalności systemu Poprawa komunikacji w zespole i z klientem (czasami) Możliwość nadbudowania innych technologii Efektywność i satysfakcja zależy od zaawansowania technologii, stopnia dopasowania do specyfiki firmy oraz integracji z innymi narzędziami Wzrost produktywności w przedziale 'raczej tak' do 'raczej nie
Rola dokumentacji w projekcie Zapis ustaleń w trakcie trwania projektu i podstawa podejmowania decyzji Zgromadzenie informacji o wykonanych pracach, produktach, projektach Sposób komunikacji w zespole Podstawa komunikacji z klientem i z kierownictwem Wspomaganie procesu wykonywania zadań, np. szablony, metody tworzenia modeli Podstawa analizy np. postępów, poszczególnych aspektów systemu Podstawa poprawy jakości [...]
Efektywność dokumentowania Każdy dokument pisany jest w konkretnym celu i dla konkretnego odbiorcy. Korzyści dla wykonawcy Użyteczność dla odbiorcy Wymagana precyzja Czas tworzenia dokumentów Czas czytania dokumentów
Potencjalne problemy Modele o słabej jakości Antywzorzec przedokumentowania brak efektywności w związku z nadmiarem modelowania przy braku automatyzacji Niespójność kodu i dokumentacji (modeli) systemu - modyfikacje w kodzie przy braku modyfikacji modeli
Rodzaje modeli i typowe rozwiązania (ad ETAP2) Modelowanie biznesowe Modelowanie wymagań (analityczne) Modelowanie systemu (projektowe) Agile modeling Transformacje modeli (MDA) Przestrzenie techniczne Wzorce analizy i wzorce projektowe Zapewnienie jakości modeli Modelowanie dziedzinowe
Modelowanie biznesowe Cel: opis organizacji Notacje: BPMN, rozszerzenia UML Aspekty: procesy, hierarchia/struktura, usługi, zdarzenia biznesowe Zastosowanie: skomplikowane procesy, znajomość organizacji istotna do wprowadzenia systemu, wsparcie dla procesów.
Modelowanie wymagań Cel: opis wymagań, analiza systemu Notacje: UML, SysML Aspekty: funkcjonalność, struktura systemu, dynamika systemu, wymagania Zastosowanie: analiza systemu w czasie wytwarzania lub ewolucji oprogramowania, analiza wykonalności lub wariantów systemu
Modelowanie systemu Cel: opis systemu, decyzje projektowe, dokumentacja systemu Notacja: UML, ERD, mapy nawigacji GUI Aspekty: funkcjonalność, struktura, dynamika, interfejs użytkownika, bazy danych Zastosowanie: wytwarzanie i modyfikacja oprogramowania, podstawa generacji kodu
Agile Modeling Podstawowe praktyki Aktywny udział udziałowców Wspólna własność Publiczne wyświetalnie modeli Wspólne modelowanie Model storming JIT Wytwarzanie równolegle wielu modeli Prosta zawartość Proste modele Modelowanie w małych iteracjach Użycie najprostszych narzędzi Specyfikacje wykonalne Dodatkowe praktyki Stosowanie standardów modelowania Łagodne stosowanie wzorców Pozbywanie się modeli tymczasowych Formalizacja modeli kontraktowych Uaktualnienia, kiedy konieczne www.agilemodeling.com
Transformacje modeli (MDA) Cel: MDSD, przekształcenia modeli niezależnych od platformy (PIM) w modele zależne od platformy (PSM) Notacje i standardy: UML, MOF, QVT Zastosowania (cele MDA): przenośność, wielokrotne użycie, współpraca różnych środowisk, elastyczność względem nowych technologii
Przestrzenie techniczne Cel: Opis technologii na wyższym poziomie abstrakcji, w celu umożliwienia łatwiejszego ich porównywania i szukania ewentualnych możliwości integracji, łączenie różnych technologii (różnych przestrzeni technicznych) Standardy: MOF, XML, Aspekty: poziomy M1-M3 czterowarstwowej architektury meta-modeli, łączenie (ang. bridging) Zastosowanie: systemy wykorzystujące różne technologie, transformacje pomiędzy różnymi przestrzeniami
Wzorce analizy Cel: pomoc w analizie podobnych problemów Notacja: UML Aspekty: struktura, dynamika Zastosowanie: inspiracja (wykorzystanie doświadczeń innych) przy tworzeniu własnych modeli; tworzenie firmowych bibliotek wzorców i ich wykorzystanie
Techniki zapewnienia jakości modeli Cel: zapewnienie wysokiej jakości modeli i modelowanych systemów, przeciwdziałanie propagacji defektów Techniki: zalecenia, style modelowania, listy kontrolne, inspekcje, przeglądy, metryki, narzędzia, kompetencje wykonawców Zastosowanie: kompromis pomiędzy korzyściami a nakładami pracy
Modelowanie dziedzinowe (DSM, DSL = Domain Specific Modeling/Languages) Cel: lepsze dopasowanie do dziedziny, większa automatyzacja, eliminacja nadmiarowości w zastosowaniach uniwersalnych Notacje: DSL do zaprojektowania Aspekty: wybór istotnych dla danej dziedziny Zastosowanie: wytwarzania wielu systemów w określonej dziedzinie Konsekwencje: nakład pracy na tworzenie DSL i skryptów; kod, dokumentacja i testy generowane automatycznie; analiza i projekt nakładają się na siebie
Konfiguracja modelowania Cele, strategia (ad ETAP 3) produkty zadania, procesy narzędzia role
Dobór produktów Jakie diagramy? W jakim zastosowaniu? Jakie powiązania pomiędzy diagramami? Jakie powiązania pomiędzy diagramami a innymi produktami, np. wymagania, wizja, prototypy interfejsów, testy...?
Dobór procesu Jakie zadania są związane z tworzeniem modeli? Jakie zadania są związane z zapewnieniem jakości modeli? Jakie zadania są związane z wykorzystaniem modeli? Jakie zadania są związane z modyfikacją modeli? Jaki jest przebieg procesu?
Role Kto będzie tworzył poszczególne modele? Czy dana rola wykonuje także inne zadania powiązane z tworzeniem modeli? Kto będzie czytał i modyfikował poszczególne modele? Jakie predyspozycje są wymagane dla poszczególnych ról?
Narzędzia CASE Czy narzędzia wspierają zadania? Jakie są możliwości automatycznej generacji? Jaka jest jakość narzędzi? Czy narzędzia są dopasowane do specyfiki organizacji i prowadzonych projektów? Czy można je zintegrować z innymi narzędziami?
Opis procesu zgodnie ze SPEM Software and Systems Process Engineering Meta-model Typowe korzyści: Systematyzacja wiedzy na temat procesów Precyzja, łatwość konfiguracji Pomoc w realizacji i wprowadzenie dla nowych pracowników Wspomaganie planowania projektów
Zastosowanie SPEM do modelowania procesu + diagramy czynności
Business Modeling
Define Business
Define Business Operations
Rola: Business-Process Analyst This role leads and coordinates business requirements elicitation by outlining and delimiting the organization being modeled.
IBM Rational Method Composer Środowisko do definiowania procesu wytwarzania oprogramowania Wykorzystanie jako podstawy elementów IBM RUP Wykorzystanie Plug-Inów zawierających opis specjalistycznych procesów, np. PMBOK, SOA,... Publikowanie procesu wytwarzania konkretnej konfiguracji - jako strony internetowej Eclipse Process Framework (EPF) http://www.eclipse.org/epf/