Niniejszy wpis prezentuje technikę modelowania przepływu sterowania z uwzględnieniem komunikatów w czasie. Celem jest omówienie diagramów sekwencji, które umożliwiają modelowanie interakcji pomiędzy obiektami wraz z komunikatami przepływającymi między nimi.
Diagram sekwencji – definicja i zastosowanie
Diagram sekwencji (ang. sequence diagram) służy do prezentowania interakcji pomiędzy obiektami z uwzględnieniem czasowego aspektu komunikatów przesyłanych między nimi. Kluczowe cechy:
- Obiekty układane są wzdłuż osi X.
- Komunikaty przesyłane są wzdłuż osi Y, reprezentując upływ czasu.
- Główne zastosowanie: modelowanie zachowania systemu w kontekście scenariuszy przypadków użycia.
- Pozwalają odpowiedzieć na pytanie: jak przebiega komunikacja pomiędzy obiektami w czasie?
- Stanowią podstawową technikę modelowania zachowania systemu w realizacji 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
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. Reprezentuje konkretne byty: obiekty, systemy (np.: komponenty)
Komunikat
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. 2). Komunikat synchroniczny oznacza, że obiekt musi czekać na odpowiedź. Komunikat asynchroniczny nie wymaga oczekiwania na odpowiedź.
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.
Fragment
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. Najpopularniejsze typy to:
- 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.
- loop – powtórzenie fragmentu interakcji określoną warunkiem liczbę razy.
- par – prezentuje równoległe wykonywanie przepływu wiadomości.
Możliwość stosowania fragmentów w diagramach sekwencji pomaga przy modelowaniu scenariuszy.
Diagram sekwencji przykład
Główne elementy diagramu to:
- Klient – inicjator procesu płatności
- System Rental – system obsługujący wynajem
- Bramka płatności – zewnętrzny system autoryzacji płatności
Przebieg interakcji:
- Klient inicjuje płatność.
- System Rental wysyła żądanie autoryzacji płatności do bramki płatności.
- Bramka płatności przetwarza żądanie i zwraca odpowiedź. Diagram pokazuje dwa możliwe scenariusze: a) Płatność zaakceptowana:
- Bramka zwraca kod 200 (sukces)
- System Rental zapisuje status płatności jako OK
- System potwierdza płatność klientowi
b) Płatność odrzucona:
- Bramka zwraca kod 40X (błąd)
- System Rental zapisuje status płatności jako Nie OK
- System informuje klienta o błędzie płatności
Diagram pokazuje asynchroniczną komunikację między systemami, co jest widoczne przez przerywane linie strzałek powrotnych. Prezentuje on również alternatywne ścieżki wykonania (zaakceptowana vs odrzucona płatność) za pomocą fragmentu oznaczonego jako „alt”.
Warto zauważyć, że diagram ten przedstawia uproszczony proces płatności, skupiając się na kluczowych interakcjach między uczestnikami systemu.
Podsumowanie
Diagramy sekwencji są potężnym narzędziem do modelowania dynamicznych aspektów systemu. Pozwalają na szczegółowe przedstawienie interakcji między obiektami w czasie, co jest kluczowe dla zrozumienia i projektowania złożonych systemów informatycznych. Ich elastyczność w reprezentowaniu różnych scenariuszy, w tym alternatywnych ścieżek i powtórzeń, czyni je nieocenionym narzędziem w procesie analizy i projektowania oprogramowania.
Pozostałe diagramy UML: