Niniejszy rozdział przybliża technikę, która umożliwia modelowanie przepływu sterowania z uwzględnieniem komunikatów w czasie. Celem tego rozdziału jest zaprezentowanie diagramów, które umożliwiają modelowanie interakcji pomiędzy obiektami wraz z komunikatami, jakie między nimi przepływają.

Diagram sekwencji – definicja i zastosowanie

Diagram sekwencji (ang. sequence diagram) służy do prezentowania interakcji pomiędzy obiektami wraz z uwzględnieniem w czasie komunikatów, jakie są przesyłane pomiędzy nimi. Na diagramie sekwencji obiekty ułożone są wzdłuż osi X, a komunikaty przesyłane są wzdłuż osi Y. Zasadniczym zastosowaniem diagramów sekwencji jest modelowanie zachowania systemu w kontekście scenariuszy przypadków użycia. Diagramy sekwencji pozwalają uzyskać odpowiedź na pytanie, jak w czasie przebiega komunikacja pomiędzy obiektami. Dodatkowo diagramy sekwencji stanowią podstawową technikę modelowania zachowania systemu, które składa się na realizację przypadku użycia.

Diagram sekwencji – notacja i semantyka

W celu budowania diagramów sekwencji należy najpierw poznać elementy (klocki), z jakich te diagramy powstają. Poniżej zamieszczono notację wraz
z opisem najważniejszych elementów służących do kreowania diagramów sekwencji.

Linia życia

najczesciej_stosowana_notacja_UML_2011_html_509495d1

Rysunek 90. Linia życia – notacja

Linia życia to rola uczestnika interakcji, jaką pełni w czasie jej trwania. Linia życia reprezentuje współuczestnika interakcji i czas jego istnienia podczas realizacji scenariusza. Linie życia reprezentują konkretne byty – obiekty, systemy i mogą przyjmować stereotypy, które świadczą o roli, jaką pełni dany obiekt
w systemie. Takimi stereotypami mogą być aktor (ang. actor), obiekt klasy granicznej (ang. boundary class), obiekt klasy sterującej (ang. control class), obiekt klasy danych (ang. entity class).

najczesciej_stosowana_notacja_UML_2011_html_m4c0aae15

Rysunek 91. Różne typy stereotypów linii życia

Wymienione rodzaje stereotypów obiektów służą do wskazania, jaką rolę w systemie pełni obiekt. Stereotyp aktora informuje, że obiekt ten pełni funkcję zewnętrzną w stosunku do systemu. Obiekt klasy granicznej reprezentuje interfejs między systemem a bytami występującymi poza nim. Obiekt klasy sterującej używany jest do sterowania działaniem jednej lub wielu klas. Natomiast obiekt klasy danych, stosowany jest do reprezentowania danych, które muszą być zachowane w systemie.

Komunikat

image

Rysunek 92. Komunikat – notacja

Komunikat (ang. message) jest to informacja przesyłana pomiędzy obiektami. W języku UML można korzystać z różnych typów komunikatów (rys. 93). Komunikat synchroniczny oznacza, że obiekt musi czekać na odpowiedź. Komunikat asynchroniczny nie wymaga oczekiwania na odpowiedź.

najczesciej_stosowana_notacja_UML_2011_html_m6e3dffeb

Rysunek 93. Rodzaje komunikatów na diagramach sekwencji

Stosując na diagramie komunikaty synchroniczne, przyjmuje się, że natychmiast po jego wywołaniu przychodzi odpowiedź. Taka konwencja pozwala na zmniejszenie liczby elementów na diagramie. W sytuacji, gdy modelowany fragment rzeczywistości jest inny niż założenia konwencji, należy umieścić komunikat zwrotny.

Kolejnym typem wiadomości jest wiadomość wewnętrzna, którą obiekt wysyła sam do siebie. Tego typu wiadomości używa się na przykład w sytuacji, gdy obiekt wywołuje swoją własną metodę.  Ostatnim rodzajem komunikatów są komunikaty, które tworzą obiekt lub kasują go. Na zamieszczonym przykładzie (rys. 94) zaprezentowano oba rodzaje komunikatów. Komunikatem tworzącym obiekt jest „create()”, który tworzy obiekt „Usługa1”. Wygenerowany obiekt różni się od pozostałych (istniejących przez cały czas trwania scenariusza) tym, że jest umieszczony niżej względem nich.

Komunikat „destroy()” jest odpowiedzialny za zniszczenie obiektu, co jest zobrazowane znakiem X na końcu linii życia obiektu „Usługa1”.

najczesciej_stosowana_notacja_UML_2011_html_2ce1d8ef

