Diagram maszyny stanowej (ang. machine state diagram) jest jednym z diagramów aktywności UML 2.5 .

Diagram ten przedstawia zbiór stanów przyjmowanych przez obiekty w odpowiedzi na zdarzenie zachodzące w czasie jego życia, a także reakcje obiektu na te zdarzenia.

Są dwa rodzaje maszyn stanowych: maszyny zachowania i maszyny protokołowe.

Maszyny zachowania

Reprezentują przejścia między stanami wielu obiektów w szerszym kontekście zachowania systemu, podsystemu czy też przypadku użycia. Projektant, tworząc maszynę, musi rozpatrzyć kilka obiektów na raz, nie ogranicza się tylko do zestawy stanów pojedynczego obiektu. Zazwyczaj maszyny zachowania zawierają wszystkie szczegóły.

Maszyny protokołowe

Reprezentują dozwolone przejścia między stanami danego obiektu. Koncentrują się na konkretnym obiekcie. Zazwyczaj nie wykazuje się wewnętrznych czynności stanów. Jest to dużo prostszy, koncepcyjny rodzaj diagramu maszyny stanowej.

Stan (ang. state)

Stan najprościej mówiąc, to jakakolwiek okoliczność lub sytuacja, w jakiej znajduje się w obiekt w czasie swojego życia, gdy spełnia warunek, wykonuje czynność lub czeka na zdarzenie. Stan prezentowany jest podobnie do czynności z diagramu aktywności – uwaga na pomyłki! W diagramie stanów nie przedstawia się czynności czy akcji wykonywanych przez obiekt, tylko same stany, które on przyjmuje w reakcji na wykonane czynności.

Wyróżniamy dwa “stany” Stanu. Może on być:

  • aktywny –gdy przechodzimy do niego przy użyciu przejścia;
  • nieaktywny –gdy wychodzimy z niego.

Jak wygląda “stan” na diagramie?

W każdym stanie diagramu maszyny stanowej można wyszczególnić 4 sekcje, odpowiadające za różne obszary:

  • Sekcja nazwy
  • Sekcja czynności wewnętrznych
  • Sekcja przejść wewnętrznych
  • Sekcja dekompozycji (dla stanów złożonych)

Stan – czynności wewnętrzne 

Czynności wewnętrzne to te, które są wykonywane w trakcie przyjmowania określonego stanu przez obiekt.

Definiowane są przez 3 ściśle zdefiniowane słowa kluczowe: entry, do i exit.

  • entry – identyfikuje czynność wykonywaną na obiekcie automatycznie w momencie jego przejścia w dany stan (tylko 1);
  • do – identyfikuje czynność wykonywaną w sposób ciągły na obiekcie znajdującym się w danym stanie (może być ich wiele, zawsze po entry);
  • exit – identyfikuje czynność wykonywaną w momencie wyjścia obiektu z danego stanu (tylko 1).

Stan – przejścia wewnętrzne 

Wskazuje szczególne przypadki przejść, których wykonanie nie prowadzi do zmiany danego stanu.

Nie są to przejścia zwrotne (przy przejściach zwrotnych, stan źródłowy przejść zwrotnych jest tym samym co stan docelowy).

Stany-klasyfikacje

Wyróżniamy trzy stany:

  • proste
  • złożone (posiadają zagnieżdżoną maszynę stanową lub takie, które są podzielone na kilka obszarów współbieżnych)
  • podstany

Stan początkowy (ang. initial state)  

Jest to stan rozpoczynający funkcjonowanie maszyny stanowej. To pseudostan– używany tylko do zapewnienia połączeń między stanami (w tym wypadku –dla rozpoczęcia diagramu), nie jest akcją. Nie może zawierać zdarzenia uruchamiającego.
Prezentowany jako czarna kropka.

Stan początkowy

