Diagramy interakcji. Opracowano w Lab. Informatyki AGH (Kraków)

Podobne dokumenty
Diagramy sekwencji. wymienianych między nimi

Wymiar poziomy: oś na której umieszczono instancje klasyfikatorów biorące udział w interakcji.

Inżynieria oprogramowania Jarosław Kuchta. Modelowanie interakcji

Diagramy interakcji. Jarosław Kuchta Dokumentacja i Jakość Oprogramowania

TECHNOLOGIE OBIEKTOWE WYKŁAD 2. Anna Mroczek

Projektowanie interakcji. Jarosław Kuchta

Diagram sekwencji. Komunikaty mogą być opisane w sposób sformalizowany. poprz / [warunek] *[iter] nr sekw : wynik := operacja(lista)

koniec punkt zatrzymania przepływów sterowania na diagramie czynności

UML. dr inż. Marcin Pietroo

Język UML w modelowaniu systemów informatycznych

UML - zarys 2007/2008

Znaleziony - jeżeli nadawca nie jest znany w obrębie danego fragmentu Utracony - jeżeli odbiorca komunikatu nie jest znany w obrębie danego fragmentu

Inżynieria oprogramowania

Język UML w modelowaniu systemów informatycznych

Diagramy czynności. Widok logiczny. Widok fizyczny

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Diagramy klas. dr Jarosław Skaruz

Rysunek 1: Przykłady graficznej prezentacji klas.

Język UML w modelowaniu systemów informatycznych

UML w Visual Studio. Michał Ciećwierz

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Michał Adamczyk. Język UML

Diagramy przypadków użycia

Modelowanie obiektowe

Diagramy klas. WYKŁAD Piotr Ciskowski

Diagramy czynności Na podstawie UML 2.0 Tutorial

UML cz. I. UML cz. I 1/1

NIFIED M L ODELLING ANGUAGE. Diagramy czynności

Podstawy języka UML2 w realnych projektach

Język UML w modelowaniu systemów informatycznych

Diagramu Związków Encji - CELE. Diagram Związków Encji - CHARAKTERYSTYKA. Diagram Związków Encji - Podstawowe bloki składowe i reguły konstrukcji

Podstawy programowania III WYKŁAD 4

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

KATEDRA INFORMATYKI STOSOWANEJ PŁ ANALIZA I PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH

Diagram Przepływu Danych - podstawowe bloki składowe i reguły konstrukcji

Zalety projektowania obiektowego

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 3 Ćwiczenia w narzędziu CASE diagram sekwencji. Materiały dla studentów

Język UML w modelowaniu systemów informatycznych

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Podstawy modelowania w języku UML

Diagramy czynności. sekwencyjnych i współbieŝnych. pomiędzy uporządkowanymi ciągami czynności, akcji i obiektów

Źródło: S. Wrycza, B. Marcinkowski, K. Wyrzykowski Język UML 2.0 w modelowaniu systemów informatycznych Helion DIAGRAMY INTERAKCJI

Świat rzeczywisty i jego model

Analiza i programowanie obiektowe 2016/2017. Wykład 6: Projektowanie obiektowe: diagramy interakcji

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Diagramy obiegu dokumentów a UML w modelowaniu procesów biznesowych. Stanisław Niepostyn, Ilona Bluemke Instytut Informatyki, Politechnika Warszawska

UML. zastosowanie i projektowanie w języku UML

Język UML w modelowaniu systemów informatycznych

TECHNOLOGIE OBIEKTOWE. Wykład 3

