Modelowanie interakcji

Transkrypt

Modelowanie interakcji
Inżynieria oprogramowania
Jarosław Kuchta
Modelowanie 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.
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
Zastosowanie diagramów interakcji
•
•
•
•
Opis działania systemu
Opis przypadków użycia
Opis scenariusza przypadku użycia
Opis operacji klasy
Elementy diagramu kolaboracji
numer
porządkowy
komunikat
aktor
znacznik
kierunku
obiekt
1: DoSomething()
anObject:aClass
Klient
powiązanie
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.
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.
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)
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]
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
Przykłady komunikatów
• 1.2a: DoSomething()
• 3, 5/7: DoSomething()
• 4: [action=new] NewDocument(SelectType())
Elementy diagramu sekwencji
obiekt
aktor
anObject:aClass
linia życia
Klient
komunikat
DoSomething()
wektor przepływu komunikatu
skupienie sterowania
odpowiedź
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).
Tworzenie i niszczenie obiektu
Create()
anObject:aClass
Równoległe wątki sterowania
anObject:aClass
Rekurencja
anObject:aClass
Dokładne określenie czasu
t1
{t2-t1<1 min}
t2
t3
{t3’-t3<10 ms}
t3’
Przykład diagramu sekwencji
Lista klientów:
Lista
Klient
Rachunki
niezapłacone: Lista
Sprzedawca
1: Zgłoszenie()
2: jest :=
Wyszukanie()
3:[nie jest] Podaj
dane()
4: 3/ jest :=
Nowy klient()
5: [jest] nzap:=Wyszukanie()
6: akcja :=
Potwierdzenie
zgłoszenia(nzap)
7a:[akcja=nowy] Create()
Zamówienie:
Zamówienia
Przykład diagramu kolaboracji
2: jest := Wyszukanie() 
4: 3/ jest := Nowy klient() 
1: Zgłoszenie() 
 3:[nie jest] Podaj dane()
Klient
5: [jest] nzap:=Wyszukanie() 
 6: akcja :=
Potwierdzenie zgłoszenia Sprzedawca
(nzap)
Lista klientów:
Lista
Rachunki
niezapłacone: Lista
7a:[akcja=nowy] Create() 
Zamówienie:
Zamówienia
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