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