Rysunek 94. Przykładowe zastosowanie komunikatów

Fragment

najczesciej_stosowana_notacja_UML_2011_html_79c0026b

Rysunek 95. Fragment – notacja

Fragment (ang. combined fragment) to konceptualnie zamknięta część diagramu sekwencji, która rozszerza możliwości obejmowanego przez siebie obszaru diagramu sekwencji. Fragment może zawierać w sobie pętle, powtórzenia, scenariusze alternatywne lub wskazywać poziom abstrakcji modelowanego fragmentu systemu.

Rodzaj fragmentu jest określany poprzez umieszczenie odpowiedniego słowa kluczowego w lewym górnym rogu. Poniżej opis wszystkich słów kluczowych, które mogą wystąpić we fragmentach.

  • alt – dzieli fragment interakcji zgodnie z warunkami logiki Boole’a na dwa alternatywne scenariusze; każda  z alternatyw musi być opatrzona warunkiem dozoru, którego spełnienie gwarantuje wykonanie danej alternatywy.
  • assert – prezentuje fragment interakcji, który musi być wykonany zgodnie z założonymi warunkami i komunikatami.
  • break – wskazuje fragment diagramu sekwencji, który realizowany jest po spełnieniu warunku dozoru; spełnienie warunku dozoru skutkuje wykonaniem sekwencji komunikatów zawartych we fragmencie, a następnie wyjście ze scenariusza; w przypadku, gdy warunek dozoru nie jest spełniony, komunikaty zawarte we fragmencie są pomijane.
  • consider – wskazuje fragment z listą nazw komunikatów, które są wyselekcjonowane w tej części interakcji; oznacza to, że mimo innych komunikatów, które znajdują się w danej części interakcji, pokazane zostaną tylko te, które są wypisane w za słowem kluczowym consider.
  • critical – wskazuje, że dany fragment diagramu sekwencji nie może być przerwany przez inny proces.
  • ignore – wskazuje, że w tym fragmencie interakcji znajdująsię wiadomości, które zostały pominięte, gdyż ich widoczność nie zmienia zachowania systemu; zignorowane wiadomości są wylistowane po słowie ignore.
  • loop – powtórzenie fragmentu interakcji określoną warunkiem liczbę razy.
  • neg – fragment prezentujący jedną lub więcej wiadomości, które są prawdopodobnie nieprawidłowe.
  • opt – wskazuje opcjonalny fragment interakcji, który jest wykonywany po spełnieniu warunku dozoru.
  • par – prezentuje równoległe wykonywanie przepływu wiadomości.
  • seq – wskazuje słabo uszczegółowiony fragment sekwencji, tzn. taki, który jest ogólny.
  • strict – prezentuje szczegółową, całkowitą komunikację pomiędzy obiektami.

Możliwość stosowania fragmentów w diagramach sekwencji pomaga przy modelowaniu scenariuszy.

Na pierwszym przykładzie zaprezentowano fragment ze słowem kluczowym par, który wskazuje na dwa komunikaty, które przebiegają równolegle pomiędzy tymi samymi obiektami. Natomiast drugi fragment, z parametrem alt pozwala na wydrukowanie Karty Wypożyczenia w sytuacji, gdy zostanie spełniony warunek „klient potrzebuje kopię Karty Wypożyczenia”.

image

Rysunek 96. Praktyczne zastosowanie fragmentów: parallel i alt

Na kolejnym przykładzie zaprezentowano dwa ciekawe typy fragmentów, jakimi są consider i ignore. Oba fragmenty służą filtrowaniu komunikatów tak, by móc zostawić tylko te wiadomości, które są najważniejsze w danym modelu. Zastosowanie słowa kluczowego ignore i wymienienie po nim nazw komunikatów wskazuje, jakie komunikaty zostały pominięte na diagramie. Natomiast nazwy komunikatów wymienione po parametrze consider wskazują, jakie komunikaty mogą być pokazane w danym obszarze interakcji. Dla porównania zamieszczono ten sam fragment diagramu sekwencji.

image

Rysunek 97. Charakterystyczne cechy fragmentów ignore i consider

Wystąpienie interakcji

najczesciej_stosowana_notacja_UML_2011_html_m2a10c1a7

Rysunek 98. Wystąpienie interakcji – notacja

Wystąpienie interakcji (ang. interaction occurence) jest odniesieniem (referencją) do interakcji, której obraz przedstawiony jest na innym diagramie. Użycie referencji pomaga uczynić diagram czytelniejszym, gdyż pozwala na ukrycie szczegółów nieistotnych z punktu widzenia modelowanej sytuacji. Zamieszczony przykład przedstawia sytuację, gdy scenariusz „Sprawdź listę wypożyczeń” wymaga zalogowania się pracownika do systemu.

