Wykład 8 Model dynamiczny (2) Diagramy stanów dr inż. Ewa Stemposz ewag@ipipan.waw.pl
Zagadnienia Diagramy stanów: Maszyna stanowa Notacja BNF; Prezentowanie diagramu stanów Stan Zdarzenie Przejście Stan złożony sekwencyjny Stan złożony współbieżny
Maszyna stanowa Obiekt, w świetle swoich własności (unikalna tożsamość, stan i zachowanie) może być traktowany jako automat o skończonej liczbie stanów, czyli jako maszyna, 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 stanowa jest grafem skierowanym, reprezentowanym za pomocą notacji diagramów stanów. Wierzchołki grafu stanowią stany obiektu/obiektów, a łuki opisują przejścia między stanami. Przejście między stanami jest odpowiedzią na zdarzenie. Często, maszyna stanowa jest przypisana do jednej klasy i specyfikuje reakcje obiektów tej klasy na zdarzenia, które do nich przychodzą (najczęściej są to komunikaty), stanowiąc w ten sposób model historii życia obiektów klasy (opis wszystkich możliwych stanów i przejść). Ten rodzaj maszyny stanowej, nazywa się protokołową maszyną stanową. Z kolei, maszyna stanowa zachowania – dotyczy zmian stanów nie jednego lecz wielu obiektów w aspekcie pewnego fragmentu zachowania systemu. Stan 1 Stan 2 Stan 3 Stan n
Adaptacja notacji BNF Symbol Znaczenie = struktura danych po lewej stronie symbolu = składa się z elementów wyspecyfikowanych po stronie prawej + odpowiada słowu “i”; wykorzystywane do agregowania elementów [ … ] definiowana struktura zawiera tylko jeden spośród elementów zawartych w nawiasach [ ]; kolejne elementy są oddzielane przecinkami ( … ) elementy zawarte w nawiasach ( ) są opcjonalne, co oznacza, że mają 0..1 wystąpień { … } definiowana struktura zawiera od 0..* wystąpień elementu zawartego w nawiasach { }; kolejne wystąpienia są oddzielane przecinkami * … * informacje zawarte między * * są traktowane jak komentarz, a więc nie stanowią elementów składowych definiowanej struktury
Prezentowanie diagramów stanów <nagłówek-diagramu> = (<wyróżnik_diagramu>) + <nazwa-diagramu> + {<parametr>} sm Nazwa diagramu sm – state machine sm Nazwa diagramu {protocol} protokołowa maszyna stanowa
Stan obiektu (1) Stan obiektu: − w podstawowym znaczeniu − opisywany jest przez zestaw wartości wszystkich (?) atrybutów oraz wszystkich (?) powiązań danego obiektu z innymi obiektami w pewnej chwili czasowej. Obiekt pozostaje w danym stanie do momentu wystąpienia zdarzenia, które spowoduje zmianę tego stanu na inny. Innymi słowy, stan to “zdjęcie migawkowe” jednej sytuacji, w której znalazł się obiekt. Często abstrahuje się od pewnych składników stanu, lub “zlepia się” wiele stanów w jeden (w oparciu o „podobieństwo jakościowe” atrybutów czy powiązań). Stan obiektu Alternatywne definicje stanu obiektu: stan − to okres czasu, w którym obiekt oczekuje na zdarzenie, stan − to okres czasu, w którym obiekt przetwarza.
Stan obiektu (2) Ile obiekt może mieć stanów? Nawet dla małego obiektu liczba stanów może być bardzo duża, zależna od liczby możliwych wartości, które mogą przyjmować atrybuty i powiązania obiektu. Ile stanów może mieć cały system? Bardzo, bardzo dużo: iloczyn liczby wszystkich możliwych stanów dla każdej maszyny stanów przez liczbę wszystkich obiektów wszystkich klas. Notacja: Stan jest oznaczany za pomocą prostokąta z zaokrąglanymi rogami. Stan może mieć nazwę, ale często jest charakteryzowany jedynie poprzez wewnętrzne operacje czy zdarzenia. Nazwa stanu Nazwa stanu Alternatywna, tzw. zakładkowa, notacja dla stanu
Sekcje stanu (1) Stan może być podzielony na 4 sekcje – każda z sekcji jest opcjonalna: Sekcja nazwy Sekcja operacji wewnętrznych Sekcja zdarzeń wewnętrznych Sekcja dekompozycji pokazuje strukturę wewnętrzną stanu złożonego (stany, regiony, przejścia, itd.) Stan z dwiema sekcjami: nazwy i operacji wewnętrznych: akcja − operacja, której nie można przerwać (atomowa) lista akcji − akcja1/akcja2/… − traktowana jest, jak pojedyncza akcja, aktywność (czynność) − operacja, którą można przerwać, lista aktywności − podobnie, jak lista akcji, entry − słowo kluczowe specyfikujące operacje, zawsze Nazwa stanu entry/akcja1/akcja2/… do/aktywność1/aktywność2/… exit/akcja1/akcja2/... 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.
Sekcje stanu (2); stan złożony Stan z dwiema sekcjami: nazwy i zdarzeń wewnętrznych: wrzucono monetę (wartość) /dodaj do bilansu Zliczanie pieniędzy Stan złożony z ukrytą strukturą wewnętrzną: Nazwa stanu złożonego ikona symbolizująca ukrycie struktury stanu złożonego
Zdarzenie (1) Zdarzenie: następuje w jednym punkcie czasowym (z perspektywy naszej percepcji czasu), warte jest analizowania z punktu widzenia celów projektowanego systemu. Wszystko, co wywołuje pewne skutki w systemie, może być modelowane jako zdarzenie. Samo zdarzenie nie trwa w czasie, ale fakt zaistnienia zdarzenia jest rejestrowany i trwa aż do momentu, gdy jakiś podmiot zdarzenie “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ę. Np. zdarzeniem jest naciśnięcie przez użytkownika systemu lewego klawisza myszy, lub odlot samolotu w dniu 20 stycznia 2007 o godz. 19:00 z Warszawy do Paryża, gdy system zajmuje się rejestracją lotów.
Zdarzenie (2) Zdarzenia mogą być: uporządkowane w czasie (synchroniczne), np. odlot samolotu z Warszawy i przylot tego samolotu do Paryża, 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.
Rodzaje zdarzeń Rodzaj zdarzenia Opis Składnia wołanie (ang. call event) otrzymanie przez obiekt synchronicznego żądania wykonania operacji − najbardziej podstawowy rodzaj zdarzenia op (a : T) zmiana (ang. change event) 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 when (wyrażenie) sygnał (ang. signal) otrzymania przez obiekt asynchronicznego żądania wykonania operacji; użyteczne do modelowania zdarzeń przychodzących z zewnętrza systemu nazwa_syg (a : T) czas (ang. time event) upłynięcie czasu określonego w sposób bezwzględny lub względny, np. after (5 sec.) lub after (1 miesiąc od dnia 1.01.2000) after (czas)
Zdarzenie typu sygnał 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 − wybranie cyfry numeru telefonu (cyfra) − wkroczenie obrotów silnika w niebezpieczną strefę
Generalizacja sygnałów Konkretny sygnał, z ustalonymi wartościami atrybutów jest wystąpieniem odpowiedniego klasyfikatora sygnał. zdarzenie «sygnał» sygnał abstrakcyjny czas 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 znakowy «sygnał» puszczenie_klawisza_myszy sygnały konkretne «sygnał» spacja «sygnał» alfanumeryczny «sygnał» interpunkcyjny
Przejście (1) Przejście: opisywane przez zdarzenie, które je wywołało, warunek (w postaci wyrażenia typu Boolean) oraz akcję/akcje, wykonywane przed ewentualną zmianą stanu. zdarzenie [warunek] /akcja Stan 1 Stan 2 przejście zewnętrzne (ang. external transition) 1 przejście przejście wewnętrzne (ang. internal transition) 2 zdarzenie [warunek] /akcja zdarzenie [warunek] /akcja Stan samo-przejście (ang. selftransition) 3
Przejście (2) Dla 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 specyfikowane po słowie kluczowym entry. [warunek] /akcja 4 przejście automatyczne (ang. completion transition) Stan 1 Stan 2 Przetwarzanie zostało zakończone − wszystkie operacje wyspecyfikowane po słowach kluczowych entry, exit i do zostały zakończone, co spowodowało zmianę stanu ze Stanu 1 na Stan 2. Warunek, występujący w etykiecie przejścia, może dotyczyć zarówno atrybutów maszyny stanowej, jak i argumentów zdarzenia, które odpaliło dane przejście. Warunek podlega oszacowaniu w momencie wystąpienia zdarzenia. Jeśli warunek przyjmie wartość TRUE − przejście będzie miało miejsce. Uwaga − warunek występujący w specyfikacji przejścia różni się od warunku w zdarzeniu typu zmiana − jest ewaluowany tylko jeden raz. Jedno zdarzenie może stanowić tryger dla więcej niż jednego przejścia − wtedy należy opatrzyć wszystkie przejścia odpalane przez dane zdarzenie wzajemnie wykluczającymi się warunkami (w ramach jednego wątku sterowania). Jeśli nie wszystkie możliwości zostały przykryte, zdarzenie zostanie zignorowane.
Przejście; przykłady przejścia zewnętrzne: przejścia wewnętrzne: otrzymanie zamówienia (suma) [suma < =100 zł.] Przetwarzanie zamówienia Oczekiwanie otrzymanie zamówienia (suma) [suma > 100 zł.] Zatwierdzenie kredytu kredyt zatwierdzony/ licz debet () kredyt odrzucony Anulowanie zamówienia entry/ ustaw echo na gwiazdkę/ haslo_zeruj() exit/ ustaw normalne echo znak/ obsłuż znak czyść/ haslo_zeruj() pomoc/ wyświetl pomoc Wprowadzanie hasła przejścia wewnętrzne:
Rodzaje akcji; przykłady Rodzaj akcji Opis Składnia przypisanie (ang. 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 (ang. call) nazwa_op (arg, …) nowy (ang. create) utworzenie nowego obiektu create nazwa_klasy (arg, …) usuń (ang. destroy) usunięcie obiektu destroy () wyślij (ang. send) utworzenie wystąpienia sygnału i wysłanie do obiektu/obiektów nazwa_sygnału (arg, …) powrót (ang. return) specyfikuje instrukcję powrotu return wartość_zwracana
Ograniczenie {final} Ograniczenie {final} oznacza, że byt, na który zostało to ograniczenie nałożone, nie może być przedefiniowywany. zdarzenie {final} Stan 1 {final} Stan 2
Odraczanie zdarzeń Zdarzenie odroczone (ang. deferred event): zdarzenie odroczone to takie, które z założenia nie jest obsługiwane w ramach danego stanu lecz dopisywane do kolejki zdarzeń odroczonych, każdy stan może mieć zdefiniowany zbiór zdarzeń odroczonych, obsługa zdarzenia odroczonego będzie przeprowadzona dopiero wtedy, gdy zostanie uaktywniony stan, który go nie odracza, jeśli maszyna stanowa nie zawiera stanu obsługującego zdarzenie odroczone, to zdarzenie takie zostanie zgubione (zignorowane). Notacja: zdarzenie/deferr z0 z3 S2 z4 S3 z5 z2 z6 z2/deferr S1 z1 z0 z3 S2 z1 z4 S3 z5 z6 z2/deferr S1
Rodzaje wierzchołków w maszynie stanowej (1) Rodzaj wierzchołka Opis Notacja stan prosty (ang. simple state) stan nie posiadający substruktury stan złożony sekwencyjny (ang. sequential composite state) stan złożony z jednego lub więcej podstanów, z których tylko jeden jest aktywny, gdy aktywny jest stan złożony stan złożony współbieżny (ang. concurrent composite state) stan podzielony na co najmniej dwa ortogonalne regiony, które są jednocześnie aktywne, gdy aktywny jest stan złożony (jako całość) stan początkowy (ang. initial state) pseudostan; służy do oznaczenia punktu startowego maszyny stanowej stan końcowy (ang. final state) służy do oznaczenia punktu, w którym obsługa „otaczającego” go regionu (ang. enclosing region) została ukończona
Rodzaje wierzchołków w maszynie stanowej (2) Rodzaj wierzchołka Opis Notacja decyzja (ang. choice node) pseudostan; rozdziela jedno przejście na kilka alternatywnych opatrzonych warunkami złączenie (ang. merge node) pseudostan; łączy kilka przejść alternatywnych w jedno przejście pseudostan; łączy kilka przejść we i rozdziela je na kilka przejść wy; szczególnymi rodzajami węzła są wierzchołki powyżej węzeł (ang. junction) rozwidlenie (ang. fork node) pseudostan; rozdziela jedno przejście na kilka przejść współbieżnych scalenie (ang. join node) pseudostan; łączy kilka przejść współbieżnych w jedno przejście
Rodzaje wierzchołków w maszynie stanowej (3) Rodzaj wierzchołka Opis Notacja pseudostan; wykorzystywany do oznaczenia przejścia prowadzącego do wnętrza diagramu stanów lub stanu złożonego i umieszczany na jego granicy; może być nazwany i skojarzony z wewnętrznym stanem/podstanem punkt wejścia (ang. entry point) alternatywna notacja dla punktu wejścia (via nazwa punktu we) pseudostan; wykorzystywany do oznaczenia przejścia prowadzącego z wnętrza diagramu stanów lub stanu złożonego i umieszczany na jego granicy; może być nazwany i skojarzony z wewnętrznym stanem/podstanem punkt wyjścia (ang. exit point) alternatywna notacja dla punktu wyjścia (via nazwa punktu wy)
Rodzaje wierzchołków w maszynie stanowej (4) Rodzaj wierzchołka Opis Notacja zniszczenie (ang. termination) pseudostan; wierzchołek maszyny stanowej, w którym następuje zniszczenie obiektu pseudostan; wskazuje na ostatni podstan, w ramach stanu złożonego, który był aktywny przed ponowną aktywacją stanu złożonego (bez przechowywania informacji o podstanach danego podstanu); stan złożony może mieć tylko jeden wierzchołek tego typu; co najwyżej jedno przejście może łączyć wierzchołek typu płytkie wznowienie z wierzchołkiem domyślnym – jest to wykorzystywane w sytuacji, gdy stan złożony nie był ani razu uaktywniany przed wznowieniem płytkie wznowienie (ang. shallow history) H
Rodzaje wierzchołków w maszynie stanowej (5) Rodzaj wierzchołka Opis Notacja pseudostan; jak dla płytkiego wznowienia ale łącznie z przechowaniem informacji o podstanach aktywnego ostatnio podstanu głębokie wznowienie (ang. deep history) H * odbiór sygnału (ang. signal receipt) wierzchołek związany z odbiorem sygnału; sygnał może posiadać parametry sygnał wierzchołek związany z nadawaniem sygnału; jak poprzednio, sygnał może posiadać parametry nadawanie sygnału (ang. signal sending) sygnał wykorzystywany dla reprezentowania akcji; o ile na diagramie występuje wierzchołek związany z odbiorem sygnału, wierzchołek akcja musi następować po nim akcja (ang. action) Rejestruj datę
Stany: początkowy, końcowy; punkty: wejścia, wyjścia v3
Stan końcowy – ograniczenia Lista ograniczeń obowiązujących dla stanu końcowego: Żadne przejście nie może prowadzić od symbolu stanu końcowego, stan końcowy nie może zawierać regionów, stan końcowy nie może mieć operacji wejściowych (specyfikowanych po słowie kluczowym entry), stan końcowy nie może mieć operacji wyjściowych (specyfikowanych po słowie kluczowym exit), stan końcowy nie może mieć operacji wewnętrznych (specyfikowanych po słowie kluczowym do), osiągnięcie stanu końcowego na najwyższym poziomie zagnieżdżenia implikuje wystąpienie operacji prowadzących do zniszczenia obiektu/obiektów.
Protokołowa maszyna stanowa Protokołowa maszyna stanowa jest wygodnym środkiem do definiowania cyklu życiowego obiektów, tzn. do określania wszystkich możliwych i dopuszczalnych przejść (ang. legal transitions) zdefiniowanych w kontekście danego klasyfikatora czy też do wyrażania protokołu wykorzystania fragmentu systemu. Protokołowa maszyna stanowa specyfikuje wszystkie zdarzenia (z rodzaju wołanie), możliwe i dopuszczalne dla wystąpień danego klasyfikatora. Klasyfikator może posiadać więcej niż jedną protokołową maszynę stanową, np. w sytuacji, gdy dana klasy dziedziczy po więcej niż jednej klasie i protokołowe maszyny stanowe tych klas są wzajemnie ortogonalne. Przejścia między stanami dla protokołowej maszyny stanowej są opisywane: [warunek wstępny] operacja/ [warunek końcowy] S1 S2
Protokołowa maszyna stanowa; przykłady [W1] op1/ [W2] S3 S4 [W3] op1/ [W4] Operacja op1 może być wywołana dla obiektu znajdującego się w różnych stanach i z różnymi warunkami wstępnymi/końcowymi. Drzwi otwarte zamknięte na klucz utwórz/ [jest miejsce] zamknij/ zamknij na klucz/ otwórz kluczem/ otwórz/ sm Drzwi {protocol}
Protokołowa maszyna stanowa; własności Własności protokołowej maszyny stanowej: operacje, które nie generują przejść, nie są reprezentowane w protokołowej maszynie stanowej; wewnętrzne operacje danego stanu dla protokołowej maszyny stanowej nie są specyfikowane (operacje po słowach kluczowych: entry, do, exit); protokołowa maszyna stanowa może zawierać zarówno stany proste, jak i stany złożone; nie może zawierać pseudostanów związanych ze wznowieniami; w przypadku ogólnym, dozwolone jest wprowadzanie do protokołowej maszyny stanowej zdarzeń innych niż wołanie ([w_wstępny] zdarzenie/ [w_końcowy]); stany w prokołowej maszynie stanowej, w przeciwieństwie do maszyny zachowania, mogą mieć określone inwarianty; S [wyrażenie invariant]
Protokołowa maszyna stanowa – przykład (3) protokołowa maszyna stanowa może być skojarzona z interfejsem do klasy. IK K Protokołowa maszyna stanowa może wystąpić w postaci: deklaratywnej, gdzie stany i przejścia między stanami zostały określone w sposób ogólny, np. warunki (wstępny/końcowy) mogą nie być specyfikowane, wykonywalnej, zawierającej szczegółową specyfikację przejść i związanych z nimi operacji – co może stanowić podstawę do generowania kodu źródłowego.
Maszyna protokołowa a maszyna zachowania 1 Diagram typu: protokołowa maszyna stanowa kupno urządzenia przez klienta (klient)/ [minięcie czasu gwarancji] usuń/ [informacja o urządzeniu usunięta] Urządzenie niesprzedane Urządzenie sprzedane utwórz/ zwrot urządzenia przez klienta (klient)/ 2 Diagram typu: maszyna stanowa zachowania Kolejka białych when (szach mat) czarne wygrywają when (pat) ruch czarnych ruch białych remis when (pat) Kolejka czarnych when (szach mat) białe wygrywają
Stan złożony sekwencyjny Stan prosty nie posiada substruktury, jest specyfikowany przez zbiór operacji (akcji, aktywności), zdarzeń wewnętrznych oraz przejść. Stan złożony może być zdekomponowany na stany bardziej proste; dekompozycja może być traktowana jako rodzaj specjalizacji. Każdy z podstanów dziedziczy operacje, przejścia i zdarzenia nadstanu. Tylko jeden z podstanów może być aktywny w danym momencie. Generalizacja stanów jest formą zagnieżdżania stanów. S1 S2 S3 S zd4 zd5 zd3 zd2 we-3 zd1 S S1 S2 S3 zd2 zd3 zd5 zd4 zd1 wcześniejsze prace Rumbaugha UML 2.*
Alternatywna notacja dla punktów we, wy S zd1 zd2 S1 zd4 S2 S3 zd5 (via we-3) zd3 we-3
Stan złożony sekwencyjny; przykład (1) wybrano 1-szy bieg Jazda do przodu na 1-szym biegu naciśnięto hamulec Samochód zatrzymany wybrano poprzedni bieg naciśnięto hamulec wybrano następny bieg wybrano wsteczny bieg naciśnięto hamulec Jazda do przodu na 2-gim biegu Jazda do tyłu przykładowa protokołowa maszyna stanowa dla klasy Samochód
Stan złożony sekwencyjny; przykład (2) Jazda do przodu na 1-szym biegu na 2-gim Jazda do tyłu Jazda wybrano następny bieg poprzedni bieg Samochód zatrzymany wsteczny bieg wybrano 1-szy bieg naciśnięto hamulec zastosowanie generalizacji stanów dla diagramu z poprzedniej folii
Stan złożony sekwencyjny; przykład (3) 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 wybrano wsteczny bieg Jazda do przodu na 2-gim biegu do tyłu Jazda do tyłu (via do tyłu) wykorzystano notację UML 2.0 dla stanów złożonych sekwencyjnych.
Stan złożony sekwencyjny; przykład (4) wybrano 1-szy bieg Jazda naciśnięto hamulec Samochód zatrzymany wybrano wsteczny bieg (via do tyłu)
Maszyna stanowa dla automatu sprzedającego Zliczanie pieniędzy wrzucono monetę (wartość) /dodaj do bilansu wrzucono monetę (wartość)/ inicjuj bilans Stan spoczynku kasowanie / zwróć monety przykład przejścia automatycznego [brak pozycji] wybór (pozycja) [reszta < 0] [reszta = 0] do/ wydaj pozycję do/ sprawdź wybraną pozycję i/lub oblicz resztę 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 Takie wyjście ze stanu też jest możliwe (sytuacja nietypowa). 1 synchronizacja wewnętrzna 2 synchronizacja zewnętrzna Sytuacja typowa: wyjście ze stanu następuje wtedy, gdy we wszystkich współbieżnych podstanach zostanie osiągnięty stan końcowy. Oba diagramy są równoważne.
Współbieżność − obiekty zagregowane Współbieżność ma źródło w trzech sytuacjach: (1) obiekty mogą być zagregowane, (2) pewne operacje w ramach jednego obiektu można wykonywać współbieżnie, a także (3) obiekty mogą działać asynchronicznie. Hamulec Samochód Zapłon Bieg Hamulec Gaz hamulec naciśnięty Wył. Włącz. hamulec puszczony Zapłon Wył. Włącz. Zapala kluczyk max w prawo [Biegi w pozycji 0] kluczyk do poz. Wył. Każdy obiekt wchodzący w skład agregatu posiada tu własny diagram stanów. Można je łączyć, tworząc diagram dla agregatu samochód (wspólny diagram będzie uwzględniał współbieżność operacji).
Współbieżność w ramach jednego obiektu Obiekt może wykonywać współbieżnie dowolną liczbę operacji. Maszyna stanowa dla automatu do wypłacania pieniędzy Wypłata do/wydaj gotówkę Gotowy do działania 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
Wierzchołek typu płytkie wznowienie S S1 H S3 S2 S4 S5
Maszyna stanowa z sygnałami; przykład Rejestruj zgłoszenie Potwierdzenie zgłoszenia Zgłoszenie na kurs