Diagram Sekwencji

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

DIAGRAM SEKWENCJI

W języku UML, podstawowym sposobem na pokazanie dynamicznej wymiany komunikatów między


obiektami są diagramy sekwencji. Diagramy te doskonale nadają się do pokazywania wymiany
komunikatów w czasie. Komunikaty zaznaczane są poziomymi strzałkami skierowanymi od nadawcy
do odbiorcy komunikatu. Sekwencja komunikatów czytana jest od góry do dołu, odzwierciedlając
upływ czasu.

Zwykle diagram sekwencji przedstawia zachowanie systemu dotyczące jednego przypadku użycia. Są
użyteczne do przedstawiania współpracy obiektów.

Podstawą diagramów sekwencji są pionowe kolumny zwane liniami życia (ang. lifeline). Każda linia
życia odpowiada pojedynczemu obiektowi uczestniczącemu w sekwencji. Linia życia rozpoczyna się od
góry symbolem reprezentującym obiekt. Od obiektu biegnie pionowo w dół przerywana linia
oznaczająca czas życia tego obiektu. Najczęściej obiekty żyją przez cały czas trwania interakcji, czyli linia
obejmuje cały diagram od góry do dołu. Linie życia mogą reprezentować obiekty rożnego rodzaju.
Mogą to być klasy, interfejsy, komponenty lub aktorzy. Jeżeli diagram sekwencji ma prezentować
sposób działania jakiegoś podsystemu, najpewniej będzie on zawierał jedynie obiekty odpowiednich
klas. Jeżeli zechcemy opisać diagramem sekwencji realizację przypadku użycia, to co najmniej jedna
linia życia powinna odpowiadać aktorowi.

Komunikaty rysowane są na diagramie sekwencji między jedną linią życia a drugą. Komunikat ma
najczęściej nazwę. Nazwa ta zazwyczaj odpowiada nazwie operacji zawartej w klasie związanej z linią
życia odbiorcy komunikatu. Obsługa komunikatu, czyli wykonanie usługi przez odbiorcę, zaznaczana
jest pionową belką umieszczoną wzdłuż linii życia. Belka kończy się w momencie zakończenia
wykonywania usługi. Rysunek 1.1 przedstawia przykładowy diagram sekwencji obrazujący wykonanie
przypadku użycia na poziomie architektonicznym – komunikaty wymieniane są pomiędzy interfejsami.
Można wyróżnić dwa rodzaje komunikatów: synchroniczne i asynchroniczne.

Komunikaty synchroniczne zaznaczane są strzałkami z pełnym grotem. Dla komunikatu


synchronicznego belka na linii życia wyznacza czas, w którym wykonywany jest kod operacji
obsługującej ten komunikat. Po zakończeniu obsługi komunikatu, sterowanie powraca do obiektu,
który był nadawcą komunikatu. Powrót sterowania oznacza się komunikatem zwrotnym w postaci
przerywanej strzałki. Komunikat zwrotny może być opisany np. wynikiem wykonania operacji.

Komunikaty asynchroniczne zaznaczane są za pomocą strzałek z otwartymi grotami. Komunikat


asynchroniczny oznacza, że jego przesłanie powoduje uruchomienie działania operacji niewymagającej
na końcu synchronizacji z obiektem wywołującym tę operację, tzn. nadawca komunikatu nie oczekuje
biernie na zakończenie wykonywania operacji związanej z tym komunikatem. Komunikaty
asynchroniczne nie wymagają więc przesyłania komunikatów powrotnych przez odbiorcę.

Na diagramach sekwencji możliwe jest zaznaczenie utworzenia (konstrukcji) nowego obiektu. W tym
celu należy umieścić na diagramie odpowiedni komunikat tworzący obiekt. Oznaczany on jest strzałką
z otwartym grotem, przy czym konstruowany obiekt umieszczony jest na linii życia na poziomie
komunikatu tworzącego obiekt. Destrukcja obiektu, oznaczająca usunięcie go z pamięci, rysowana jest
w postaci znaku X umieszczonego na końcu linii życia obiektu.
Bardzo przydatnymi elementami, które możemy wykorzystywać na diagramach sekwencji są tzw.
fragmenty włączone (ang. combined fragment). Fragmenty takie umieszcza się na diagramach w
postaci ramki z nagłówkiem, która obejmuje pewien zbiór komunikatów. Fragment włączony oznacza
pewien fragment diagramu sekwencji stanowiący osobną interakcję wykonywana w określony sposób
pod określonymi warunkami. W nagłówku ramki określony jest typ fragmentu włączonego oraz,
ewentualnie, jego nazwa. Wewnątrz fragmentu umieszczany jest jeden lub więcej warunków. Jeżeli
warunków jest kilka, to cały fragment podzielony jest na tyle części, ile jest warunków. Części
oddzielone są pozioma przerywaną linią. Istnieje wiele typów fragmentów włączonych. Najważniejsze
z nich są następujące:

 „alt” (alternatywa) – zawiera dwie lub więcej części z warunkami rozłącznymi. Wykonywana jest
interakcja zawarta w tej części, dla której warunek jest spełniony. Fragment ten działa na
podobnej zasadzie jak instrukcja „if-else” w większości języków programowania. Rysunek 1.1
przedstawia przykład tego typu ramki.
 „opt” (opcja) – zawiera dokładnie jedną część opisaną warunkiem. Interakcja zawarta w tej
części jest wykonywana wtedy, gdy warunek jest spełniony. Odpowiada to pojedynczej instrukcji
„if” w języku programowania.
 „loop” (pętla) – zawiera dokładnie jedną część z warunkiem. Wykonywanie sekwencji
komunikatow zawartej w tej części powtarzane jest dotąd, aż zostanie spełniony warunek
zakończenia pętli. Warunek może zawierać liczbę określającą ilość iteracji lub warunek logiczny
zakończenia pętli. Fragment ten działa na podobnej zasadzie jak instrukcje „for” czy „while”
spotykane w rożnych językach programowania.
 „break” (przerwanie) – zawiera jedną lub więcej części z warunkami. Po wykonaniu interakcji
zawartej w części, dla której spełniony jest warunek, przerywane jest wykonywanie całej
sekwencji w ramach aktualnej interakcji. Odpowiada to instrukcji „break” występującej w
większości języków programowania.
 „par” (zrównoleglenie) – zawiera kilka części, które mogą być wykonywane równolegle. W
ramach takiego wykonania może następować przeplatanie komunikatów między sekwencjami
zawartymi w rożnych częściach.
Ćwiczenie

1. Proszę utworzyć diagram sekwencji i utworzyć linie życia dla obiektów utworzonych w punkcie 1.
2. Proszę utworzyć sekwencję komunikatów przesyłanych pomiędzy liniami życia obiektów w celu
zamodelowania dynamiki wybranego zagadnienia zgodnie ze scenariuszem:
a) Kierowca przekręca kluczyk.
b) Samochód uruchamia silnik.
c) Kierowca włącza sprzęgło, a następnie zmienia bieg. Samochód zmienia bieg.
d) Kierowca dodaje gazu.
e) Samochód zwiększa obroty silnika.
f) Kierowca wciska hamulec.
g) Samochód zmniejsza obroty silnika.
h) Kierowca wyłącza sprzęgło.
i) Kierowca wyłącza silnik.
j) Samochód wyłącza silnik.

You might also like