UML (Unified Modeling Language jest to sposób formalnego opisu modeli reprezentujących projekty informatyczne.

Podstawy projektowania systemów komputerowych

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym

Podstawy języka UML2 w realnych projektach

Podstawy inżynierii oprogramowania

Zagadnienia Semestr IV Inżynieria Oprogramowania WSZiB

Metody Kompilacji Wykład 3

Diagram przypadków użycia

Wykład 5: Klasy cz. 3

Język UML w modelowaniu systemów informatycznych

KATEDRA INFORMATYKI STOSOWANEJ PŁ INŻYNIERIA OPROGRAMOWANIA

Specyfikowanie wymagań przypadki użycia

Instrukcja użytkownika Platforma Walutowa

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Wykład 8: klasy cz. 4

Przepływy danych. Oracle Designer: Modelowanie przepływów danych. Diagramy przepływów danych (1) Diagramy przepływów danych (2)

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Modelowanie obiektowe - Ćw. 6.

Zmiany. Initial Step krok inicjujący sekwenser

Podstawy modelowania w języku UML

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Kopiowanie przy użyciu szyby skanera. 1 Umieść oryginalny dokument na szybie skanera stroną zadrukowaną skierowaną w dół, w lewym, górnym rogu.

Sterowniki Programowalne (SP)

Modelowanie i analiza systemów informatycznych

Analiza i projektowanie obiektowe 2017/2018. Wykład 3: Model wiedzy dziedzinowej

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

APIO. W4 ZDARZENIA BIZNESOWE. ZALEŻNOŚCI MIĘDZY FUNKCJAMI. ELEMENTY DEFINICJI PROCESU. DIAGRAM ZALEŻNOŚCI FUNKCJI.

PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH 2010/2011 MGR DOROTA MIROWSKA

Laboratorium 6 DIAGRAM KLAS (Class Diagram)

Diagramy przypadków użycia. WYKŁAD Piotr Ciskowski

Język UML w modelowaniu systemów informatycznych

UML cz. III. UML cz. III 1/36

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

Cw.12 JAVAScript w dokumentach HTML

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 3 Ćwiczenia w narzędziu CASE diagram sekwencji. Materiały dla nauczyciela

Materiały do laboratorium MS ACCESS BASIC

Algorytm. Krótka historia algorytmów

Diagramy czynności tworzenie modelu przypadków użycia Wykład 2

Modelowanie i analiza systemów informatycznych.

Oprogramowanie o wysokiej jakości to oprogramowanie spełniające następujące kryteria:

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

Spis treúci. 1. Wprowadzenie... 13

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Referencyjny model OSI. 3 listopada 2014 Mirosław Juszczak 37

Współbieżność w środowisku Java

Podstawy Programowania Obiektowego

Transkrypt:

Diagramy interakcji Diagramy interakcji Diagramy interakcji są stosowane do modelowania dynamicznych aspektów systemu. Wyróżnia się: diagramy przebiegu (Sequence diagrams) i diagramy kooperacji (Collaboration diagrams). Opracowano w Lab. Informatyki AGH (Kraków) Diagram przebiegu inaczej diagram sekwencji modeluje kolejność komunikatów w czasie, diagram kooperacji modeluje organizację strukturalną obiektów wymieniających i komunikaty. (c) Radosław Klimek 1 (c) Radosław Klimek 2 Diagram przebiegu (Sequence diagrams) Służy do modelowania dynamicznych aspektów systemu Przedstawia współdziałanie kilku obiektów w celu realizacji konkretnego k zadania z uwypukleniem perspektywy czasu Diagram przebiegu przedstawia obiekty (instancje klas) stanowiące składowe jakiegoś systemu oraz komunikaty wymieniane pomiędzy nimi w celu realizacji danego zadania. Diagram może, ale nie musi, zawierać również aktorów, oraz opisywać ich interakcję z systemem. Pozwala określić kolejność występowania komunikatów w czasie Zastosowanie diagramów sekwencji Układ diagramu Opis działania systemu Opis przypadków użycia Opis scenariusza przypadku użycia Opis operacji klasy Diagram przebiegu ma dwa wymiary: wymiar poziomy - oś, na której umieszczono instancje klasyfikatorów biorące udział w interakcji, przedstawia role obiektów pomiędzy ę którymi trwa określona komunikacja. wymiar pionowy - oś czasu przedstawiająca ułożone chronologicznie komunikaty, komunikaty położone niżej realizowane są później 1

Rodzaje diagramów przebiegu Konceptualny - diagram o ogólnym zakresie i łatwych do zidentyfikowania interakcjach, stwarza możliwość ogólnego zidentyfikowania interakcji naszkicowania zakresu i zawartości interakcji Implementacyjny - diagram stanowiący opracowania specyfikacji programistycznej, prezentuje o wiele wyższy poziom precyzji oraz większy zakres interakcji Wystąpieniowy - przypadek diagramu implementacyjnego w odniesieniu do konkretnego scenariusza Podstawowe pojęcia instancja klasyfikatora - abstrakcyjna kategoria modelowania, która uogólnia kolekcję instancji o tych samych cechach linia życia powiązana z konkretną instancją klasyfikatora linia na diagramie sekwencji, specyfikowane przez pionowe linie przerywane symbolizujące czas istnienia obiektów. komunikat specyfikacja wymiany informacji między obiektami, zawierająca zlecenia wykonania określonej operacji ośrodek sterowania specyfikacja wykonywania czynności, operacji lub innej jednostki zachowania w ramach interakcji - w praktyce realizacja funkcjonalności, reprezentuje czas, w którym obiekt jest w stanie przyjmować i nadawać komunikaty (czas aktywności)., specyfikowany przez cienki prostokąt.możliwe jest zagnieżdżanie specyfikowane przez inny prostokąt, przesunięty względem danego. Podstawowe elementy diagramu sekwencji Elementy diagramu przebiegu aktor obiekt aktor obiekt komunikat linia życia czas Klient obiekt1: klasa1 komunikat DoSomething() wektor przepływu komunikatu ośrodek sterowania komunikat zwrotny linia życia Aktor Obiekt W diagramie przebiegu jest reprezentacją zewnętrznego użytkownika (lub ich grupy), którzy oddziaływają na system. Aktor, podobnie jak obiekty, ma oś czasu. Jeżeli aktor jest źródłem interakcji (a tak najczęściej jest) to usytuowany jest w brzegowej (skrajnej lewej lub prawej) części systemu. Dla aktora ustawić można parametry: nazwa kod komentarz jest instancją klasy i tak jak aktor jest połączony z osią czasu. Jeżeli obiekt jest tworzony bądź niszczony, jest to zaznaczone na osi czasu. Parametry obiektów są takie jak dla aktora (nazwa, kod, komentarz), dodatkowo ustawić możemy pole Classifier, które określa nazwę klasy, której instancją jest obiekt. Jeżeli jeszcze nie istnieje dana klasa, możemy ją stworzyć na podstawie obiektu Create Class. 2

Linia życia Komunikaty obiekt to rola uczestnika interakcji, jaką pełni w czasie jej trwania. Linia życia reprezentuje współuczestnika interakcji i czas jego istnienia podczas realizacji scenariusza. Linie życia reprezentują konkretne byty obiekty, systemy i mogą przyjmować stereotypy, które świadczą o roli, jaką pełni dany obiekt w systemie. Komunikat jest to informacja przesyłana pomiędzy obiektami posiada nadawcę, odbiorcę i akcję, czyli treść informacji, która pojawia się nad symbolem strzałki. Tworząc komunikat określić można też tzw. aktywację (ośrodek sterowania) która reprezentuje czas wykonywania czynności przez obiekt. Aktywacja nie posiada własnej listy właściwości, jedynie graficzną reprezentację w postaci prostokąta. możliwe jest tworzenie komunikatów pomiędzy obiektami, aktorami, a nawet tworzenie komunikatów rekurencyjnych, tj. takich gdzie nadawca i odbiorca to ten sam obiekt / aktor. Rodzaje komunikatów Rodzaje komunikatów Synchroniczny - obiekt wysyłający nie czeka na odpowiedź odbiorcy, może jednocześnie wykonywać inne operacje Asynchroniczny - Wywołanie procedury nadawca musi oczekiwać na odpowiedź, bądź koniec czasu aktywacji Zwrotny - Komunikat zwrotny (return) zwykle jest to odpowiedź na wywołanie procedury Samowywołanie synchroniczne lub asynchroniczne jest to wiadomość wewnętrzna, którą obiekt wysyła sam do siebie. Tego typu wiadomości używa się na przykład w sytuacji, gdy obiekt wywołuje swoją własną metodę. Niezdefiniowany jeśli nie jest istotna zależność pomiędzy komunikatami Opis komunikatu 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 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) Komunikaty na diagramie obiekt 1 obiekt 2 komunikat synchroniczny komunikat zwrotny komunikat synchroniczny Komunikat wewnętrzny samowywołanie 3

