200 likes | 327 Views
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Diagramy interakcji. Podstawowe pojęcia. Interakcja ( interaction ) Przepływ komunikatów pomiędzy obiektami konieczny dla wykonania określonego zadania. Interakcja występuje w kontekście kolaboracji. Kolaboracja ( collaboration )
E N D
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania Diagramy interakcji
Podstawowe pojęcia • Interakcja (interaction) • Przepływ komunikatów pomiędzy obiektami konieczny dla wykonania określonego zadania. Interakcja występuje w kontekście kolaboracji. • Kolaboracja (collaboration) • Zespół powiązań między obiektami umożliwiający ich interakcję dla wykonania określonego zadania. • Komunikat (message) • Przepływ informacji między obiektami pojawiający się w konsekwencji wystąpienia określonego zdarzenia. • Zdarzenie (event) • Wystąpienie sytuacji istotnej z punktu widzenia systemu. Zdarzenie zachodzi w pewnym niepodzielnym momencie czasu. Konsekwencją zdarzenia jest komunikat. Diagramy interakcji
Rodzaje diagramów interakcji • Diagramy kolaboracji (kooperacji, współpracy) • powiązania między obiektami • przepływ komunikatów wzdłuż powiązań • Diagramy sekwencji (przebiegu) • linie życia obiektów • przepływ komunikatów uporządkowany w czasie Diagramy interakcji
Zastosowanie diagramów interakcji • Opis działania systemu • Opis przypadków użycia • Opis scenariusza przypadku użycia • Opis operacji klasy Diagramy interakcji
Elementy diagramu kolaboracji numer porządkowy znacznik kierunku komunikat obiekt aktor 1: DoSomething() anObject:aClass Klient powiązanie Diagramy interakcji
Uwagi do diagramu kolaboracji (1/2) • Występujący aktorzy muszą być powiązani z danym przypadkiem użycia • Obiekty reprezentują obiekty globalne (dla całego systemu) lub lokalne (np. parametry operacji, zmienne lokalne) • Powiązania reprezentują drogi przepływu komunikatów. • Komunikaty mogą być przesyłane pomiędzy dwoma aktorami, aktorem a obiektem lub pomiędzy dwoma obiektami. • Komunikat reprezentuje przekazanie informacji (w przypadku aktora jako odbiorcy) lub wywołanie operacji (w przypadku obiektu jako odbiorcy). W tym drugim przypadku operacja musi być zdefiniowana w klasie odbiorcy. Diagramy interakcji
Uwagi do diagramu kolaboracji (2/2) • Przez jedno powiązanie może być przekazywanych wiele komunikatów w różne strony i w różnym czasie. Kierunek przepływu komunikatu określa strzałka. Kolejność przepływu komunikatu określają numery porządkowe. • Zamiast numeru porządkowego można podać zaawansowaną specyfikację przesłania komunikatu • W przypadku, gdy aspekt czasowy jest bardziej istotny, korzystniej jest użyć diagramu sekwencji. Diagramy interakcji
Opis komunikatu (1/3) • Numer porządkowy • może składać się z kilku segmentów, każdy segment jest liczbą całkowitą określającą kolejność na danym poziomie zagłębienia, np.: 1.2.1 poprzedza 1.2.2 oraz poprzedza 1.3 • komunikaty współbieżne określane są przez dodanie litery za numerem porządkowym, np.. 1.2a i 1.2b są współbieżne • Określenie komunikatu poprzedzającego • Zamiast numeru porządkowego danego komunikatu można podać numery porządkowe komunikatów poprzedzających (lista numerów oddzielonych przecinkami i zakończona znakiem „/”). • Dany komunikat zostanie przesłany tylko wówczas, gdy wszystkie poprzedzające go komunikaty zostaną przesłane (synchronizacja) Diagramy interakcji
Opis komunikatu (2/3) • Warunek strzegący, dozoru (guard condition) • Warunek strzegący to warunek, który musi być spełniony dla przesłania komunikatu. • Warunek strzegący podaje się w nawiasach kwadratowych, np. [n<10] • Określenie iteracji • Podanie klauzuli iteracji w nawiasach kwadratowych poprzedzonych znakiem „*” oznacza wielokrotne przesłanie komunikatu. • Klauzulę iteracji podaje się w określonym języku programowania lub w pseudokodzie, np.: *[i:=1..10] Diagramy interakcji
Opis komunikatu (3/3) • Zwracany wynik wynik := nazwa operacji (lista argumentów) • Lista argumentów • Jest listą wartości oddzielonych przecinkami, które są po kolei przypisywane do parametrów operacji. • Wartości są wyrażeniami w określonym języku programowania lub w pseudokodzie. • W wyrażeniach mogą występować wartości zwrotne z poprzedzających komunikatów Diagramy interakcji
Przykłady komunikatów • 1.2a: DoSomething() • 3, 5/7: DoSomething() • 4: [action=new] NewDocument(SelectType()) Diagramy interakcji
Elementy diagramu sekwencji obiekt aktor anObject:aClass linia życia Klient komunikat DoSomething() wektor przepływu komunikatu skupienie sterowania odpowiedź Diagramy interakcji
Uwagi do diagramu sekwencji • Diagram sekwencji i diagram kolaboracji są semantycznie równoważne. • Kierunek przepływu komunikatu określa zwrot wektora przepływu – przy jednym wektorze może wystąpić tylko jeden komunikat. • Numery porządkowe są zbędne – kolejność przepływu komunikatów określa uporządkowanie wektorów przepływu komunikatów w pionie – wzdłuż linii życia. • Można stosować warunki strzegące i specyfikacje iteracji. • Wektor odpowiedzi nie opisuje się – jeśli istotna jest wartość zwrotna, to przy wektorze zapytania podaje się zaawansowaną sygnaturę komunikatu. • Zamiast wektora odpowiedzi można zastosować zwykły wektor przepływu komunikatu. • Skupienie sterowania (focus of control) reprezentuje czas, w którym obiekt jest w stanie przyjmować i nadawać komunikaty (czas aktywności). Diagramy interakcji
Tworzenie i niszczenie obiektu Create() anObject:aClass Diagramy interakcji
Równoległe wątki sterowania anObject:aClass Diagramy interakcji
Rekurencja anObject:aClass Diagramy interakcji
Dokładne określenie czasu t1 {t2-t1<1 min} t2 t3 {t3’-t3<10 ms} t3’ Diagramy interakcji
Przykład diagramu sekwencji Lista klientów: Lista Rachunki niezapłacone: Lista Klient Sprzedawca 2: jest := Wyszukanie() 1: Zgłoszenie() 3:[nie jest] Podaj dane() 4: 3/ jest := Nowy klient() 5: [jest] nzap:=Wyszukanie() 6: akcja := Potwierdzenie zgłoszenia(nzap) Zamówienie: Zamówienia 7a:[akcja=nowy] Create() Diagramy interakcji
Przykład diagramu kolaboracji Lista klientów: Lista 2: jest := Wyszukanie() 4: 3/ jest := Nowy klient() 1: Zgłoszenie() 3:[nie jest] Podaj dane() 5: [jest] nzap:=Wyszukanie() Rachunki niezapłacone: Lista 6: akcja := Potwierdzenie zgłoszenia (nzap) Klient Sprzedawca 7a:[akcja=nowy] Create() Zamówienie: Zamówienia Diagramy interakcji
Literatura • Booch G, Rumbaugh J, Jacobson I: UML. Przewodnik użytkownika, WNT, Warszawa 2002 • Dennis A., Haley Wixom B., Tegarden D.: System Analysis & Design. An Object-Oriented Approach with UML, John Wiley & Sons, Inc., USA 2001 Diagramy interakcji