diagramy sekwencji i kolaboracji
Transkrypt
diagramy sekwencji i kolaboracji
DIAGRAMY SEKWENCJI I KOLABORACJI Maciej Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Techniki modelowania programowania Diagramy sekwencji i kolaboracji Modelowanie behawioralne Model behawioralny: Opis systemu koncentrujący się na dynamicznym zachowaniu składników systemu, włączając w to wzajemne interakcje i współpracę pomiędzy nimi. Motywacje ⊲ projektowanie oprogramowania dotyczy zachowania jego składników; projektowanie obiektowo zorientowane jest techniką używaną do rozdzielenia i enkapsulacji zachowań, ⊲ model statyczny nie może być dowiedziony jako dokładny bez analizy związanych z nim procesów dynamicznych, ⊲ modele dynamiczne, niezbyt precyzyjnie reprezentują strukturę systemu oraz zachodzące zależności, ⊲ ukazanie kompletnego współdziałania elementów w zakresie relacji statycznych oraz dynamicznych, Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 1 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Podstawowe pojęcia(1) Instancja – (obiektu, struktury danych, komponentu, itp.) Wielkość z unikatową tożsamością do której można zastosować określony zbiór operacji lub wysłać zestaw sygnałów i która posiada stan odzwierciedlający efekty działania tych operacji lub sygnałów. Powiązanie – Połączenie pomiędzy instancjami, będące realizacją asocjacji między klasami. Powiązanie atrybutu jest to nazwana pozycja tekstowa wewnątrz instancji przechowująca wartość atrybutu. Operacja – Deklaracja usługi, która może być wymagana od instancji celem wpłynięcia na zachowanie się elementów systemu. Metoda jest ciałem operacji. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 2 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Odcinek:Wielok¹t Powi¹zanie atrybutu Œrodek : Punkt = (0.5,0.5) Wierzcho³ki : Punkt[2] = ((0,0),(1,1)) B:Punkt Powi¹zanie x : Integer = 1 y : Integer = 1 Wielok¹t Œrodek : Punkt Wierzcho³ki : Punkt[1..*] przesuñ(in d : Point) skaluj(in k : Real) Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski koniec A:Punkt pocz¹tek x : Integer = 0 y : Integer = 0 for any v in Wierzcho³ki do v.x:=v.x+d.x; v.y:=v.y+d.y; for any v in Wierzcho³ki do v.x:=k*v.x; v.y:=k*v.y; 3 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Podstawowe pojęcia(2) Bodziec – Proces komunikacji pomiędzy instancjami nadającą i odbierającą. Komunikat jest analogicznym procesem komunikacji pomiędzy klasami (tzn. Bodziec jest instancją Komunikatu). Sygnał – Specyfikacja asynchronicznego bodźca przekazywanego pomiędzy instancjami. Interakcja – zbiór procesów komunikacji pomiędzy instancjami, włączając w to wszystkie sposoby oddziaływania, (np. operacje wywołania, tworzenia i niszczenia instancji), Uwaga: Procesy komunikowania się są chronologicznie częściowo uporządkowane. Modelowanie interakcyjne – wyspecjalizowany typ modelowania behawioralnego, przeznaczony do analizy interakcji pomiędzy elementami wraz z upływem czasu. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Techniki modelowania programowania 4 Diagramy sekwencji i kolaboracji Diagramy interakcyjne ⊲ Pokazują interakcje pomiędzy instancjami występującymi w modelu. ◮ istniejące instancje wraz z możliwymi powiązaniami, ◮ komunikaty i bodźce, ◮ tworzenie i niszczenie instancji. ⊲ Typy: ◮ diagramy sekwencji (podejście temporalne), ◮ diagramy kolaboracji (podejście strukturalne). Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 5 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Diagramy sekwencji - podstawowe elementy oœ kategorii instancji O1: Klasa1 O2:Klasa2 O3:Klasa3 etykieta bodŸca oœ czasu nazwa1(...) aktywacja nazwa2(...) bodziec linia ¿ycia Linia życia reprezentuje istnienie elementu w czasie. Aktywacja reprezentuje okres wykonywania operacji. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 6 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Typy komunikatów i bodźców Składnia Typ Opis komunikat prosty Bezpośredni przepływ sterowania z instancji do instancji Wstrzymanie operacji do czasu uzyskania odpowiedzi Kontunuowanie operacji bez czekania na odpowiedź Powrót z wywołania podprogramu komunikat synchroniczny komunikat asynchroniczny powrót Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 7 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Różne typy komunikacji Przepływ prosty nadajnik centrala Przepływ zagnieżdzony odbiornik sprzedawca :Zamówienie :Artyku³ w³¹cz nadajnik() sygna³ wybierania() pobierzWartoœæ() wybierz numer() cena() sygna³ oczekiwania() dzwonek() po³aczenie odebrane() pobierzAdres() Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Techniki modelowania programowania 8 Diagramy sekwencji i kolaboracji Etykiety komunikatów i bodźców pop / [warunek] *[iter] nr sekw : wynik := operacja(lista) ⊲ pop – lista poprzedników (tzn. komunikatów poprzedzających), ⊲ [warunek] – warunek dozoru, który musi zostać spełniony żeby komunikacja nastąpiła, ⊲ *[iter] – liczba iteracji oznaczająca, ile razy komunikacja zostaje powtórzona, ⊲ nr sekw – etykieta określająca kolejność komunikacji, ⊲ wynik – nazwa zmiennej zwracanej przez operację, ⊲ operacja(lista) – nazwa wywoływanej operacji oraz jej lista argumentów. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 9 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Przykłady: ⊲ przesuń(1,2) – wywołanie proste, ⊲ wyn1:=przesuń(5,5) – zwrócenie parametru wyjściowego, ⊲ *[1..5]: wyn1 := przesuń(5,7) – iteracja, ⊲ [z>0]: wyn1 := przesuń(5,7) – warunek, ⊲ A3,B4 / [x<0] *[1..4] C3.1: wyn2 := pobierzLokację(wyn1) ⊲ [Baza jest aktywna] *[Dla każdego rekordu] 6: DaneWyj:=Formatuj(DaneWej,Sterowanie,3) Uwaga: UML pozwala przedstawiać komunikację za pomocą pseudokodu lub innego języka programowania. Komunikację można też opisać na lewym marginesie diagramu sekwencji. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 10 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Diagramy sekwencji - konstrukty calculator value filter [x>=0] getValue() tworzenie elementu warunek new() [x<0] transform() buffer getValue() delete() iterate() rekurencja Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 11 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Diagramy sekwencji - pętle :DataBase :Report :Table *[For each record] warunek pêtli (opcja 1) res1:= getRecord() res2:=getIndex() outData:=FormatData(res1,res2) komunikacja zwrotna [No more record to process] warunek pêtli (opcja 2) Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Techniki modelowania programowania 12 Diagramy sekwencji i kolaboracji Zalety i wady ✔ niezwykle wyraźnie pokazują chronologię ciągów zdarzeń, ✔ bardzo dobrze opisują przetwarzanie równoległe, ✔ znakomite do wykrywania przypadków „wyścigu zdarzeń”, ✘ zajmują dużo miejsca, ✘ słabo przedstawiają wzajemne relacje pomiędzy instancjami. Kiedy modelować interakcje ⊲ Do ustalenia w jaki sposób instancje oddziałują na siebie. ⊲ Do zidentyfikowania interfejsów klasyfikatorów. ⊲ Do rozłożenia i separacji wymagań. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 13 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Wskazówki do modelowania interakcyjnego ◮ Ustalić pełny kontekst rozważanej interakcji. ◮ Dołączać tylko te własności instancji, które są niezbędne i znaczące. ◮ Ustalać przepływ w kierunku z lewej do prawej i z góry na dół, • umieszczać aktywne instancje z lewej strony (u góry), a pasywne z prawej (u dołu), ◮ Używać diagramów sekwencji: • do pokazania bezpośredniego uporządkowania komunikatów i bodźców, • do modelowania w czasie rzeczywistym. ◮ Używać diagramów kolaboracji: • kiedy struktura jest bardzo istotna, • do skoncentrowania się na efektach wywieranych na instancje. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Techniki modelowania programowania 14 Diagramy sekwencji i kolaboracji Podstawowe pojęcia(3) Kolaboracja – opisuje jak operacja lub klasyfikator (np. przypadek użycia) są realizowane przez zbiór klas i asocjacji użytych w pewien określony sposób. Definiuje zbiór ról, odgrywanych przez instancje i powiązania oraz zbiór interakcji określających komunikację pomiędzy instancjami, kiedy odgrywają swoje role. Rola klasyfikatora – jest specyficzną rolą odgrywaną przez współuczestnika w kolaboracji. Określa ograniczony widok na klasyfikator, zdefiniowany przez to co jest wymagane w kolaboracji. Rola asocjacji – jest specyficznym użyciem asocjacji potrzebnej w kolaboracji. Modelowanie kolaboracyjne – wyspecjalizowany typ modelowania behawioralnego, przeznaczony do modelowanie relacji pomiędzy elementami, pomiędzy którymi zachodzą interakcje w czasie. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 15 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Diagramy kolaboracji ⊲ pokazują role klasyfikatorów i asocjacji (najlepiej razem) uzupełnione dodatkowymi elementami ograniczającymi, ⊲ Typy: ◮ diagramy na poziomie specyfikacji (role klas, role asocjacji i ich komunikaty), ◮ diagramy na poziomie instancji (konkretne obiekty, powiązania i bodźce), ⊲ dodatkowe diagramy statyczne są używane do bezpośredniego pokazania kolaboracji. Uwaga: Diagramy kolaboracji i sekwencji opisują te same informacje i mogą być przekształcane miedzy sobą. Wybór diagramu zależy od aspektu, który chce zilustrować projektant. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 16 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Relacje klasa-instancja-rola Klasyfikator Atrybut_1 Atrybut_2 Atrybut_3 <<jest widokiem>> RolaKlasyfikatora Atrybut_1 Atrybut_2 Operacja_1() Operacja_3() Operacja_1() Operacja_2() Operacja_3() <<wywodzi siê z>> <<odnosi siê do>> Instancja Klasyfikator jest opisem instancji Atrybut_1 Atrybut_2 Atrybut_3 Rola klasyfikatora definuje u¿ycie instancji Instancja jest wielkoœci¹ z unikatow¹ to¿samoœci¹ opisan¹ zachowaniem i stanem Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 17 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Różne sposoby nazywania roli / NazwaRoliKlasyfikatora : NazwaKlasyfikatora /Rodzic:Osoba /Rodzic :Osoba NazwaInstancji / NazwaRoliKlasyfikatora : NazwaKlasyfikatora :Osoba Andrzej:Osoba Andrzej/Rodzic Andrzej Andrzej/Rodzic:Osoba Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 18 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Asocjacje i role asocjacji klasa klasa Klasa_1 asocjacja {zmienna} <<jest widokiem>> <<jest widokiem>> /Rola_1 0..5 rola klasy <<jest widokiem>> 3..4 {ustalona} rola asocjacji Klasa_2 /Rola_2 rola klasy ⊲ Rola asocjacji precyzuje pożądane własności powiązania użytego w kolaboracji. ⊲ Własności zakończeń asocjacji mogą zostać ograniczone poprzez zakończenia ról asocjacji. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 19 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Przykład 1. Prosta struktura uniwersytetu. Model ról /Nauczyciel:Osoba /Student:Osoba * Program:Text promotor uczeñ 1 Pozycja:Text pracownik * * uczestnik 1 wyk³adowca 1 −→ kompletny opis struktury kurs wyk³adany * kurs pobierany * :Kurs :Wydzia³ Model klas promotor Osoba 0..1 uczeñ Nazwa:Text pracownik Pozycja:Text * * Program:Text * uczestnik wyk³adowca 1 0..1 kurs wyk³adany −→ opis pojedynczego użycia * kurs pobierany * Kurs Wydzia³ Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 20 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Model ról na poziomie instancji promotor cz³onek Andrze/Nauczyciel wydzia³u uczeñ promotor Alicja/Student uczestnik uczeñ wydzia³ Robert/Student :Wydzia³ uczestnik wydzia³ kurs kurs pobierany pobierany cz³onek Krzysztof/Nauczyciel wydzia³u Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski kurs wyk³adowca wyk³adany UML :Kurs 21 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Diagram kolaboracji z interakcjami Przykład 2. Załóżmy, że użytkownik pracując w edytorze tekstowym naciska znak na klawiaturze, który pojawia się na ekranie. Pokazać interakcje tego prostego procesu zachodzące między klawiaturą, interfejsem graficznym edytora, systemem operacyjnym, procesorem, kartą graficzną i monitorem. Najpierw tworzymy scenariusz przypadku użycia „Naciśnij klawisz”: 1. naciśnięcie klawisza jest wykrywane przez interfejs graficzny (GUI), 2. GUI informuje system operacyjny (SYS) o naciśnięciu klawisza, 3. SYS informuje o tym procesor (CPU), 4. SYS uaktualnia GUI, 5. CPU zawiadamia kartę graficzną (GRAPH), 6. GRAPH wysyła komunikat do monitora, 7. monitor wyświetla znak alfanumeryczny. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 22 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Diagram sekwencji Diagram kolaboracji 1: : Klawiatura : GUI : SYS : CPU : GRAPH : Monitor : Klawiatura 2: : SYS : GUI 3: 1: 2: 3: 4: 4: 5: 5: 6: : CPU Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 6: : GRAPH : Monitor 23 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Kiedy modelować kolaboracje ⊲ Używać jako narzędzia do określenia Klasyfikatorów. ⊲ Do przetworzenia przypadków użycia/operacji na Klasyfikatory. ⊲ Do przekształcenia specyfikacji podsystemu na jego realizację. Wskazówki do modelowania kolaboracyjnego ◮ Kolaboracja powinna zawierać zarówno strukturę jak zachowanie odpowiednie dla rozważanego zadania. ◮ Rola jest pewną abstrakcją instancji, lecz nie stanowi klasy! ◮ Należy poszukiwać: • elementów inicjujących (zewnętrznych), • elementów obsługujących (ang. handler – elementy aktywne), • elementów obsługiwanych (elementy pasywne) Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 24 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Uzupełnianie się modeli statycznych i dynamicznych Przykład 3. Telefon komórkowy. Rozważmy oprogramowanie sterujące bardzo prostym telefonem komórkowym. Telefon taki posiada przyciski do wybierania numeru, posiada specjalny przycisk „Wyślij” do inicjowania połączenia. Posiada także, połączeniowy hardware i software, który zbiera cyfry składające się na numer i emituje odpowiednie tony wybierania. Ponadto, musi zawierać radio komórkowe, które ustala połączenie z siecią komórkową. Dodatkowe składowe modelu to mikrofon, głośnik oraz wyświetlacz. Telefon Modu³Po³¹czeniowy RadioKomórkowe * Przycisk Wyœwietlacz G³oœnik Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Mikrofon 25 Techniki modelowania programowania Diagramy sekwencji i kolaboracji ✔ pierwsza wersja bardzo dobrze odpowiada specyfikacji, ✔ relacje kompozycji ściśle odpowiadają obiektowi rzeczywistemu, Pytania: ✘ Czy na pewno model statyczny jest prawidłowy? ✘ Jak się o tym przekonać? ✘ Jakie kryteria oceny wybrać? ⊲ Kryterium pierwsze: Zgodność modelu z obiektem rzeczywistym. ⊲ Kryterium drugie: Zgodność zachowania się modelu z obiektem rzeczywistym. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Techniki modelowania programowania 26 Diagramy sekwencji i kolaboracji Specyfikacja dynamiki modelu Przypadek użycia: Ustal połączenie. 1. Użytkownik wprowadza numer telefonu naciskając przyciski cyfr. 2. Dla każdej cyfry, wyświetlacz jest odświeżany. 3. Dla każdej cyfry, moduł połączeniowy generuje odpowiedni ton i emituje go przez głośnik. 4. Użytkownik naciska przycisk „Wyślij”. 5. Radio komórkowe realizuje połączenie z siecią. 6. Na wyświetlaczu pokazuje się ikona „Zajęty”. 7. Zgromadzone cyfry numeru są wysyłane do sieci. 8. Ustalane jest połączenie z odbiorcą. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 27 Techniki modelowania programowania Diagramy sekwencji i kolaboracji W jaki sposób obiekty modelu statycznego współpracują ze sobą? :G³oœnik 3:EmitujTon(kod) *1:Naciœnij(kod) :Przycisk 5:Po³¹cz(nr_tel) :Modu³Po³¹czeniowy :RadioKomórkowe 2:WyœwietlCyfrê(kod) 6:Zajêty() 4:Wyœlij() :Wyœwietlacz Wyœlij:Przycisk Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 28 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Zrekonfigurowany model statyczny G³oœnik +EmitujTon(kod:int) Przycisk Modu³Po³¹czeniowy +Naciœnij(kod:int) +Wyœlij() RadioKomórkowe +Po³¹cz(nr_tel:String) Wyœwietlacz +WyœwietlCyfrê(kod:int) +Zajêty() Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 29 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Problemy dodatkowe: 1. Dlaczego klasa Przycisk miałaby posiadać pełną wiedzę o klasie ModułPołączeniowy? Powinna być to klasa, którą można by użyć w programach, które nie używają obiektów typu ModułPołączeniowy. <<nterface>> Przycisk Przycisk +PrzyciskNaciœniêty() AdapterPrzyciskuWyœlij AdapterPrzyciskuCyfry Modu³Po³¹czeniowy Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 30 Techniki modelowania programowania Diagramy sekwencji i kolaboracji 2. Klasa Wyświetlacz jest celem asocjacji od dwóch różnych klientów (tzn. ModułuPołączeniowego i RadiaKomórkowego). Oznacza to istnienie nieoczekiwanej ukrytej zależności pomiędzy tymi klientami. Modu³Po³¹czeniowy RadioKomórkowe WyswietlaczMP WyœwietlaczRK +WyœwietlCyfrê(kod:int) +Zajêty() Wyœwietlacz Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 31 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Zrekonfigurowany model kolaboracji :AdapterPrzyciskuC *1: kod:=Przycisk Naciœniêty() 1.1:Naciœnij(kod) Cyfra:Przycisk :G³oœnik 3:EmitujTon(kod) 5:Po³¹cz(nr_tel) :Modu³Po³¹czeniowy :RadioKomórkowe 4.1:Wyœlij() Wyœlij:Przycisk 2:WyœwietlCyfrê(kod) 4:Przycisk Naciœniêty() ekran:WyœwietlaczMP 6:Zajêty() ekran:WyœwietlaczRK :AdapterPrzyciskuW Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Techniki modelowania programowania 32 Diagramy sekwencji i kolaboracji Podsumowanie ⊲ W pierwszej iteracji: ◮ utworzone modele są tylko domysłem, ◮ model statyczny jest bardzo słabym przybliżeniem systemu, ◮ widoczna dysharmonia pomiędzy modelem statycznym i dynamicznym. ⊲ W drugiej iteracji: ◮ rozdźwięk pomiędzy modelami został częściowo usunięty, ◮ nastąpiła eksploracja interesujących szczegółów projektu. ⊲ Proces iteracyjny powinien trwać, aż projektant zsynchronizuje oba modele. ⊲ Modele statyczne są niezbędne, ale powinny zostać wzmocnione analizą dynamiki systemu. ◮ statyczne relacje są bezpośrednim wynikiem dynamicznych potrzeb aplikacji, Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 33 Techniki modelowania programowania Diagramy sekwencji i kolaboracji Wykrywanie „wyścigu zdarzeń” :AdapterPrzycisku Wyœlij :Modu³Po³¹czeniowy :RadioKomórkowe Po³_przychodz¹ce() :G³oœnik Dzwonek() Wyœlij() OdpowiedŸ() :AdapterPrzycisku Wyœlij :Modu³Po³¹czeniowy Wyœlij() :RadioKomórkowe :G³oœnik Dzwonek() Po³_przychodz¹ce() Po³¹cz(nr_tel) Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 34