Diagram maszyny stanów to zachowanie, które określa sekwencję stanów, które obiekt odwiedza w trakcie swojego życia w odpowiedzi na zdarzenia, wraz z jego reakcjami na te zdarzenia.
Stan
Stan to warunek w trakcie życia obiektu, w którym spełnia on pewne warunki, wykonuje pewne czynności lub czeka na jakieś zewnętrzne zdarzenie
Przykład:

Cechy stanu
- Stan reprezentuje warunki obiektów w określonych momentach czasu.
- Obiekty (lub systemy) można postrzegać jako poruszające się z jednego stanu do drugiego
- Punkt w cyklu życia elementu modelu, który spełnia pewne warunki, w którym wykonywana jest jakaś konkretna akcja lub w którym czeka się na jakieś zdarzenie
Rysunek poniżej pokazuje szczegółowy opis stanu. Stan jest rozszerzony o działania wewnętrzne (zrób, pomóż). W przeciwieństwie do innych działań, te działania mogą być przerwane. Jeśli nastąpi „anuluj”, działania zrób lub pomóż są przerywane. Działania wewnętrzne są wykonywane po sekcji „wejście” i są przerywane, gdy stan jest opuszczany.

Stany początkowe i końcowe
- stan początkowy diagramu maszyny stanów, znany jako początkowy pseudo-stan, jest oznaczony pełnym okręgiem. Przejście z tego stanu pokaże pierwszy rzeczywisty stan
- stan końcowy diagramu maszyny stanów jest pokazany jako koncentryczne okręgi. Otwarta maszyna stanów reprezentuje obiekt, który może zakończyć działanie przed zakończeniem systemu, podczas gdy diagram zamkniętej maszyny stanów nie ma stanu końcowego; jeśli tak jest, obiekt żyje, dopóki cały system nie zakończy działania.
Przykład:

Zdarzenie
Zdarzenie to specyfikacja istotnego wystąpienia. Dla maszyny stanów zdarzenie to wystąpienie bodźca, który może wywołać przejście stanu.
Przejście
Przejście to relacja między dwoma stanami, wskazująca, że obiekt w pierwszym stanie, gdy spełniony jest określony zestaw zdarzeń i warunków, wykona pewne działania i wejdzie w drugi stan.
Przejście ma: komponenty przejścia, które obejmują (1) stan źródłowy (2) wyzwalacz zdarzenia (3) akcję (4) stan docelowy
Przejście samodzielne
Przejście samodzielne to przejście, którego stany źródłowy i docelowy są takie same
Akcja
Akcja to wykonalna, atomowa (w odniesieniu do maszyny stanów) obliczenia. Akcje mogą obejmować operacje, tworzenie lub niszczenie innych obiektów lub wysyłanie sygnałów do innych obiektów (zdarzeń)
Przykład biblioteki
Rysunek poniżej pokazuje prosty diagram maszyny stanów. Główne komponenty takiego diagramu to:
- Stan: przykład ma dwa stany: „Wypożyczony” i „Na półce”.
- Stan początkowy: to jest stan, w którym system się zaczyna.
- Przejścia: przejścia opisują możliwe zmiany stanów. Diagram ma dwa przejścia: z „Wypożyczony” do „Na półce” i odwrotnie.
- Zdarzenia: zdarzenia są oznaczone na przejściach. Reprezentują zdarzenie wykonane na przejściu. Przechodząc z stanu „Wypożyczony” do stanu „Na półce”, wykonuje się zdarzenie „returned()”.
Akcje są modyfikacjami zmiennych stanu. W poniższym przykładzie akcje są określone na przejściach. Gdy przejście z „Na półce” do „Wypożyczony” jest realizowane, zmienna stanu books jest zmniejszana.

Akcje mogą być określone na przejściach, ale także w stanach. W takim przypadku można określić, czy akcja musi być wykonana przy wchodzeniu lub wychodzeniu ze stanu. Rysunek poniżej pokazuje te opcje.
- Pierwsza opcja pokazuje specyfikację działań, gdy przejście jest realizowane. Akcja jest wykonywana przy zmianie stanu.
- Druga opcja pokazuje specyfikację akcji w stanie. Słowo kluczowe „wejście” wskazuje, że akcja musi być wykonana przy wchodzeniu w stan.
- Na koniec, trzecia opcja pokazuje, jak określić, że akcja jest podejmowana przy opuszczaniu stanu. Zauważ słowo kluczowe „wyjście”.