Opis komunikatu Opis komunikatu warunek strzegący, dozoru warunek dozoru, który musi być spełniony dla przesłania komunikatu. warunek dozoru 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] zwracany wynik wynik := nazwa operacji (lista argumentów) lista argumentów lista 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 Dokładne określenie czasu 1.2a: DoSomething() 3, 5/7: DoSomething() 4: [action=new]newdocument(selecttype()) ()) {t2-t1<1 min} t1 t2 {t4-t3<10 ms} t3 t4 Równoległe wątki sterowania objekt:class1 Komunikat warunkowy Określa warunek jaki musi zostać spełniony aby operacja wskazywana przez komunikat została wykonana [Ilosc =3] : zapisz dane() 4

Iteracja Wielokrotne, policzalne powtórzenie pojedynczego komunikatu Tworzenie i niszczenie obiektów Ostatnim rodzajem komunikatów są komunikaty, które tworzą obiekt lub kasują go. [Ilosc : =1..n] : zapisz dane() Komunikat tworzący obiekt - stereotyp <<create>>, wygenerowany obiekt różni się od pozostałych (istniejących przez cały czas trwania scenariusza) tym, że jest umieszczony niżej względem nich. Komunikat niszczący sterotyp <<destroy>> jest odpowiedzialny za zniszczenie obiektu, co jest zobrazowane znakiem X na końcu linii życia obiektu obiekt1 Tworzenie i niszczenie obiektów <<create>> obiekt2 ustaw() Przykładowy diagram sekwencji Klient 1: Zgłoszenie() 3:[nie jest] Podaj dane() Sprzedawca 2: jest := Wyszukanie() 4: 3/ jest := Nowy klient() Lista klientów: Lista Rachunki niezapłacone: Lista <<destroy>> wykonaj () 6: akcja := Potwierdzenie zgłoszenia(nzap) 5: [jest] nzap:=wyszukanie() 7a:[akcja=nowy] Create() Zamówienie: Zamówienia Fragmenty wyodrębnione - bloki Fragment to konceptualnie zamknięta część diagramu sekwencji, która rozszerza możliwości obejmowanego przez siebie obszaru diagramu sekwencji. Fragment może zawierać w sobie pętle, powtórzenia, scenariusze alternatywne lub wskazywać poziom abstrakcji modelowanego fragmentu systemu. Fragmenty wyodrębnione - bloki Rodzaj bloku jest określany poprzez umieszczenie odpowiedniego operatora sekwencji w lewym górnym rogu. Stanowi on sprecyzowanie funkcjonalności realizowanej przez fragment. operator sekwencji może zawierać wiele podfragmentów 5

