UML – Unified Modeling Language (2) Bartosz Baliś, Na podstawie, m.in.: Gunnar Övergaard, Bran Selic, Conrad Bock and Morgan Björkander: UML Behavioral Modeling (tutorial) Agile modeling: http://www.agilemodeling.com Źródła: 1. Russel Kay, QuickStudy: System Development Life Cycle, Computerworld, May 2002 http://www.computerworld.com/developmenttopics/development/story/0,10801,71151,00.html 2. http://www.answers.com 3. Ian Sommerville, Inżynieria Oprogramowania 4. Wikipedia
Modele zachowania Diagramy interakcji (interaction diagrams) Diagramy sekwencji (sequence) Diagramy kolaboracji (współpracy) (collaborations) Diagramy stanu (statecharts) Diagramy aktywności (activity graphs)
Diagramy interakcji
Interakcje Interakcja: zbiór komunikatów pomiędzy instancjami, tj. wywołania operacji, tworzenie i usuwanie instancji. Komunikaty są częściowo uporządkowane w czasie Rodzaje diagramów interakcji: Diagramy sekwencji Diagramy kolaboracji
Diagramy interakcji Diagram sekwencji Diagram kolaboracji x y z a b c
Diagram sekwencji Obiekt Linia życia bodziec Aktywacja usunięcie name : Class other Obiekt Linia życia bodziec name (…) Aktywacja : Class utworzenie new (…) usunięcie powrót
Rodzaje wiadomości Synchroniczna – nadawca zawiesza działanie, dopóki odbiorca nie zwróci sterowania Asynchroniczna – nadawca nie czeka na odpowiedź, kontynuuje działanie Powrót
Rodzaje strzałek – przykład
Przykład – zapisywanie się studenta na seminarium
Diagram kolaboracji obiekt połączenie bodziec ograniczenie stereotyp : Controller : Window wire :Wire {new} : Line left : Bead right : Bead redisplay () bodziec 1: displayPositions (window) wire «local» line contents {new} window «self» window «parameter» ograniczenie 1.1.3.1 add (self) 1.1 *[i := 1..n]: drawSegment (i) 1.1.2: create (r0, r1) 1.1.3: display (window) 1.1.1a: r0 := position () 1.1.1b: r1 := position ()
Kiedy używać diagramów interakcji? Gdy chcemy pokazać interakcje pomiędzy instancjami Aby rozpoznać interfejsy klas Użycie diagramów sekwencji Aby lepiej pokazać kolejność między wiadomościami Użycie diagramów kolaboracji Aby lepiej pokazać architekturę
Przykład: system rezerwacji lotu
Przypadek użycia: Zmień plan lotu Aktorzy: podróżny, konto klienta db, system rezerwacji lotów Warunki wstępne: Podróżny się zalogował Podstawowy przebieg: Podróżny wybiera opcję ‘zmień plan lotu’ System pobiera konto użytkownika i plan lotu z bazy danych klientów System prosi podróżnego, aby wybrał segment planu lotu, który chce zmienić; podróżny wybiera segment System prosi podróżnego o nowe informacje o odlocie i przylocie; podróżny dostarcza tych informacji Jeśli loty są dostępne, to … … System wyświetla podsumowanie transakcji. Alternatywny przebieg: Jeśli nie ma dostępnych lotów, to …
Diagram sekwencji: zmień plan lotu Podróżny :System rezerwacji Konto klienta DBMS System rezerwacji lotów zmień plan podróży pobierz konto użytk. pobierz plan pokaż plan wybierz segment pokaż detale zmień dane dostępne loty : :
Diagram kolaboracji: zmień planu lotu 1: zmień plan lotu 2: pobierz konto użytk. 3: pobierz plan 5: wybierz segment Podróżny Konto klienta DBMS : System rezerwacji 7: zmień dane 4: pokaż plan 6: pokaż detale 8: dostępne loty System rezerwacji lotów
Zmień plan lotu: dokładniejszy model 4: pobierz konto użytkownika 1: zmień plan lotu 7: pobierz plan : Podróżny Protokół S.R.L. Formularz planu lotu Protokół DBMS : Konto klienta DBMS 10: pokaż Modyfikator planu lotu 9: wyświetl 3: pobierz konto użytk. 2: Utwórz modyfikator 6: pobierz plan 5: utwórz Plan lotu Konto 8: utwórz : System Rezerwacji Lotów
Diagramy stanu
Automat Maszyna, w której wyjściowe zachowanie zależy nie tylko od aktualnych bodźców na wejściu, ale też historii poprzednich bodźców Posiada wewnętrzny stan, który reprezentuje wczesniejsze doświadczenie OFF ON ON ON ON
Diagram maszyny stanowej (automatu) on Lamp On off on off Lamp Off
Wyzwalacz (zdarzenie) Diagram stanów UML Stan Pseudostan początkowy Wyzwalacz (zdarzenie) Ready Przejście stop /ctr := 0 Done Stan końcowy Akcja stop
Do czego nadaje się model stanów? Maszyna stanów nadaje się do opisu zachowania dyskretnego, sterowanego zdarzeniami (event-driven) Nie nadaje się do modelowania zachowania ciągłego time threshold
Zachowanie sterowane zdarzeniami Typy zdarzeń interakcje: Synchroniczne wywołanie operacji obiektu (call event) Asynchroniczne otrzymanie sygnału (signal event) wystąpienie chwili w czasie (time event) upłynięcie okresu czasu nadejście określonej daty / czasu zmiana wartości jakiegoś bytu (change event) Instancja zdarzenia = wystąpienie zdarzenia określonego typu występuje w określonej chwili czasowej, nie jest rozciągła w czasie (nie trwa)
Przykład – wpisywanie numeru PESEL
Diagramy aktywności
Diagramy aktywności UML-owe odpowiedniki diagramów przepływu Model przepływ wraz z decyzjami, alternatywnymi i równoległymi ścieżkami, itp.
Przykład – pobierz pieniądze z bankomatu Łączenie Scalenie
Elementy diagramu (1) Akcja Przepływ sterowania (control flow) Start / stan początkowy Koniec całej aktywności (wszystkich przepływów) Koniec jednego przepływu w ramach aktywności Obiekt
Elementy diagramu (2) Rozgałęzianie i scalanie – rozgałęzianiu towarzyszy warunek Rozwidlenie i łączenie – początek i koniec współbieżnych wątków. Różnica między scalaniem i łączeniem Łączenie sychronizuje wchodzące przepływy – dalszy przepływ może się wykonać dopiero, gdy wszystkie wchodzące dojdą do tego punktu Scalanie nie synchronizuje – każdy przepływ „przechodzi osobno” i akcja następująca po scalaniu może być wykonana kilka razy (dla każdego wchodzącego przepływu)
Elementy diagramu (3) Przepływ obiektów Przepływ obiektów – notacja skrócona Tory – podział akcji pomiędzy obiekty
Zastosowanie diagramów aktywności Modelowanie przepływu sterowania / danych (obiektów) … ... a nie modeli sterowanych zdarzeniami (maszyn stanowych) Dobrze nadają się do modelowania skomplikowanych scenariuszy Dobrze modelują alternatywne scenariusze
UML – podsumowanie
Pięć punktów widzenia na system Przypadków użycia (use case view) – przypadki użycia i zachowanie systemu z punktu widzenia użytkowników końcowych, analityków i testerów Diagramy przypadków użycia, interakcji Projektu (design view) – klasy, interfejsy, schematy współpracy, które tworzą podstawowy słownik problemu i jego rozwiązania Diagramy klas, obiektów, interakcji Procesów (process view) – wątki i procesy, które składają się na współbieżne przetwarzanie w systemie, synchronizacja Diagramy aktywności Implementacji (implementation view) – komponenty i pliki, które składają się na fizyczną instalację (release) systemu Diagramy komponentów Wdrożenia (deployment view) – obejmują węzły, czyli topologię sprzętową, na której działa system Diagramy wdrożeń