Notacja prostego diagramu maszyny stanów

Diagram maszyny stanów — Zaawansowane koncepcje
Ograniczenia
Możliwe jest dodanie ograniczeń do przejść. Rozważ rysunek poniżej. Ograniczenia „[nie ostatnia kopia]” i „[ostatnia kopia]” są używane do rozróżnienia dwóch przejść z zdarzeniem „copyBorrowed()”. Semantyka polega na tym, że przejście jest włączone, gdy ograniczenie jest prawdziwe.

Podstany
Prosty stan to taki, który nie ma podstruktury. Stan, który ma podstany (stany zagnieżdżone), nazywany jest stanem złożonym. Podstany mogą być zagnieżdżone na dowolnym poziomie. Zagnieżdżona maszyna stanów może mieć najwyżej jeden stan początkowy i jeden stan końcowy. Podstany są używane do uproszczenia złożonych płaskich maszyn stanów, pokazując, że niektóre stany są możliwe tylko w określonym kontekście (stan otaczający).
Przykład podstanu — Grzejnik

Diagramy maszyn stanów są często używane do opracowywania przypadków testowych, oto lista możliwych pomysłów na testy:
- Stan bezczynny otrzymuje zdarzenie Zbyt gorąco
- Stan bezczynny otrzymuje zdarzenie Zbyt zimno
- Stan chłodzenia/uruchamiania otrzymuje zdarzenie Kompresor działa
- Stan chłodzenia/gotowości otrzymuje zdarzenie Wentylator działa
- Stan chłodzenia/pracy otrzymuje zdarzenie OK
- Stan chłodzenia/pracy otrzymuje zdarzenie awarii
- Stan awarii otrzymuje zdarzenie usunięcia awarii
- Stan ogrzewania otrzymuje zdarzenie OK
- Stan ogrzewania otrzymuje zdarzenie awarii
Stany historii
O ile nie określono inaczej, gdy przejście wchodzi do stanu złożonego, akcja zagnieżdżona maszyna stanów zaczyna od nowa w stanie początkowym (chyba że przejście celuje bezpośrednio w podstan). Stany historii pozwalają maszynie stanów ponownie wejść w ostatni podstan, który był aktywny przed opuszczeniem stanu złożonego. Przykład użycia stanu historii przedstawiono na poniższym rysunku.

Stan równoległy
Jak wspomniano powyżej, stany w diagramach maszyn stanów mogą być zagnieżdżone. Powiązane stany mogą być grupowane w jeden stan złożony. Zagnieżdżanie stanów w innych jest konieczne, gdy aktywność obejmuje równoległe podaktywności. Poniższy diagram maszyny stanów modeluje aukcję z dwoma równoległymi podstanami: przetwarzaniem oferty i autoryzacją limitu płatności.
Przykład diagramu maszyny stanów równoległych — Proces aukcji
W tym przykładzie maszyna stanów wchodząca po raz pierwszy do aukcji wymaga rozwidlenia na początku w dwa oddzielne wątki startowe. Każdy podstan ma stan wyjścia, aby oznaczyć koniec wątku. O ile nie wystąpi nienormalne wyjście (Anulowane lub Odrzucone), wyjście ze stanu złożonego następuje, gdy oba podstany zakończą działanie.

Powiązane linki
Przykłady diagramów stanów zrób to sam z Visual Paradigm Online
- Darmowe przykłady diagramów maszyn stanów i szablony edytowalne w internetowym oprogramowaniu do diagramów maszyn stanów: Visual Paradigm Online.
- Użyj szablonów jako punktu wyjścia do stworzenia własnego diagramu maszyny stanów.








Darmowe narzędzie oprogramowania UML
Nauczyłeś się, czym jest diagram maszyny stanów i jak narysować diagram maszyny stanów. Czas narysować własny diagram maszyny stanów. Pobierz Visual Paradigm Community Edition, darmowe oprogramowanie UML, i stwórz własny diagram maszyny stanów za pomocą darmowego narzędzia do diagramów maszyn stanów. Jest łatwe w użyciu i intuicyjne.
Ten post dostępny jest również w Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文