Alt alternatywa Opt opcja Break przerwanie Loop iteracja Par współbieżność Neg Critical Assert Consider Ignore Strict Seq alt dzieli fragment interakcji zgodnie z warunkami logiki Boole a na dwa alternatywne scenariusze; każda z alternatyw musi być opatrzona warunkiem dozoru, którego spełnienie gwarantuje wykonanie danej alternatywy. break wskazuje fragment diagramu sekwencji, który realizowany jest po spełnieniu warunku dozoru; spełnienie warunku dozoru skutkuje wykonaniem sekwencji komunikatów zawartych we fragmencie, a następnie wyjście ze scenariusza; w przypadku, gdy warunek dozoru nie jest spełniony, komunikaty zawarte we fragmencie są pomijane. (c) Radosław Klimek 31 opt wskazuje opcjonalny fragment interakcji, który jest wykonywany po spełnieniu warunku dozoru. par prezentuje równoległe wykonywanie przepływu wiadomości. nadawca serwer poczty odbiorca nadawca przeglądarka komórka punkt dostępu sieć 1: wyślij wiadomość() par 1: ć() opt 1: wyświetl stronę WWW 2: pobierz pakiet GPRS 3: nawiąż połączenie [załącznik] 2: wyślij załącznik() 4: sprawdź sygnał 5: potwierdź 3: odbierz wiadomość() 6: raportuj dostępność (c) Radosław Klimek 33 loop powtórzenie fragmentu interakcji. Z reguły jawne określenie krotności wykonania Klient lista produktów: lista produkt: produkt consider wskazuje fragment z listą nazw komunikatów, które są wyselekcjonowane w tej części interakcji; oznacza to, że mimo innych komunikatów, które znajdują się w danej części interakcji, pokazane zostaną tylko te, które są wypisane w za słowem kluczowym consider. 1: szukaj produkt() loop [1..*] 2: wybierz produkt () critical obszar krytyczny wskazuje, że dany fragment diagramu sekwencji nie może być przerwany przez inny proces. Wskazuje obszar o najwyższym priorytecie w realizacji interakcji. Może służyć do określania priorytetów fragmentów współbieżnych Instancje wchodzące w skład obszaru krytycznego nie mogą uczestniczyć w innych interakcjach 3: wyświetl produkt (c) Radosław Klimek 35 (c) Radosław Klimek 36 6