image

Rysunek 99. Przykład użycia wystąpienia iteracji

Logowanie jest procesem, którego złożoność mogłaby zakłócić przewodnią ideę diagramu „Sprawdź listę wypożyczeń”.

Dodatkowo zastosowanie referencji do innego diagramu umożliwia wykorzystanie tych samych elementów modelu w wielu miejscach projektu.

Punkt końcowy i startowy

najczesciej_stosowana_notacja_UML_2011_html_m4f545056

Rysunek 100. Punkt końcowy i punkt startowy – notacja

Punkt końcowy (ang. end point) i punkt startowy (ang. found point) to elementy prezentujące byty spoza diagramu sekwencji, który jest nieznanym źródłem wiadomości lub nieznanym celem wiadomości.

Punkt końcowy wskazuje na nieznany byt poza diagramem sekwencji. Natomiast punkt startowy umożliwia dostarczenie zewnętrznego komunikatu bez przedstawiania bytu.

Na zaprezentowanym przykładzie przedstawiono proste zastosowanie dla punktu startowego i końcowego.

Na diagramie z rysunku 101 widać, że interfejs I_GeneratorRaportów otrzymuje od nieznanego bytu zewnętrznego komunikat z prośbą o miesięczny przychód. Po wykonaniu sekwencji czynności, zanim podsumowanie zostaje wyświetlone na interfejsie I_GeneratorRaportów, informacja o przychodzie jest wysyłana do nieznanego bytu zewnętrznego.

najczesciej_stosowana_notacja_UML_2011_html_m1e8e8ef5

Rysunek 101. Przykład zastosowania punktu końcowego i początkowego

Punkty startowy i końcowy pozwalają już we wczesnej fazie projektowania, na określenie komunikatów, które są wysyłane do – w danym momencie jeszcze bliżej nieokreślonych – bytów. W czasie dalszego uszczegóławiania modelu punkty te mogą zostać zamienione na konkretne, istniejące w systemie byty.

Brama

najczesciej_stosowana_notacja_UML_2011_html_68549524

Rysunek 102. Brama – notacja

Brama (ang. gate) to element stanowiący łącznik pomiędzy diagramami sekwencji lub fragmentami diagramów sekwencji. Brama jest elementem granicznym, który łączy interakcję z jego uszczegóławiającym fragmentem. Brama jest specjalizowaną formą punktu końcowego. Element brama jest używany jako punkt graniczny pomiędzy dwoma diagramami sekwencji bądź między diagramem sekwencji a fragmentem
go uszczegóławiającym.

Diagram sekwencji – przykładowe zastosowanie

Diagram sekwencji jest jedną z podstawowych technik modelowania w języku UML. Służy on do prezentowania scenariuszy. Przykładem takiego scenariusza jest „Zwrot samochodu do wypożyczalni”. Po okresie wynajmu klient oddaje w oznaczonym czasie i miejscu samochód. Serwisant sprawdza stan pojazdu, po czym zaznacza swoje obserwacje w systemie. Diagram sekwencji pokazuje, jak w czasie komunikują się ze sobą obiekty podczas realizacji odnotowywania zauważonych usterek samochodu.

Na diagramie tym, po uruchomieniu formularza, w przypadku braku autoryzacji następuje przekierowanie poprzez referencję do innego diagramu – diagramu „Logowanie”. Konwencja nakazuje, by referencja pokrywała wszystkie linie życia, lecz w tym przypadku za pomocą elementu bramy „wyniesiono” referencję poza diagram sekwencji. Po zalogowaniu serwisant wyszukuje w systemie zwrócony samochód podając jako słowo kluczowe nr rejestracyjny.  Następnie, dzięki fragmentowi ze słowem kluczowym loop przedstawiono pętlę, która występuje tyle razy, ile uwag lub usterek znalazł serwisant. W pętli tej zawarto komunikaty odpowiedzialne za wprowadzenie i zapamiętanie w systemie usterki pojazdu.

image

Rysunek 103. Przykładowy diagram sekwencji

Pozostałe diagramy UML:

Chcę otrzymywać powiadomienia o nowych wpisach na tym blogu

Wyrażam zgodę na przetwarzanie powyższych danych. Potwierdzam zapisanie się na newsletter w celu otrzymywania powiadomień o nowych wpisach. (Mogę wypisać się w dowolnym momencie)

FreshMail.pl
 
Close