Przejście (ang. transition

Przejście to związek między dwoma stanami.

Wskazuje, że obiekt znajdujący się w pierwszym stanie wykona akcje i przejdzie do drugiego stanu ilekroć znajdzie określone zdarzenie i po spełnieniu określonych warunków.

Przejście jest niepodzielne, tzn. nie można go przerwać.

Przejście między stanami

Stan końcowy (ang. finalstate)

Stan końcowy prezentuje zakończenie maszyny stanowej.

Ze stanu końcowego nie ma przejścia do stanu następnego.

Podmaszynastanowa (ang. submachine state)

Jest maszyną stanową wstawianą jako stan do innej maszyny.

Ta sama maszyna może być wprowadzana więcej niż jeden raz.

Podmaszyna stanowa

Punkt wejścia (ang. entrypoint)

Jest punktem wejścia do stanu maszyny lub stanu złożonego. 

W każdym regionie stanu maszyny lub stanu złożonego ma najwyżej jedno przejście do wierzchołka w tym samym regionie.

Punkt wejścia jest pokazany jako małe kółko na granicy diagramu stanu maszyny lub stanu złożonego, z nazwą powiązaną z nim.

Punkt wyjścia (ang. exitpoint)

Pseudostan punktu wyjścia to punkt wyjścia stanu maszyny lub stanu złożonego. 

Wchodzenie do punktu wyjścia w dowolnym regionie złożonego stanu lub maszyny stanu, do którego odnosi się stan maszyny, oznacza wyjście z tego stanu złożonego lub stanu maszyny roboczej oraz wyzwalanie przejścia, które ma ten punkt wyjścia jako źródło w maszynie stanów, otaczające maszynę lub maszynę stan złożony.

Punkt wyjścia jest pokazany jako małe kółko z krzyżykiem na granicy diagramu stanu maszyny lub stanu złożonego, z nazwą powiązaną z nim.

Węzeł wyboru (ang. choice)

Umożliwia dokonanie wyboru spośród kilku możliwości.

Należy pilnować, by tylko jedna i zawsze jedna ścieżka była dostępna po spełnieniu warunku (warunek else).

Węzeł wyboru, diagram stanów UML

Węzeł skrzyżowania (ang. junction)

Stosowany do łączenia jednej lub wielu tranzycji wejściowych i ich rozdzelanie na jedną lub szereg tranzycji wyjściowych.

Realizuje statyczne rozgałęzienie warunkowe.

Różnica między junction a węzłem wyboru

Należy pamiętać, że junction realizuje statyczne rozgałęzienia warunkowe, w przeciwieństwie do węzła wyboru, które realizuje dynamiczne rozgałęzienie warunkowe.

Węzeł junction, diagram stanów UML

Węzeł zniszczenia (ang. terminate)

Znak X prezentowany na końcu tranzycji oznacza, że linia życia danej maszyny stanu została zakończona. 

Maszyna stanowa nie zmienia stanu ani nie realizuje żadnej akcji.

Utworzenie terminate jest równoznaczne z wywołaniem akcji niszczenia obiektu.

Terminacja stanu, diagram stanów UML

Zdarzenia

Zdarzenia to bodźce wysyłane przez inne obiekty.

  • Sygnał (ang. signal) 
  • Zdarzenie wywołania (ang. callevent)
  • Zdarzenia czasowe (ang. timeevent)
  • Zdarzenie zmiany stanu (ang. changeevent) 
  • Zdarzenie odroczone (ang. deferredevent)

Płytkie wznowienie (ang. shallowhistory)

Służy do zapamiętania ostatniego aktywnego stanu maszyny stanowej, w którym została przerwana. Płytkie wznowienie charakteryzuje się tym, że nie przechowuje informacji o podstanach ostatniego aktywnego stanu maszyny stanowej.

Prezentowany przez H w kółeczku.

Głębokie wznowienie (ang. deephistory)

Głębokie wznowienie od płytkiego różni się tym, że głębokie wznowienie zapamiętuje ostatnią konfigurację aktywnego stanu złożonego. Czyli przerwanie nie spowoduje utraty wszystkiego, co w danym momencie było realizowane, tylko wskaże ostatni aktywny stan obiektu przed wznowieniem, wraz z informacją o jego podstanach.

Prezentowany jako H z gwiazdką w kółeczku.

Rozwidlenie i scalenie (ang. fork node, join node)

Rozwidlenie(ang. fork node) umożliwia reprezentację współbieżności stanów. Wskazuje początek przepływów równoległych.

Stosowany do podzielenia ścieżki na minimum dwie równoległe ścieżki, których przepływy realizowane są w tym samym czasie.

Scalenie(ang. join node) umożliwia scalenie przepływów. 

Scalenie umożliwia zsynchronizowanie ścieżek.

Rozwidlenie i scalenie, diagram stanów UML

Obszary współbieżne / stany złożone (ang. compositestate)

Stany w stanach złożonych aktywowane współbieżnie.

Obszary współbieżne to wydzielane części stanu w których zamieszcza się równolegle aktywowane stany.

Wszystkie obszary współbieżne muszą być wykonane aby stan mógł być zakończony

Zobacz także:

Diagram maszyny stanowej (diagram stanów)

Leave a Reply

Your email address will not be published. Required fields are marked *