ignore wskazuje, że w tym fragmencie interakcji znajdują się wiadomości, które zostały pominięte, gdyż ich widoczność nie zmienia zachowania systemu; zignorowane wiadomości są wylistowane po słowie ignore. Komunikaty te nie są istotne w trakcie wykonywania obejmowanego fragmentu. Ich wykonanie nie warunkuje wykonania całego fragmentu assert prezentuje fragment interakcji, który musi być wykonany zgodnie z założonymi warunkami i komunikatami. Wyodrębnia wykonanie sformalizowanego algorytmu, twierdzenia. neg fragment prezentujący jedną lub więcej wiadomości, które są prawdopodobnie nieprawidłowe. Zawiera sekwencje czynności wykonywane w sytuacji zaistnienia nieprawidłowości. Podobne do przerwania ale nie zawiera obsługi wyjątku ani nie anuluje dalszych etapów seq wskazuje słabo uszczegółowiony fragment sekwencji, tzn. taki, który jest ogólny. Komunikaty w wyodrębnionym fragmencie odnoszące się do różnych linii życia mogą być wykonane w innym porządku niż wskazany na diagramie. strict prezentuje szczegółową, całkowitą komunikację pomiędzy obiektami. Komunikaty w wyodrębnionym fragmencie muszą być wykonane w określonym na diagramie porządku caller exchange receiver obiekty aktywne k : Klient p : Pełnomocnik <<create>> : Transakcja ustalakcje(a,d,o) nadajwartość(d, 5.0) nadajwartość(a, OK. ) Zatwierdzono <<destroy>> czas Linia życia ograniczenia a {b-a<1s} {c-b<10 s} komentarz Marsz- rutowanie {d -d<5s} b c d d lift receiver komunikat dial tone dial digit... route trwanie komunikatu ringing tone phone rings answer phone Rys. Diagram przebiegu (c) Radosław Klimek 39 Od tego momentu możliwa rozmowa stop tone stop ringing Rys. Diagram przebiegu ze sterowaniem asynchronicznym (c) Radosław Klimek 40 op(1) ob1:c1 ob2:c2 ob4:c4 Diagramy kooperacji (Collaboration diagrams) rozwidlenie współbieżne [x>0] create(x) ob3:c3 [x<0] callc(x) do(w) do(z) call rozgałęzienie sterowania komunikat k : Klient 1: <<create>> 2: ustalakcje(a,d,o) 3: <<destroy>> wiązanie return : Transakcja p : Pełnomocnik scalenie współbieżne recurse() połączenie sterowania kolejność 2.1: nadajwartość(d, 5.0) 2.2: nadajwartość(a, OK. ) Rys. Diagram kooperacji Rys. Diagram przebiegu z proceduralnym przepływem sterowania (c) Radosław Klimek 41 (c) Radosław Klimek 42 7

