Inżynieria Oprogramowania Dynamika Systemu Maszyna stanowa Prowadzący: dr inż. Janusz Jabłoński
Podstawowe diagramy UML DiagramOpisuDynamiki DiagramPrzypadkówUżycia DiagramInterakcji DiagramCzynności DiagramMaszynyStanów DiagramSekwencji DiagramKomunikacji DiagramOpisuInterakcji DiagramNastępstwa
Specyfikacja stanów obiektu - Maszyna stanów Odseparowanie obiektu od reszty systemu (obiektów w systemie i poza nim) pozwala na dokładną analizę zachowań pojedyńczego obiektu i stanowi podstawę w konstruowaniu diagramów stanu, jednakże nie pozwala na zrozumienie działania systemu jako całości Obiekt, (z przypisanymi unikalnymi własnościami: tożsamość, stan i zachowanie) może znajdować się (przyjmować) w skończonej liczbie stanów, więc może być traktowany jako automat stanów, czyli pewną maszynę, która w danym momencie może przyjmować jeden z założonych (wyróżnionych) stanów i może oddziaływać na otoczenie (ale i vice-versa) i Wykorzystywane są w modelowaniu zachowania interfejsów, klas i kooperacji i Jeden diagram przedstawia zachowanie jednego obiektu (historia życia obiektu) Maszyna stanów przedstawia zachowanie jako sekwencję stanów będących reakcją obiektów na ciągi zdarzeń, z tego względu wykorzystywane są one przede wszystkim w projektowaniu systemów interakcyjnych (modelowanie zachowania systemów interaktywnych; zdarzenie - odpowiedź)
Diagram stanów Diagram stanów wykorzystywany jest do modelowania zachowania w perspektywie projektowej - obrazuje maszynę stanową, przyjmuje postać grafu złożonego ze stanów, czynności, zdarzeń i przejść pomiędzy stanami. Zwykle, maszyna stanu jest przypisana do klasy i specyfikuje reakcje wystąpień danej klasy na zdarzenia, przychodzące, tak więc może być wykorzystany w modelowaniu historiiżycia (opis wszystkich możliwych stanów i przejść) dla obiektów danej klasy Maszyna stanów może specyfikować przypadki użycia, operacji, kolaboracji w znaczeniu przepływu steowania wówczas, częściej wykorzystuje się inne diagramy, np. diagramy aktywności. Diagram stanów przedstawia maszynę stanową z uwypukleniem zachowania obiektu w zależności od kolejności zdarzeń, i Diagram czynności jest specyficznym rodzajem diagramu stanów i Diagram czynności obrazuje przepływ sterowania między czynnościami, a diagram stanów przepływ sterowania między stanami Diagramy dynamiki najlepiej sprawdzają się w procesie analizy działania mechanizmów sterujących, takich jak np, interfejsy użytkownika czy sterowniki urządzeń.
Stan obiektu (1) Fragment historiiżycia obiektu można charakteryzować na trzy uzupełniające się sposoby: ❶ jako zbiór wartości obiektu (atrybutów i powiązań) w pewnym aspekcie podobnych (rozważane jest tu podobieństwo jakościowe), ❷ jako okres czasu, w którym obiekt oczekuje na zdarzenie, ❸ jako okres czasu, w którym obiekt przetwarza informacje Stan obiektu chwilowy - trwający w czasie, zestaw wszystkich wartości atrybutów oraz aktualnych powiązań danego obiektu z innymi obiektami, zmianę aktualnego stanu na inny może spowodować zajście pewnego zdarzenia Stan to klatka lub migawka pojedyńczej sytuacji, w której znalazł się system informatyczny Możliwe jest wykorzystanie abstrakcji dla pewnych składników stanu, zlepiając wiele stanów w jeden Np. stanem obiektu PRACOWNIK jest zestaw atrybutów o wartościach: (NAZWISKO: Kowalski, IMIĘ: Adam, ZATRUDNIONY_W: Firma 132435) Liczebność stanów dla pojedynczego obiektu: Dla 1 000 nazwisk oraz 1 000 imion i 1 000 firm, liczba stanów wynosi 1 000 000 000 Wniosek: dla prostych obiektów liczba stanów może być bardzo duża. Liczebność stanów dla bazy danych?
Notacja Stan to okoliczność lub sytuacja w jakiej się obiekt znajduje w czasie swego życia, kiedy spełnia jakiś warunek, wypełnia jakąś czynność lub czeka na jakieś zdarzenie Bezczynność Czynności wewnętrzne Przejścia wewnętrzne Sekcja dekompozycji Czynność to wieloetapowe działanie wykonane na maszynie stanowej Akcja to wykonywalna niepodzielna procedura obliczeniowa prowadząca do zmiany stanu systemu lub do przekazania wartości Zdarzenie to specyfikacja zjawiska, które zachodzi w czasie i przestrzeni, w maszynie stanowej jest wystąpieniem bodźca, który może uruchomić przejście między stanami Test OK Przejście to związek między dwoma stanami, wskazujący, że obiekt znajdujący się w pierwszym stanie wykona pewne akcje i przejdzie do drugiego stanu, zawsze gdy zajdzie określone zdarzenie i będą spełnione określone warunki
Rodzaje stanów - notacja Notacja H include S S Rodzaj stanu prosty (simple) złożony sekwencyjny (sequential composite state) złożony współbieżny (concurrent composite state) początkowy (initial state) końcowy (final state) węzeł (junction state) historyczny (history state) odnośnik (submachine reference state) pniak (stub state) Opis stan nie posiadający pod struktury (hierarchi) złożony z jednego lub więcej podstanów, ale tylko jeden z nich jest aktywny, w czasie aktywności stanu złożonego rozdzielony na dwa lub więcej podstanów; wszystkie podstany są jednocześnie aktywne (współbierzne), gdy aktywny jest stan złożony (jako całość) pseudostan służący do oznaczenia punktu startowego pseudostan służący do oznaczenia punktu finalnego pseudostan służący do łączenia łańcucha przejść w jedno przejście pseudostan, którego aktywacja uaktywnia stan poprzednio aktywny (w ramach stanu złożonego) pseudostan, do którego występuje odwołanie na diagramie; podmieniany przez stan wyspecyfikowany w odwołaniu pseudostan, do którego występuje odwołanie na diagramie, wchodzący w skład innego, złożonego stanu
Najczęściej występujące rodzaje akcji - notacja Składnia przypisanie (assignment) wołanie (call) nowy (create) usuń (destroy) wyślij (send) zakończ (terminate) powrót (return) Rodzaj akcji zmienna := wyrażenie nazwa_op (arg, ) nowy nazwa_klasy (arg, ) usuń () nazwa_sygnału (arg, ) zakończ powrót wartość_zwracana Opis przypisanie wartości do zmiennej wywołanie operacji na obiekcie; czeka się na zakończenie operacji; może być zwracana wartość utworzenie nowego obiektu usunięcie obiektu utworzenie wystąpienia sygnału i wysłanie do obiektu (ów) samodestrukcja obiektu specyfikuje instrukcję powrotu
Zdarzenia (1) Zdarzenia umożliwiają modelowanie wystąpień bodźców, które mogą uruchomić przejście między stanami w maszynie stanowej. Zdarzeniami mogą być sygnały, wywołania, upływ czasu i zmiana stanu Zdarzenie jest specyfikacją zjawiska umiejscowionego w czasie i przestrzeni Samo zdarzenie nie trwa w czasie, ale jego zaistnienie jest rejestrowane i trwa do momentu, gdy zdarzenie zostanie obsłużone - może być wpisane na listę zdarzeń oczekujących na obsługę Zdarzenie powiązane jest z dynamiką systemu Wszystko, co wywołuje pewne skutki w systemie może być modelowane jako zdarzenie Rozróżniane są zdarzenia: synchroniczne wywołania np. odlot samolotu z Warszawy i przylot tego samolotu do Paryża, asynchroniczne sygnał, upływ czasu, zmiana stanu Sygnał jest rodzajem zdarzenia reprezentującym asynchroniczny bodziec przekazywany między egzemplarzami Zdarzenia zewnętrzne - zachodzą między aktorami a systemem, natomiast Zdarzenia wewnętrzne - zachodzą między obiektami żyjącymi wewnątrz systemu
Typ zdarzenia Zdarzenia (2) Opis Składnia wołanie zmiana sygnał czas podstawowy rodzaj zdarzenia obiekt otrzymuje synchroniczneżądania wykonania operacji zdarzenie używane w modelowaniu zmian stanu obiektu po otrzymaniu odpowiedzi na wysłany przez siebie komunikat spełnienie warunku typu Boolean, np. when (x =10); użyteczny w modelowania zdarzeń przychodzących z zewnątrz systemu trzymanie przez obiekt asynchronicznegożądania wykonania operacji; bezwzględny lub względny upływ określonego czasu, np. after (5 msec.) op (a : T) when(wyrażenie) nazwa_syg (a : T) after (czas) Zdarzenie jest klasyfikatorem opisu pewnego zjawiska i jako taki może posiadać atrybuty, np. zdarzenie oprzylot_samolotu może mieć datę i godz. przyloty swoje atrybuty, jest to zapisywane: odlot samolotu(data, godz.) Obsługa zmian jest kosztowna obliczeniowo wymaga ciągłej ewaluacji warunku. Inną wadą tego typu zdarzeń jest też przesłonięcie związku typu przyczyna-skutek, czyli przesłonięcie tego, co wywołało spełnienie warunku - eksponowany jest tu jedynie sam warunek, dlatego zdarzenia typu zmiana powinny być wykorzystywane tylko wtedy, gdy inne sposoby wydają się nienaturalne.
Zdarzenia - przykład Deklaracja zdarzenia Bezczynność «signal» odwieszonosłuchawkę odwieszonosłuchawkę / przerij połączenie() Zdarzenie Aktywność i Rzeczy, które się dzieją modelowane są w UML jako zdarzenia uruchamiające przejścia między stanami i Notacja graficzna pozwala na deklarację zdarzenia (sygnał, odwieszonosłuchawkę)
Modelowanie obiektów reaktywnych Modelowanie zachowania obiektów reaktywnych obejmuje modelowanie jego historii życia od utworzenia do zniszczenia w szczególności jego stanów stabilnych Modelując zachowanie obiektu reaktywnego, określić należy trzy podstawowe elementy: stany stabilne, zdarzenia uruchamiające przejścia i akcje wykonywane przy każdej zmianie stanu nazwa stanu entry/akcja1/akcja2/ do/aktywność1/aktywność2/ exit/akcja1/akcja2/... Czynności wewnętrzne akcja - operacja, której nie można przerwać (atomowa) lista akcji - akcja1/akcja2/ - traktowana, jak pojedyncza operacja, aktywność - operacja, którą można przerwać, lista aktywności - podobnie, jak lista akcji, entry - słowo kluczowe specyfikujące operacje, zawsze wykonywane na wejściu do stanu (rodzaj setup u), exit - operacje zawsze wykonywane na wyjściu (rodzaj porządkowania po ), do - operacje wykonywane w trakcie. i Stan stabilny warunki w jakich znajduje się obiekt przez pewien (zauważalny) czas Dla modelowanego zachowania obiektu reaktywnego, można określić jego akcje przez skojarzenie ich z przejściami lub stanami i Maszyna (automat) Mealy ego wszystkie akcje związane z przejściami i Maszyna (automat) Moore a wszystkie akcje związane ze stanami W praktyce opracowywane diagramy stanowe są kombinacją maszyn Moore a i Mealy ego
Wytyczne modelowania obiektów reaktywnych Ustalenie otoczenia maszyny stanowej: klasa, przypadek użycia, cały system Pokaż stan początkowy i końcowy obiektu; warunki wstępne i końcowe Odnalezienie stanów stabilnych obiektu i ustalenie ich hierarchii (top-down) Ustal znaczący porządek częściowy stanów stabilnych w historii życia obiektu Wskaż zdarzenia, które mogą uruchamiać przejścia międzstanami Skojarz akcje z przejściami (automat Mealy ego) lub ze stanami (Moore a) Postaraj się uprościć maszyny stanów przez użycie podstanów, rozgałęzień, rozwidleń, scaleń i stanów wznowienia Sprawdź czy wszystkie stany są osiągalne pod wpływem pewnej kombinacji zdarzeń Sprawdź, czy nie ma stanów-pułapek, to znaczy takich których nigdy nie da się opuścić Zweryfikuj działanie zbudowanej maszyny stanowej, ręcznie lub automatycznie (dostępne narzędzia), porównując z pożądanym ciągiem zdarzeń i reakcji
Przejście (1) Przejście może być opisane przez: zdarzenie, które je wywołało (odpaliło), warunek oraz akcję (akcje), która jest wykonywana przed ewentualną zmianą stanu przejście wewnętrzne (internal transition) bez zmiany stanu stan zdarzenie [warunek] /akcja samo-przejście (selftransition) zdarzenie [warunek] /akcja zdarzenie [warunek] /akcja stan 1 stan 2 przejście zewnętrzne (external transition) [warunek] /akcja stan 1 stan 2 przejście automatyczne (completion transition) operacje wyspecyfikowane po słowach kluczowych entry, exit i do zostały ukończone samo-przejścia w przeciwieństwie do przejścia wewnętrznego, przy wychodzeniu ze stanu wykonywane są wszystkie akcje wyspecyfikowane po słowie kluczowym exit, podobnie - przy ponownym wchodzeniu do stanu - są wykonywane akcje wyspecyfikowane po słowie kluczowym entry.
przejścia zewnętrzne: Przykłady przejść Oczekiwanie otrzymanie zamówienia (suma)[suma < =100 zł] otrzymanie zamówienia (suma) [suma > 100 zł.] Przetwarzanie zamówienia kredyt zatwierdzony/ licz debet () Anulowanie zamówienia kredyt odrzucony Zatwierdzeniekredytu warunek występujący w specyfikacji przejścia różni się od warunku w zdarzeniu typu zmiana - jest ewaluowany tylko jeden raz. przejścia wewnętrzne: Wprowadzanie hasła entry/ ustaw echo na gwiazdkę/ haslo_zeruj() exit/ ustaw normalne echo znak/ obsłuż znak czyść/ haslo_zeruj() pomoc/ wyświetl pomoc Jedno zdarzenie może wyzwalać (stanowić tryger) więcej niż jednego przejście - wtedy wszystkie przejścia odpalane przez dane zdarzenie należy opatrzyć wzajemnie wykluczającymi się warunkami (w ramach jednego wątku sterowania). Jeśli nie przykryto wszystkich możliwości, zdarzenie zostanie zignorowane Warunek typu Boolean, występujący w specyfikacji przejścia, może dotyczyć zarówno atrybutów maszyny stanu, jak i argumentów zdarzenia, które odpaliło dane przejście. Warunek podlega oszacowaniu tylko raz, w momencie wystąpienia zdarzenia. Jeśli warunek przyjmie wartość TRUE - przejście będzie miało miejsce.
Stany złożone sekwencyjne; przykład (1) maszyna stanów dla obiektów klasy Samochód wybrano 1-szy bieg Jazda na 1-szym biegu naciśnięto hamulec Samochód zatrzymany poprzedni bieg następny bieg Naciśnięto hamulec wsteczny bieg Naciśnięto hamulec Jazda na 2-gim biegu Jazda na wstecznym Samochód w ruchu wybrano 1-szy bieg naciśnięto hamulec Samochód zatrzymany następny bieg wsteczny bieg Jazda na 1-szym biegu Jazda na 2-gim biegu Jazda na wstecznym poprzedni bieg zastosowanie generalizacji Jazda Jazda na 1-szym biegu wybrano 1-szy bieg poprzedni bieg następny bieg naciśnięto hamulec Samochód zatrzymany Jazda na 2-gim biegu Jazda na wstecznym wybrano wsteczny bieg Notacja stanu złożonego sekwencyjnego
Maszyna stanu dla automatu sprzedającego Stan spoczynku wrzucono monetę (wartość) / inicjuj bilans kasowanie / zwróć monety Zliczanie pieniędzy wrzucono monetę (wartość) /dodaj do bilansu [brak pozycji] przejście automatyczne wybór (pozycja) [reszta < 0] do/ wydaj pozycję do/ wydaj resztę [reszta = 0] [reszta > 0] do/sprawdź wybraną pozycję i oblicz resztę do/przesuń ramię do właściwego wiersza do/przesuń ramię do właściwej kolumny do/wypchnij pozycję
Stany złożone współbieżne Równoważne diagramy dla stanów złożonych składających się ze współbieżnych podstanów synchronizacja wewnętrzna Nietypowe ale możliwe wyjście ze stanu synchronizacja zewnętrzna Samochód Typowe wyjście ze stanu następuje gdy wszystkie podstany osiągnęły ich stan końcowy Zagregowane obiekty mają diagramy stanu - połączone tworzą diagram dla agregatu samochód (uwzględniający współbieżność operacji) Zapłon Bieg Hamulec Gaz Zapłon Wyłączony kluczyk max w prawo [Biegi w pozycji 0] kluczyk do poz wyłącz Zapala Włączony Biegi... Hamulec Wyłąćz hamulec naciśnięty hamulec puszczony Włącz. Gaz... Współbieżność ma źródło w trzech sytuacjach: ❶ obiekty mogą być zagregowane ❷ pewne operacje w ramach jednego obiektu można wykonywać współbieżnie ❸ obiekty mogą działać asynchronicznie
Współbieżność w jednym obiekcie oraz odwołanie do innych obiektów Obiekt może wykonywać współbieżnie dowolną liczbę akcji. Wypłata Gotowy do działania do/wydaj gotówkę do/oddaj kartę Podział na współbieżne procesy Synchronizacja: wszystkie współbieżne procesy muszą się zakończyć, aby automat był ponownie gotowy do działania Oczekiwanie na polececenia polecenie Pomoc include Pomoc Pomoc polecenie Uruchom entry/ wyświetl ekran pomocy exit/ usuń ekran pomocy include Uruchom stany, do których występują odwołania na diagramie zapytanie/ pokaż odpowiedź
Przykłady diagramów Diagram typu: cyklżycia obiektu kupno urządzenia przez klienta Cyklżycia systemu H Przygotowanie Inicjowanie Urządzenie niesprzedane Urządzenie sprzedane Opracowanie Budowanie klient zwrócił urządzenie Programowanie after (data gwarancji) Diagram typu: przepływ sterowania Modelowanie Specyfikacja Analiza Przekazanie Instalacja Ruch białych when (mat) when (pat) czarne wygrywają Projektowanie Konfigurowanie ruch czarnych ruch białych when (pat) remis Ruch czarnych when (mat) białe wygrywają Ocena Wycofanie
zastosowania stanu typu pniak W X U V Y W X U V Y Zawartość stanu złożonego Jazda została ukryta. wybrano 1-szy bieg Jazda naciśnięto hamulec Samochód zatrzymany Jazda na wstecznym wybrano wsteczny bieg
Wywołania Sygnał reprezentuje nazwany obiekt, który jest asynchronicznie wysyłany (rzucany) przez jeden element, a odbierany (chwytany) przez inny Atrybuty sygnału służą jako jego parametry Dla wysyłanego sygnału Zderzenie można określić jego parametry, np. Zderzenie(5.3) Sygnał Parametr «signal» Zderzenie siła : Float «send» KierującyRuchem pozycja prędkość przejdźdo() Zależność send Sygnał może być wysyłany w wyniku przejścia w maszynie stanowej lub przekazania komunikatu w interakcji. Wykonana operacja także może wysyłać sygnały i Wyjątki to najczęściej występujący, w większości języków programowania, rodzaj sygnałów wewnętrznych pojawiających się w modelach i Wyjątki mają wiele wspólnych cech z klasami (mogą mieć egzemplarze, występować w uogólnieniach, mogą mieć atrybuty i operacje)
Wywołania W odróżnieniu od sygnału, reprezentującego zdarzenie asynchronicznie, wywołanie jest zazwyczaj reprezentacją zdarzenia synchronicznego Zdarzenie wywołania Sterowanie ręczne włączautomatycznegopilota(zwykły) Parametr Sterowanie automatyczne Na diagramie Zdarzenie wywołania i sygnałowe są nierozróżnialne Sygnał jest zazwyczaj obsługiwany przez maszynę stanową, a wywołanie - przez metodę i Nie ma symboli graficznych odróżniających sygnał od wywołania, rozróżnienie zapisane jest nieformalnie w modelu i Zarówno zdarzenie sygnałowe jak również wywołania może uruchomić przejście w maszynie stanowej ina podstawie deklaracji operacji odbiorca dokona rozróżnienia
Upływ czasu i zmiana stanu Upływ czasu reprezentowany jest przez zdarzenie czasowe, które modelowane jest za pomocą słowa klucz after i wyrażenia; prostego (np..after 20ms) lub złożonego (np. after 20ms since existing Bezczynność) Zdarzenie zmiany dotyczy zmiany stany lub spełnienia pewnego warunku, modeluje się je za pomocą słowa klucz when (np. when time 11:35 lub when pułap > 1000m ) Zdarzenie zmiany when(13:45) / autotest() Bezczynność Zdarzenie czasowe Zdarzenie zmiany modeluje ciągle badany warunek, jednakże można je zanalizować i wyznaczyć chwile, w których należy sprawdzać ten warunek after(2s) / przerwijpołączenie() Aktywność i after(2s) - Przyjęcie stanu bieżącego prze obiekt jest czasem początkowym i zdarzenie zmiany dotyczy zmiany stanu lub spełnienie pewnego warunku
Wysyłanie i odbieranie zdarzeń Każde zdarzenie sygnałowe i wywołania jest związane z co najmniej dwoma obiektami: wysyłającym sygnał lub wywołującym operacje oraz obiektem, dla którego sygnał lub wywołanie jest przeznaczone ZarządcaPanelu «signals» naciśniętoprzycisk(p : Przycisk) włączonozasilanie wyłączonozasilanie Klasa aktywna Sygnały rozsyłanie wysyłanie komunkatów do wielu obiektów rozgłaszanie wysyłanie komunikatów do wszystkich (obiekt reprezentujący podsystem) Sygnały są asynchroniczne, wywołania asynchroniczne są również sygnałami, więc znaczenie zdarzeń ma wiele wspólnego ze znaczeniem obiektów aktywnych i pasywnych i Każdy egzemplarz klasy może wywołać operację lub wysłać sygnał do innego obiektu i Wysłanie sygnału nie wstrzymuje czynności obiektu nadawcy, nie czeka na odzew odbiorcy i Aktor będący w interakcji z systemem może wysłać sygnał i nie czekając na odpowiedź systemu kontynuować inne swoje czynności
Generalizacja sygnałów Konkretny sygnał, z ustalonymi wartościami atrybutów jest wystąpieniem odpowiedniego klasyfikatora sygnał. «sygnał» zdarzenie czas sygnał abstrakcyjny Zdarzenia związane z akcjami użytkownika: «sygnał» użycie_urz_wejściowego urządzenie «sygnał» klik_klawisza_myszy lokalizacja «sygnał» naciśnięcie_klawisza_klawiatury kod_znaku «sygnał» naciśnięcie_klawisza_myszy «sygnał» sterujący «sygnał» znakowy sygnały konkretne «sygnał» puszczenie_klawisza_myszy «sygnał» spacja «sygnał» alfanumeryczny «sygnał» interpunkcyjny
Modelowanie rodziny sygnałów «signal» Zderzenie czujnik : Integer «signal» Sygnałrobota «signal» AwariaOsprzętu Przykłady zdarzeńtypu sygnał: - odlot samolotu ( linia lotnicza, nr lotu, miasto ) - naciśnięcie klawisza myszy ( klawisz, lokacja kursora ) - wprowadzenie ciągu znaków ( tekst ) - podniesienie słuchawki telefonu - wybranie cyfry numeru telefonu (cyfra) - wkroczenie obrotów silnika w niebezpieczną strefę «signal» AwariaNarządówRuchu «signal» WyładowanieAkumulatorów «signal» AwariaKamery «signal» AwariaStabilizatora «signal» ZatarcieSilnika i W systemach sterowanych zdarzeniami sygnały tworzą hierarchię i Można rozróżnić sygnały zewnętrzne i wewnętrzne i Wykorzystać uszczegółowienia i polimorfizm Modelując rodzinę sygnałów (zewnętrznych lub wewnętrznych): Rozważ rodzaje sygnałów, na które może reagować ustalony zbiór obiektów aktywnych Wyszukaj podobne rodzaje sygnałów i utwórz hierarchię W maszynach stanowych obiektów aktywnych, znajdź miejsca, w których można wykorzystać polimorfizm
Modelowanie wyjątków i W UML wyjątki są rodzajem sygnałów - stereotyp i Mogą być kojarzone ze specyfikacją operacji i Modelowanie wyjątków postrzegane jest jako przeciwieństwo modelowania sygnałów i Modelowana rodzina sygnałów dotyczy sygnałów odbieranych przez obiekt aktywny, natomiast wyjątki mogą być zgłaszane przez operacje obiektu «exception» Wyjątek ustalfunkcjęobsługi() pierwszafunkcja() ostatniafunkcja() Dodaj() Usuń() Zbiór Element «send» «exception» Duplikat «send» «exception» Przepełnienie «send» «exception» BrakElementu Modelując rodzinę sygnałów: Rozważ sytuacje wyjątkowe dla każdej klasy i jej operacji oraz wszystkich interfejsów Przedstaw hierarchię tych wyjątków od ogółu do szczegółu, jeśli potrzeba również pośrednie Określ wyjątki dla poszczególnych operacji
Rady i wskazówki Modelując wyjątki: Dla wszystkich klas, interfejsów oraz ich operacji rozważ sytuacje wyjątkowe Przedstaw hierarchię wyjątków, od ogółu do szczegółu (top-down), z wyjątkami Określ wyjątki dla poszczególnych operacji, jawnie za pomocą zależności send od operacji do jej wyjątków, lub w specyfikacji operacji Modelując zdarzenia: w oparciu o wspólne cechy sygnałów podobnych przedstaw ich hierarchię nie używaj wysyłania sygnałów w zastępstwie klasycznego przepływu sterowania sprawdź czy z każdym bytem otrzymującym sygnał skojarzono maszynę stanową upewnij się, że oprócz bytów reagujących na zdarzenia istnieją byty, które będą na zdarzenia odpowiadały Przedstawiając zdarzenia na diagramie UML przedstaw ich hierarchię, a fakt ich użycia ukryj w specyfikacji klasy lub operacji, powodujących te zdarzenia lub na nie odpowiadających
Maszyny stanowe Maszyny stanowe służą do modelowania zachowania jednego obiektu, natomiast interakcje do modelowania zachowania zestawu współpracujących obiektów. Maszyny stanowe służą do modelowania dynamicznych aspektów systemu uwzględniają historiężycia egzemplarzy klasy, przypadku użycia lub systemu egzemplarze reagują na sygnały, wywołania operacji i upływ czasu (zdarzenia) reakcją na zdarzenia są wykonywane czynności, które są zależne od bieżącego stanu obiektu (czynność wieloetapowe działanie wykonywane na maszynie stanowej) Stany obiektu są okolicznościami lub sytuacjami, w jakich obiekt znajduje się w czasie swego życia, gdy wykonuje jakąś czynność, gdy spełnia jakiś warunek, lub czeka na jakieś zdarzenie Maszyna stanowa określa ciąg stanów, przyjmowanych przez obiekt, które są odpowiedzią na zdarzenia zachodzące w czasie jego życia łącznie z reakcją obiektu na te zdarzenia
wprowadź(z) [z /= < ] / return false Przykład diagramu analizator składni Oczekiwanie wprowadź(z) [z /= > ] / znacznik.append(z); return false wprowadź(z)[z== < ] wprowadź(z)[z== ; ] / return true PobieranieZnacznika wprowadź(z)[z== > ] wprowadź(z) [z /= ; ] / treść.append(z); return false Pobieranie treści i jeśli nie zdefiniowano stanu końcowego to maszyna działa w nieskończoność
Przykład diagram stanów (2) Stan początkowy wyślijfaks Bezczynność dzwonek Przejście automatyczne Stan zagnieżdżony nagłówekok Łączenie Przetwarzanie odwieszonosłuchawkę Transmisja Zdarzenie Stan błąd / wydrukuj raport Akcja Porządkowanie entry / podnieśsłuchawkę exit / rozłącz sumakontrolnaok Akcja Zdarzenie Stan złożony i Diagram stanów modeluje zachowania obiektu w zależności od kolejności zdarzeń uwypuklając przepływ sterowania między stanami i Specyfikując system rozpocznij od stanów stabilnych (Bezczynność, Transmisja )
Maszyna stanowa - termostat Stan początkowy Stan końcowy Bezczynność Zdarzenie zazimno(oczekiwanatemp) zaciepło (OczekiwanaTemp) TempOK Grzanie Akcja Chłodzenie TempOK zaciepło (OczekiwanaTemp) Gotowe / pełnamoc() Rozpalanie Ogrzewanie Stan zagnieżdżony zazimno(oczekiwanatemp) i Maszyny stanowe na ogół określają dynamikę, klasy, przypadku użycia, systemu
Rady i wskazówki Pamiętaj, diagramy stanów są rzutami w modelu dynamiki systemu, na jednym diagramie można przedstawić zachowanie jednego obiektu reaktywnego, czyli nie można przedstawić wszystkich aspektów dynamiki systemu na jednym diagramie Uwypukla, jeden dynamiczny aspekt systemu Przedstawia tylko te byty, które są niezbędne do zrozumienia tego aspektu Uwzględnij szczegóły odpowiednie do przyjętego poziomu abstrakcji, z dodatkami, które są niezbędne do zrozumienia tego na czym Ci zleży Rysując diagram: nadaj mu nazwę, określającą jego przeznaczenie rozpocznij od modelowania stanów stabilnych, następnie modeluj dopuszczalne przejścia między stanami; później rozgałęzienia, współbieżność, przepływ obiektów; które mogą być przedstawione na innym diagramie układaj obiekty w sposób generujący minimalną liczbę przecinających się linii
KONIEC