350 likes | 658 Views
Referat. Diagramy Stanu Marek Laskus Tomasz Niedziałkowski. Czym jest Diagram stanu ?. Diagram stanów (State diagram) jest uzupełnieniem diagramu klas. Pokazuje on wszystkie stany jakie obiekt klasy może mieć oraz zdarzenia, które powodują przejście między tymi stanami.
E N D
Referat Diagramy Stanu Marek Laskus Tomasz Niedziałkowski
Czym jest Diagram stanu ? Diagram stanów (State diagram) jest uzupełnieniem diagramu klas. Pokazuje on wszystkie stany jakie obiekt klasy może mieć oraz zdarzenia, które powodują przejście między tymi stanami. Diagram stanów w swojej idei nawiązuje do automatu skończonego. Opisuje on stany pewnego procesu, które są istotne z punktu widzenia modelu pojęciowego tego procesu, oraz przejścia pomiędzy stanami. W swojej pierwotnej idei diagram stanów miał odwzorowywać stany obiektów pewnej klasy podczas ich cyklu życiowego oraz przejścia (transitions) pomiędzy tymi stanami powodowane przez zdarzenia lub komunikaty. Jak się wydaje (sądząc z przykładu zamieszczonego w dokumentacji UML) ta pierwotna idea uległa jednak na tyle silnej modyfikacji, że w istocie diagramy stanów nie są tymi diagramami stanów, o których jest mowa w teorii automatów. Są to dość klasyczne diagramy przepływu sterowania (flowcharts), z szeregiem drugorzędnych opcji syntaktycznych i semantycznych. Diagramy stanów nie są tworzone dla każdej klasy; tylko dla tych, które mają wiele dobrze zdefiniowanych stanów wpływających na jej zachowanie. Diagramy stanów mogą również zostać narysowane dla całego systemu.
Główne zagadnienia • Maszyna stanu • Stany • Zdarzenia • Przejścia • Akcje • Stany złożone sekwencyjne • Współbieżności
Obiekt, w świetle swoich własności (unikalna tożsamość, stan i zachowanie) może być traktowany jako automato skończonej liczbie stanów, czyli pewną maszynę, która może znajdować się w danym momencie w jednym z wyróżnionych stanów, a także może oddziaływać na otoczenie i vice-versa. Maszyna stanu jest grafem skierowanym, reprezentowanym za pomocą notacji diagramów stanu, którego wierzchołki stanowią stany obiektu, a łuki opisują przejścia między stanami. Przejście między stanami jest odpowiedzią na zdarzenie. Zwykle, maszyna stanu jest przypisana do klasy i specyfikuje reakcje wystąpień danej klasy na zdarzenia, które do nich przychodzą, stanowiąc w ten sposób model historii życia (opis wszystkich możliwych stanów i przejść) dla obiektu danej klasy. Maszyna stanu
Stan obiektu Zestawwartościwszystkich(?)atrybutóworazaktualnychpowiązańdanegoobiektu z innymiobiektami w pewnejchwiliczasowej. Stan obiektutrwa w czasieaż do momentuzajściazdarzenia, którespowodujezmianęaktualnegostanu na inny. Innymi słowy, stan to “zdjęcie migawkowe” jednej sytuacji, w której znalazł się nasz system informatyczny. Częstoabstrahuje się od pewnychskładników stanu, lub “zlepia się” wiele stanów w jeden. NP.stanem obiektu OSOBA jest następujący zestaw wartości: (NAZWISKO: Kowalski, IMIĘ: Jan, STANOWISKO: księgowy) Takiobiekt może mieć wiele stanów, bo może być 1 000 000 nazwisk, 1 000 imion i 1000 stanowisk, to liczba stanów wynosi 100 000 000 000. Jak widać nawet mały obiekt może mieć wiele stanów. Tak więc liczba stanów dla całej bazy danych będzie wynosiła: iloczyn liczby wszystkich możliwych stanówdla każdej maszyny stanuprzez liczbę wszystkich obiektów wszystkich klas.
Stan obiektu • Stan, w podstawowym znaczeniu, dotyczy pewnego fragmentu historii życia obiektu i można go 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 w którym obiekt przetwarza
Nazwa stanu entry/akcja1/akcja2/… do/aktywność1/aktywność2/… exit/akcja1/akcja2/... Stan obiektu - notacja Stan jest oznaczany za pomocą prostokąta z zaokrąglanymi rogami. Stan może mieć nazwę, ale często jest charakteryzowanyjedyniepoprzezwewnętrzne operacje. akcja- operacja, której nie można przerwać (atomowa) lista akcji - akcja1/akcja2/… - traktowana jest, 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 (rodzajsetup-u), exit – operacja zawsze wykonywane na wyjściu (rodzaj porządkowania “po”), do – operacje wykonywane w trakcie.
Rodzaje stanów - Notacja Rodzaj stanu Opis Notacja prosty (simple) Stan nie posiadający substruktury złożony sekwencyjny (sequential composite state) Złożony z jednego lub więcej podstanów, z których tylkojeden jest aktywny, gdy aktywny jest stan złożony Podzielony na dwa lub więcej współbieżnych podstanów; wszystkie podstany są jednocześnie aktywne, gdy aktywny jest stan złożony (jako całość) złożony współbieżny (concurrent composite state) początkowy (initial state) pseudostan służący do oznaczenia punktu startowego pseudostan służący do oznaczenia punktu finalnego końcowy (final state)
Rodzaje stanów - Notacja Rodzaj stanu Opis Notacja węzeł (junction state) 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) historyczny (history state) H odnośnik (submachine reference state) pseudostan, do którego występuje odwołanie na diagramie; podmieniany przez stanwyspecyfikowany w odwołaniu include S pniak (stub state) pseudostan, do którego występuje odwołanie na diagramie, wchodzący w skład innego, złożonego stanu S
Zdarzenie Zdarzeniem jest coś, co następuje w jednym punkcie czasowym i warte jest analizowania z punktu widzenia celów projektowanego systemu. Samo zdarzenie nie trwa w czasie, ale fakt zaistnienia zdarzenia jest rejestrowanyi trwa aż do momentu, gdy jakiś podmiot go “skonsumuje”( innymi słowy zdarzenie nie musi być obsłużone od razu w momencie wystąpienia - może być wpisane na listę zdarzeń oczekujących na obsługę). Wszystko, co wywołuje pewne skutki w systemie może być modelowane jako zdarzenie. Zdarzenia mogą być uporządkowane w czasie (synchroniczne), np. odlot samolotu z Warszawy i przylot tego samolotu do Paryża, ale możemy także rozpatrywać pewne zdarzenia jako współbieżne, np. naciśnięcie klawisza myszy i odlot samolotu są zdarzeniami wzajemnie niezależnymi i mogą być rozpatrywane jako współbieżne. Zdarzenie w sensie opisu pewnego zjawiska jest klasyfikatorem i jako klasyfikator może posiadać atrybuty, np. zdarzenie odlot samolotu może mieć datę i godz. odlotu jako swoje atrybuty, co zapisujemy następująco: odlot samolotu (data, godz.). Wystąpienie zdarzenia jest odlotem z ustalonymi, konkretnymi wartościami obu atrybutów.
op (a : T) when(wyrażenie) nazwa_syg (a : T) after (czas) Zdarzenie - Typy Typ zdarzenia Opis Składnia otrzymanie przez obiekt synchronicznego żądania wykonania operacji - najbardziej podstawowy rodzaj zdarzenia wołanie spełnienie warunku typu Boolean, np. when (x =10); zdarzenie typu zmiana jest użyteczne np. do modelowania sytuacji, gdy obiekt zmienia stan po otrzymaniu odpowiedzi na wysłany przez siebie komunikat zmiana otrzymania przez obiekt asynchronicznego żądania wykonania operacji; użyteczne do modelowania zdarzeń przychodzących z zewnątrz systemu sygnał upłynięcie czasu określonego w sposób bezwzględny lub względny, np. after (5 sec.) czas
Zdarzenie Obsługa zdarzenia typu zmiana jest kosztowna obliczeniowo, ponieważ wymaga ciągłej ewaluacji warunku. 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. Sygnały mogą być reprezentowane na diagramach podobnie jak klasy, ale oznaczone stereotypem «sygnał» («signal»); parametry sygnału są tu deklarowane jako atrybuty. Między sygnałami mogą występować związki generalizacji, co oznacza, że mogą dziedziczyć parametry po innych sygnałach oraz “odpalać” przejścia zgodnie ze specyfikacją sygnałów, po których dziedziczą. 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
zdarzenie czas «sygnał» naciśnięcie_klawisza_klawiatury kod_znaku «sygnał» sterujący «sygnał» znakowy Sygnały - przykład Konkretny sygnał, z ustalonymi wartościami atrybutów jest wystąpieniem odpowiedniego klasyfikatora sygnał. «sygnał» użycie_urz_wejściowego urządzenie «sygnał» Zdarzenia związane z akcjami użytkownika: sygnał abstrakcyjny «sygnał» klik_klawisza_myszy lokalizacja «sygnał» naciśnięcie_klawisza_myszy «sygnał» puszczenie_klawisza_myszy sygnały konkretne
zdarzenie [warunek] /akcja stan 2 stan 1 przejście stan zdarzenie [warunek] /akcja Przejście W ogólności, przejście może być opisane przez zdarzenie, które je odpaliło (wywołało), warunek oraz akcję (akcje), która jest wykonywana przed ewentualną zmianą stanu. Wyróżniamy cztery rodzaje przejść: 1. przejście zewnętrzne (external transition) 2. przejście wewnętrzne (internal transition) 3. samo-przejście (selftransition) 4. przejście automatyczne (completion transition) zdarzenie [warunek] /akcja [warunek] /akcja stan 1 stan 2
Przejście - przykłady Przetwarzanie zamówienia Oczekiwanie otrzymanie zamówienia (suma) [suma < =100 zł.] przejścia zewnętrzne: otrzymanie zamówienia (suma) [suma > 100 zł.] kredyt zatwierdzony/ licz debet () Zatwierdzenie kredytu kredyt odrzucony Anulowanie zamówienia 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 przejścia wewnętrzne:
Rodzaje Akcji Rodzaj akcji Opis Składnia przypisanie (assignment) przypisanie wartości do zmiennej zmienna := wyrażenie wywołanie operacji na obiekcie; czeka się na zakończenie operacji; może być zwracana wartość wołanie (call) nazwa_op (arg, …) nowy (create) utworzenie nowego obiektu nowy nazwa_klasy (arg, …) usuń (destroy) usunięcie obiektu usuń () wyślij (send) utworzenie wystąpienia sygnału i wysłanie do obiektu (ów) nazwa_sygnału (arg, …) zakończ (terminate) samodestrukcja obiektu zakończ powrót (return) specyfikuje instrukcję powrotu powrót wartość_zwracana
Przykłady Diagramów Diagram typu: cykl życia obiektu kupno urządzenia przez klienta Urządzenie niesprzedane Urządzenie sprzedane klient zwrócił urządzenie after (data gwarancji) Diagram typu: przepływ sterowania when (szach mat) Kolejka białych czarne wygrywają when (pat) ruch białych remis ruch czarnych when (pat) Kolejka czarnych białe wygrywają when (szach mat)
Stan złożony sekwencyjny Stan prosty nie posiada substruktury, jest specyfikowany przez zbiór operacji (akcji, aktywności) oraz przejść. Stan złożony może być zdekomponowany na stany bardziej proste; dekompozycja jest tu rodzajem specjalizacji. Każdy z podstanów dziedziczy przejścia nadstanu. Tylko jeden z podstanów może być aktywny w danym momencie. Generalizacja stanów jest formą zagnieżdżania stanów. przykładowa maszyna stanów dla klasy Samochód wybrano 1-szy bieg Jazda do przodu na 1-szym biegu naciśnięto hamulec Samochód zatrzymany wybrano poprzedni bieg wybrano następny bieg wybrano wsteczny bieg naciśnięto hamulec naciśnięto hamulec Jazda do przodu na 2-gim biegu Jazda do tyłu
Stan złożony sekwencyjny- przykład zastosowanie generalizacji stanów dla poprzedniego diagramu stanów naciśnięto hamulec wybrano 1-szy bieg Samochód zatrzymany Jazda wybrano następny bieg wybrano wsteczny bieg Jazda do przodu na 1-szym biegu Jazda do przodu na 2-gim biegu Jazda do tyłu wybrano poprzedni bieg
Stan złożony sekwencyjny - przykład Tu została wykorzystana notacja dla stanów złożonych z UML. wybrano 1-szy bieg Jazda Jazda do przodu na 1-szym biegu wybrano poprzedni bieg naciśnięto hamulec Samochód zatrzymany wybrano następny bieg Jazda do przodu na 2-gim biegu Jazda do tyłu wybrano wsteczny bieg
Maszyna stanu dla automatu sprzedającego wrzucono monetę (wartość)/ inicjuj bilans Zliczanie pieniędzy wrzucono monetę (wartość) /dodaj do bilansu Stan spoczynku kasowanie / zwróć monety przejście automatyczne [brak pozycji] wybór (pozycja) [reszta < 0] [reszta = 0] do/sprawdź wybraną pozycję i oblicz resztę do/ wydaj pozycję do/ wydaj resztę [reszta > 0] do/przesuń ramię do właściwego wiersza do/przesuń ramię do właściwej kolumny do/wypchnij pozycję
Stan złożony współbieżny Innym rodzajem stanów złożonych są stany składające się ze współbieżnych podstanów. • synchronizacja wewnętrzna Takie wyjście ze stanu też jest możliwe (sytuacja nietypowa). Wyjście ze stanu - w typowej sytuacji - następuje wtedy, gdy we wszystkich podstanach został osiągnięty ich stan końcowy. • synchronizacja zewnętrzna Oba diagramy są równoważne.
Współbieżność - obiekty zagregowane 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, a także obiekty mogą działać asynchronicznie. Zapłon kluczyk do max w prawo [Biegi w pozycji 0] Samochód Wył. Zapala Włącz. kluczyk do poz wył Zapłon Bieg Hamulec Gaz Biegi .... Gaz .... Hamulec hamulec naciśnięty Każdy obiekt wchodzący w skład agregatu posiada tu własny diagram stanu. Można je łączyć, tworząc diagram dla agregatu samochód (uwzględniając współbieżność operacji). Wył. Włącz. hamulec puszczony
Współbieżność w ramach jednego obiektu Obiekt może wykonywać współbieżnie dowolną liczbę akcji. Maszyna stanu dla automatu do wypłacania pieniędzy Wypłata do/wydaj gotówkę Gotowy do działania do/oddaj kartę Synchronizacja: wszystkie współbieżne procesy muszą się zakończyć, aby automat był ponownie gotowy do działania Podział na współbieżne procesy
Przykład odwołania do innego stanu Oczekiwanie na polececenia include Pomoc polecenie Pomoc polecenie Uruchom Pomoc include Uruchom entry/ wyświetl ekran pomocy exit/ usuń ekran pomocy stany, do których występują odwołania na diagramie zapytanie/ pokaż odpowiedź
Przykład zastosowania stanu typu pniak W Y X U V W Y X U V
Przykład zastosowania stanu typu pniak Zawartość stanuzłożonegoJazda została ukryta. wybrano 1-szy bieg Jazda naciśnięto hamulec Samochód zatrzymany Jazda do tyłu wybrano wsteczny bieg