Diagramy przebiegu i kooperacji są równoważne, gdyż specyfikują tę samą informację w metamodelu UML. Zastosowania diagramów interakcji 1. Modelowanie przepływu sterowania z uwzględnieniem kolejności komunikatów w czasie (diagramy przebiegu). 2. Modelowanie przepływu sterowania z uwzględnieniem organizacji strukturalnej obiektów (diagramy kooperacji). Konstrukcja diagramów przebiegu 1. Określ otoczenie interakcji (system, podsystem, operacja, klasa, scenariusz przypadku użycia, kooperacja). 2. Zidentyfikuj obiekty biorące udział w interakcji i rozmieść je od lewej do prawej. 3. Narysuj linie życia dla każdego obiektu. Specyfikuj również linie życia obiektów tworzonych/niszczonych w trakcie interakcji. 4. Komunikat inicjujący interakcję umieść u góry diagramu. Stosuj zasadę kolejności według miejsca na linii życia. 5. Specyfikację zagnieżdżenia komunikatów lub obliczenia specyfikuj przez ośrodek sterowania. 6. Stosuj znaczniki czasowe do specyfikacji ograniczeń czasowych. 7. Jeśli chcesz wyspecyfikować warunki ograniczające przepływ sterowania - zapisz odpowiednio warunki wstępne i końcowe związane z każdym komunikatem. (c) Radosław Klimek 43 (c) Radosław Klimek 44 Konstrukcja diagramów kooperacji 1. Określ otoczenie interakcji (system, podsystem, operacja, klasa, scenariusz przypadku użycia, kooperacja). 2. Zidentyfikuj obiekty biorące udział w interakcji i umieść je jako wierzchołki w diagramie kooperacji. W środkowej części umieść najważniejsze obiekty, w miejscach otaczających mniej ważne. 3. Określ własności początkowe każdego obiektu. Jeśli wartości atrybutów, metki, stan lub rola ulegają zmianie podczas interakcji, umieść na diagramie kopię tego obiektu, uwzględniając te nowe własności. Połącz oryginał i kopię przez komunikat stereotypowany become lub copy. 4. Określ wiązania między obiektami oraz przekazywane komunikaty. a. Zacznij od wiązań -są najważniejsze, gdyż opisują związki strukturalne. b. Narysuj pozostałe powiązania i dodaj stereotypy ścieżek, np.. Global lub local. 5. Zaczynając od komunikatu inicjującego interakcję skojarz wszystkie komunikaty z odpowiednimi wiązaniami, nadając im stosowne numery porządkowe. 6. Dodaj znaczniki czasu i określ ograniczenia czasowe. 7. Jeśli przepływ sterowania ma być bardziej formalny - zapisz warunki wstępne i końcowe związane z każdym komunikatem. (c) Radosław Klimek 45 (c) Radosław Klimek 46 Uzupełnienia Notacja wyróżniająca rodzaje komunikatów: :Controller 1:expand() :Directory[closed] 1.1:<<become>> Oznacza wywołanie procedury lub inne zagnieżdżony przepływ sterowania. Może to być zatem zwykłe wywołanie procedury lub dotyczyć aktywnych obiektów, gdzie jeden wysyła sygnał i czeka na odpowiedź. 2:sort :Directory[opened] Płaski przepływ sterowania. Strzałka pokazuje przejście do następnego kroku przebiegu. W zagnieżdżonych procedurach odpowiada skanowaniu wszerz liści drzewa wywołań. Rys. Zastosowanie stereotypu <<become>> Asynchroniczny przepływ sterowania. Powrót z wywołania procedury. Może być również traktowane jako koniec aktywacji. (c) Radosław Klimek 47 (c) Radosław Klimek 48 8

Postać etykiety komunikatu Składnia i znaczenie elementów etykiety komunikatu [predessor] [guard_condition] [sequence_expression] [return_value_list :=] message_name (argument list ) predessor - lista numerów w sekwencji oddzielonych przecinkami. Na końcu listy umieszczony jest ukośnik. Numery mogą być specyfikowane przez wyrażenia. Numery te odnoszą się do komunikatów, które dotrzeć zanim możliwe będzie wysłanie danego komunikatu. Etykieta specyfikuje wysyłany komunikat, jego argumenty i wartości zwracane, kolejność komunikatu w kontekście interakcji, łącznie z zagnieżdżeniem wywołania rozgałęzieniami, współbieżnością i synchronizacją. guard_condition - jeśli specyfikowana jest ta fraza, to warunkiem wysłania komunikatu jest dodatkowo spełnienie tego warunku. Wyrażenie to (dozór) może zatem określać warunki synchronizacyjne wątków. (c) Radosław Klimek 49 (c) Radosław Klimek 50 sequence_expression specyfikuje listę termów sekwencji oddzielonych kropkami, a zakończonych dwukropkiem (:). Każdy term określa poziom proceduralnego zagnieżdżenia w obrębie interakcji. W przypadku współbieżności zagnieżdżenie to nie występuje. Struktura termu: label [recurrence], gdzie label może być nazwą lub liczbą. Jeśli jest liczbą, wówczas określa porządek wywołania, kolejność względem poziomu wyższego. Nazwa specyfikuje natomiast współbieżne wykonanie wątku na danym poziomie zagnieżdżenia. recurrence - reprezentuje iterację lub rozgałęzienie. Postać recurrence: *[iteration_clause] -iteracja lub [condition_clause] -rozgałęzienie. Iteracja oznacza sekwencję komunikatów na danym poziomie zgnieżdżenia. Może to być wyrażone w języku programowania lub pseudokodzie (*[i:=1..n]). Iteracja dotyczy sekwencji. Równoległość wykonania może być specyfikowana przez *. Rozgałęzienie może być również wyrażone w języku docelowym lub pseudokodzie [x>y]. return_value_list lista nazw oddzielonych przecinkami specyfikująca wartości zwracane przez komunikat. Identyfikatory mogą występować również w liście argumentów. Parametr opcjonalny, może być usunięty wraz ze znakiem przypisania message_name nazwa zdarzenia, które wystąpiło w obiekcie docelowym - często jest to żądanie operacji, która ma być wykonana. argument list lista argumentów oddzielonych przecinkami zamknięta w nawiasach okrągłych. Argumenty mogą być zdefiniowane wg konwencji języka programowania lub w pseudokodzie. (c) Radosław Klimek 51 (c) Radosław Klimek 52 redisplay() :Controller window :Window dialer list name search Rys. Graficzna specyfikacja komunikatu namelist 1:displayPositions(window) 1.1*[i:=1..n]: drawsegment(i) wire 1.1.2: create(r0,r1) 1.1.3: display(window) wire:wire <<self>> i-1 i <<local>> 1.1.1a: r0:=position() 1.1.1b: r0:=position() 1.1.3.1: link(self) :Line{new} contents{new} left:bead rightt:bead Rys. Przykład diagramu kooperacji (c) Radosław Klimek 53 (c) Radosław Klimek 54 9

