Diagramy interakcji służą do przedstawienia współpracy oraz w sposób sekwencyjny komunikacji pomiędzy aktorami eksploatującymi system. Są to diagramy kooperacji oraz diagramy przebiegu (sekwencji).

Diagram kooperacji

Jest niczym innym jak przedstawieniem obiektów biorących udział w akcji jako wierzchołków grafu, a obrazowanie powiązań między obiektami zilustrowane jest krawędziami tak powstałego grafu. Krawędzie te opisujemy komunikatami i skierowujemy za pomocą strzałki obrazując kierunek przepływu komunikatu. Diagram ten ilustruje więc przepływ sterowania w kontekście organizacji strukturalnej współpracujących (kolaborujących) obiektów. Nie są one osadzone w czasie – i to różni ten diagram od diagramu sekwencji, chociaż sekwencję komunikatów mogą (i to czynią) reprezentować numery nadane przekazywanym komunikatom1w ramach zagnieżdżania się komunikacji pomiędzy obiektami komunikaty oznaczane są zgodnie z notacją Dewey’a czyli. 1., 1.1, 1.2, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.4, 2., 2.1, 2.2, 3., … na dowolną głębokość zagnieżdżenia. Także wydzielenie ścieżek pomiędzy obiektami jest cechą odróżniającą ten diagram od diagramu sekwencji.

Diagram ten może opisywać kooperację dla całego, bądź tylko dla fragmentu przypadku użycia wyszczególnionego na Diagramie Przypadków Użycia. Dla przykładu z biblioteką UC.wypożyczenieKsiążki może przybrać następującą postać:

Diagram kooperacji (kolaboracji)

Odpowiadający mu diagram klas zachowuje taką postać:

Diagram klas

W celu właściwej kompozycji diagramu kooperacji skorzystaj z notatek i kolorów dla uwypuklenia najważniejszych elementów systemu. Diagram ten służy do podkreślenia związków strukturalnych zachodzących pomiędzy obiektami. Jeśli chcesz przedstawić kolejność komunikacji w czasie – odnieś się do niej raczej w diagramie sekwencji.

Diagram sekwencji

Diagram sekwencji (czyli przebiegu) ma za zadanie zilustrować przepływ komunikatów pomiędzy obiektami umiejscowiony w linii czasowej (czas “biegnie” od góry diagramu w jego dół). U góry diagramu umieszczamy wszystkich obiektów uczestniczących w interakcji. Zazwyczaj obiekt inicjujący umieszczany jest z lewej strony diagramu i biegnie pionowo przez całą jego długość w postaci prostokąta na osi czasu. Obiekty zależne i/lub podrzędne umieszcza się na prawo od obiektu głównego. Cechami takiego diagramu są linie życia (lifeLine) obiektów – pionowe, przerywane osie na których umieszcza się obiekty w postaci prostokątów, a które to odwzorowują czas istnienia obiektu od jego stworzenia (stereotyp: create) do śmierci (stereotyp: destroy – oznaczony na osi życia obiektu jako X). Drugą cechą charakterystyczną są prostokąty obiektów odwzorowujące punkt przyjęcia komunikatu do jego zwrotu do obiektu nadrzędnego (lub czas realizacji zadania) – są to tzw. ośrodki sterowania. Linie życia jak i ośrodki sterowania nie są odwzorowywane na diagramach kooperacji.

Diagramy sekwencji nie pokazują explicite powiązań między obiektami, ale sygnalizują gdzie takie asocjacje powinny się znajdować dla umożliwienia przepływu komunikatów.

Diagram sekwencji (przebiegu)
Alternatywny diagram sekwencji

Wymienione wyżej diagramy sekwencji sygnalizują przepływ komunikatów i ich usytuowanie na linii czasu, jednakże charakterystyka ich realizacji wskazuje na zastosowanie w małych systemach przetwarzania w czasie rzeczywistym. Takie same charakterystyki dla dużego systemu będą nieadekwatne, nie uwzględniają bowiem podstawowej złożoności systemu i jego zadaniowej realizacji czasowej (zadania NIE SĄ wykonywane natychmiast, a wyniki NIE SĄ raportowane natychmiast). Zazwyczaj praca dużych systemów (lub systemów rozproszonych) wymaga uwzględnienia interwału czasowego na reakcję/odpowiedź. Bardziej adekwatnym do takich będą diagramy z przesunięciem czasowym np. taki jak przedstawiony poniżej.

Diagram sekwencji z ramami czasowymi

Jak można zauważyć powyżej procesy są przesunięte względem siebie uwzględniając zwłokę wynikającą z architektury systemu. Można także zauważyć warunki komfortu (kryteria jakościowe) nałożone na linię czasu t.j. przewidywany czas życia (działania) procesu.

Diagramy kooperacji i przebiegu są rzutami w modelu dynamiki systemu. Zazwyczaj uzupełniają się pozwalając na spojrzenie z różnych perspektyw (i w różnej skali abstrakcji!!!). Porządnie skonstruowany model systemu zawiera wiele diagramów interakcji na różnym poziomie szczegółowości, dla uwzględnienia w modelu dynamiki działania systemu jako całości, jego składowych, operacji, klas, przypadków użycia i kooperacji.

Pojedynczy diagram winien uwypuklać jeden dynamiczny aspekt systemu z użyciem tylko tych bytów, które są do tego zobrazowania niezbędne w odpowiedniej skali uszczegółowienia, by nie był zbyt ogólny, ani też poziom przybliżenia szczegółów nie zasłonił istoty działania, którą ma obrazować.

W celu wykonania czytelnego diagramu sekwencji należy przemyśleć kolejność umieszczenia osi obiektów, by uniknąć nadmiernego przecinania się linii komunikatów. W przypadku złożonych rozgałęzień właściwszym będzie stworzenie diagramu czynności.

Rodzaje interakcji są przedstawione na poniższym diagramie

Rodzaj interakcjiSymbolZnaczenie
synchroniczna
(synchronous)
"Normalna" proceduralna sytuacja. Nadawca zawiesza działanie, dopóki odbiorca nie zwróci sterowania. Można to oznaczyć wykorzystując symbol powrotu.
powrót
(return)
Powrót nie jest komunikatem. Oznacza zakończenie komunikatu i przekazanie sterowania do nadawcy.
jednostronna
(flat)
Nadawca komunikatu przekazuje sterowanie do odbiorcy oraz kończy własną działalność nie oczekując na odpowiedź.
asynchroniczna
(asynchronous)
Nadawca komunikatu nie oczekuje na odpowiedź odbiorcy, ale też i nie kończy własnej aktywności, co oznacza, że nadal przetwarza i może wysyłać komunikaty. Uwaga: w publikacjach, dla specyfikowania interakcji asynchronicznej, używany jest często symbol taki, jak dla interakcji jednostronnej.