INŻYNIERIA OROGRAMOWANIA DIAGRAMY SEKWENCJI 2015/2016
Diagram sekwencji (sequence diagram) Jego zadaniem jest pokazać w jaki sposób oraz w jakiej kolejności obiekty współpracują ze sobą (obrazuje kolejność w czasie wysyłania komunikatów pomiędzy różnymi obiektami w systemie). Każdy obiekt posiada linię życia (przebieg czasowy interpretuje się z góry na dół). Strzałka skierowana z jednego obiektu do drugiego oznacza, że to ten pierwszy obiekt wywołuje jakąś operację obiektu drugiego i przekazuje mu sterowanie. W sytuacji, gdy operacja dotyczy wielu obiektów danej klasy lub niesprecyzowanego obiektu podaje się tylko nazwę klasy (:Klasa2), zaś w przypadku gdy operacja odnosi się do konkretnego obiektu, nazwę klasy poprzedza się jego nazwą (O:Klasa1)
Diagram sekwencji Format: Nazwa [ selektor]:nazwa klasy ref dekompozycja Przykładowa nazwa uczestnika Admin :ContentManagementSystem admin:administrator eventhandlers[2]:eventhandler :ContentManagementSystem ref cmsinteraction Opis Część nosi nazwę admin, jednak w tym momencie nie ma przypisanej klasy. Klasa uczestnika nosi nazwę ContentManagementSystem, jednak w danym momencie część nie ma swojej własnej nazwy Jest to część nosząca nazwę admin, utworzona na podstawie klasy Administrator. Jest to część zapisana jako element tablicy o indeksie 2, utworzona na podstawie klasy EventHandler. Uczestnik utworzony został na podstawie klasy ContentManagementSystem. Istnieje również inny diagram interakcji o nazwie cmsinteraction, przedstawiający wewnętrzne działanie danego uczestnika.
Diagram sekwencji Komunikat to forma kontaktu pomiędzy obiektami, której efektem ma być podjęcie przez docelowy obiekt pewnej akcji. Otrzymanie komunikatu przez obiekt wiąże się z wykonaniem przez niego jego własnego kodu lub wysłaniem kolejnego komunikatu do innego obiektu w celu wykonania przez niego pewnej akcji. Komunikaty w UML są reprezentowane przez strzałki łączące linie życia poszczególnych obiektów. Każdy komunikat wewnątrz interakcji opatrzony jest kolejnym numerem, co pozwala na łatwe śledzenie jej przebiegu. Istnieją trzy podstawowe komunikaty, jakie mogą zostać wymienione pomiędzy obiektami: wywołanie procedury, powrót z niej wywołanie asynchroniczne.
Diagram sekwencji wywołanie procedury powrót z wywołania wywołanie asynchroniczne komunikat tworzenia uczestnika komunikat usuwania uczestnika
Diagram sekwencji 1. Zainicjowanie działań przez aktora. 1.1 Obiekt O:Klasa1 tworzy jakiś niesprecyzowany obiekt :Klasa2. 1.2 Obiekt O:Klasa1 wywołuje metodę Wywołanie(p1,p2) obiektu :Klasa2 i czeka na jej zakończenie. 1.2.1 Obiekt :Klasa2 zwraca wynik wywołanej metody (Powrót) i oddaje sterowanie. 1.3 Obiekt O:Klasa1 wywołuje własną metodę. 2. Obiekt O:Klasa1 otrzymuje jakąś wiadomość lub wywołanie spoza sekwencji. 2.1 Obiekt :Klasa2 wysyła wiadomość lub wywołuje metodę poza sekwencję. 2.2 Obiekt O:Klasa1 wywołuje metodę obiektu :Klasa2. Czas wywołania przekracza 5 ms. 2.2.1 Obiekt :Klasa2 zwraca wynik wywołania. Czas zwrotu wyniku przekracza 5 ms. 2.3 Obiekt O:Klasa1 wywołuje operację na sobie. 2.4 Obiekt O:Klasa1 już nie potrzebuje obiektu :Klasa2 więc go niszczy.
Diagram sekwencji Wywołania mogą być grupowane w bloki: alt (alternative ) - określający warunek wykonania bloku operacji, odpowiadający instrukcji if-else ; warunek umieszcza się wówczas wewnątrz bloku w nawiasach kwadratowych opt (optional ) - reprezentujący instrukcję if (bez else ) par (parallel ) - nakazujący wykonać operacje równolegle critical - blok atomowy, oznaczający obszar krytyczny loop - definiujący pętlę typu for (o określonej z góry liczbie iteracji) lub while (wykonywanej dopóki pewien warunek jest prawdziwy) break - wykonanie fragmentu i zakończenie interakcji seq - słaba sekwencja (podobnie do współbieżności) dotyczy zdarzeń z kilku linii ignore/ consider - ignore(komunikat1, komunikat2,...) oznacza, że na diagramie nie pokazano wymienionych komunikatów, choć mogą wystąpić. Consider = odwrotnie
Zasady tworzenia diagramów sekwencji Nazywaj aktorów w sposób spójny z diagramami przypadków użycia Nazywaj obiekty/klasy w sposób spójny z diagramami klas Po lewej stronie umieszczaj aktorów, którzy są ludźmi lub organizacjami Po prawej stronie umieszczaj aktorów, którzy są innymi systemami reagującymi na działanie modelowanego systemu Po lewej stronie umieszczaj aktorów, którzy są systemami inicjującymi interakcją z modelowanym Aktor może mieć tą samą nazwę co klasa Jeżeli nie jest to niezbędne - nie umieszczaj niszczenia (destroy) obiektu Umieszczaj nazwę obiektu jeżeli występuje odwołanie do niej w komunikacie Umieszczaj nazwę obiektu jeżeli istnieje wiele obiektów tej samej klasy Jeżeli umieszczono kilka obiektów o tej samej nazwie, muszą pochodzić z różnych klas Przy aktorach i obiektach/klasach umieszczaj stereotypy informujące o warstwie systemu, w której one działają Umieszczaj najważniejsze komunikaty (zwykle) Jeżeli komunikat jest wysyłany do obiektu/klasy, który jest implementowany jako składnik oprogramowania (klasa, interfejs, komponent), nazywaj komunikat z użyciem składni języka programowania Jeżeli komunikat wymaga przekazania parametrów, podaj ich nazwy, a nie same typy danych Komunikaty wychodzące od aktorów, którzy są osobami lub organizacjami, nazywaj w sposób opisowy (zdaniem) Komunikaty przesyłane do klas (nie obiektów) implementowane są jako metody statyczne Przy włączaniu innych przypadków użycia do aktualnie modelowanego stosuj komunikaty ze stereotypem << include >> Komunikat tworzący obiekt oznaczaj stereotypem << create >> Aktywacja nie jest obowiązkowym elementem linii życia, ale ułatwia zrozumienie diagramu - podkreśla czas trwania danej operacji
Zadanie 1 Obiekt Kasjerka szuka, czy na danej trasie w danym terminie jest dostępna określona ilość biletów. W tym celu tworzy obiekt Wyszukiwanie i zadaje mu odpowiednie pytanie. Obiekt ten pyta się wszystkie N pociągów czy jeżdżą daną trasą. Jeśli pociąg jeździ tą trasą, jest pytany o dostępność biletów. Jeśli bilety są dostępne, Wyszukiwanie dodaje pociąg do swojej wewnętrznej listy. Po przeszukaniu listy pociągów Wyszukiwanie zwraca Kasjerce informację o pociągach, po czym Kasjerka pozbywa się obiektu Wyszukiwanie.
Zadanie 2 Obiekt Urzędnik musi zdefiniować rozliczenia podatkowe i działalność gospodarczą petenta. W tym celu tworzy sobie obiekt roboczy Wyszukiwanie i każe mu znaleźć użytkownika o konkretnym PESEL-u. Gdy petent zostaje znaleziony, powiadamiany jest o tym Urzędnik, który informuje Wyszukiwanie o typie rozliczeń. Wyszukiwanie wywołuje nadanie NIP-u konkretnemu Petentowi, a tenże obiekt informuje o tym obiekt Urząd Skarbowy, który tworzy nowy obiekt Wpis. Jeśli nadanie NIP-u dotyczy działalności gospodarczej. Wyszukiwanie wywołuje nadanie REGON-u konkretnemu Petentowi, a jeśli dotyczy rozliczeń indywidualnych, określa próg dochodów Petenta. Wyszukiwanie zwraca Urzędnikowi informację o zakończeniu działań, wtedy Urzędnik pozbywa się Wyszukiwania.
Zadanie 3 Obiekt Pracownik Firmy wypożyczającej łodzie tworzy obiekt tymczasowy wyszukiwania rezerwacji jachtu. Ten sprawdza czy jacht danego typu jest dostępny w danym terminie (pierwszy wolny jacht). Jeśli tak, dokonywana jest rezerwacja, jeśli nie, odbywa się wyszukiwanie jachtu o większej pojemności (pierwszy wolny jacht). Jeśli taki się nie znajdzie, pracownik otrzymuje informację o braku takiego obiektu (na przykład zwrot pustej tablicy), jeśli zaś się znajdzie, pracownik decyduje, czy wziąć jacht, czy nie. W przypadku niewzięcia jachtu obiekt wyszukiwania rezerwacji jest niszczony, w przeciwnym przypadku pracownik przesyła wyszukiwaniu rezerwacji informacje o kliencie, a obiekt ten tworzy obiekt rezerwacji właściwej, w który wprowadzane są dane jachtu, klienta i terminu, a jacht zostaje oznaczony jako zarezerwowany. Gdy zabieg się powiedzie, pracownik niszczy obiekt wyszukiwania.