Diagramy sekwencji w Tau G2 Składniki diagramów Diagramy sekwencji koncentrują się na opisie zdarzeń, ich kolejności, bez dokładnego pomiaru czasu; diagramy służą do opisu dynamiki przypadków użycia czy operacji; umożliwiają przeanalizowanie zewnętrznie obserwowalnego zachowania systemu lub zbudowanie scenariusza wewnętrznego wykonania (stworzenie śladu systemu). Duże podobieństwo do diagramów w UML, już przy pierwszej analizie; z drugiej jednak strony diagramy sekwencji są rozbudowane w realistycznym kierunku ; wzbogacenie obejmuje możliwość specyfikowania stanów, referencji czy timer ów. nie występują diagramy współdziałania (kolaboracji). Linia życia indywidualny uczestnik interakcji, linia składa się z głowy i osi. Istotny jest porządek zdarzeń występujących na osi. Komunikaty wystąpienie sygnału od nadawcy do odbiorcy. Komunikat może poziomy lub ukośny (w dół), co oznacza pewne opóźnienie. (c) Radosław Klimek 55 (c) Radosław Klimek 56 Składniki diagramów (2) Notka interakcyjna - punkt odniesienia dla interakcji w wielu diagramach sekwencji; dwa zasadnicze powody stosowania notki: enkapsulacja (nieistotne detale), wielokrotne stosowanie opisu interakcji. Nazwa notki jest nazwą p.użycia lub operacji. Stany nazwy konkretnych stanów, na oznaczenie, że instancja musi się znaleźć w konkretnym stanie wyspecyfikowanym na linii życia. Akcje nazwy akcji specyfikowanych na linii życia. Składniki diagramów (3) Kreacja utworzenie nowej instancji klasy aktywnej (linia przerywana u góry) Destrukcja zakończenie życia instancji, po wysłaniu odpowiedniego komunikatu, stop w maszynie stanowej (linia przerywana u dołu) (c) Radosław Klimek 57 (c) Radosław Klimek 58 Wiadomości niekompletne Dekomponowanie linii życia Wiadomość jest niekompletna gdy nie zostało zdefiniowane jedno z dwóch związanych z nią zdarzeń. Wiadomość zagubiona znane zdarzenie nadawcze (w obiekcie nadawcy). Istnieje możliwość dekomponowania linii życia Wiadomość odnaleziona znane zdarzenie odbiorcze (w obiekcie odbiorcy). (c) Radosław Klimek 59 (c) Radosław Klimek 60 10

Zdarzenia związane z czasem Mogą także występować zdarzenia związane z upływającym czasem Trzy podstawowe rodzaje zdarzeń: -ustawienie zegara; -zerowanie zegara; -przepełnienie (timeout) zegara. Nazwy na linii życia W głowie linii życia dopuszcza się stosowanie następujących oznaczeń: Name nazwa instancji odnosząca się do określonych elementów; Name: NameClass nazwa instancji i nazwa klasy; : NameClass nazwa klasy; nam[3] nazwa instancji z wyrażeniem redukującym krotność instancji; nam.part nazwa instancji z nazwą atrybutu; nam ref Name nazwa instancji oraz nazwa dekomponowanej linii życia (przypadek użycia, operacja); nam[2].name1:name2 ref Name3 złożenie kilku powyższych możliwości. (c) Radosław Klimek 61 (c) Radosław Klimek 62 11