Celem niniejszego rozdziału jest chęć zaprezentowania techniki, umożliwiającej specyfikację aspektów dynamicznych obiektów, których stan zależy od zdarzeń zachodzących w jego otoczeniu.

Diagram maszyny stanowej – definicja i zastosowanie

Diagram maszyny stanowej przedstawia maszynę stanową, która zawiera proste stany i przejścia pomiędzy nimi.

Diagram maszyny stanowej – notacja i semantyka

Stan

najczesciej_stosowana_notacja_UML_2011_html_m3b3d132e

Rysunek 73. Stan – notacja

Stan (ang. state) modeluje niezmienną sytuację, w której znajduje się obiekt podczas całego swojego życia. Niezmienna sytuacja obiektu oznacza spełnienie jakiegoś warunku, wykonanie czynności lub oczekiwanie na jakieś zdarzenie.

Przejście

najczesciej_stosowana_notacja_UML_2011_html_7cf4e4d7

Rysunek 74. Przejście – notacja

Przejście (ang. transition) to związek pomiędzy dwoma stanami, wskazujący, że obiekt znajdujący się w pierwszym stanie wykona pewną akcję i przejdzie
do drugiego stanu ilekroć znajdzie określone zdarzenie i będą spełnione określone warunki. Przejście jest niepodzielne, tzn. nie można go przerwać, i trwa minimalny okres czasu.

Przejście posiada także dodatkowe parametry.

image

Rysunek 75. Przejście z parametrami dodatkowymi – przykład

Pierwszym dodatkowym parametrem jest zdarzenie uruchamiające
(ang. trigger). Zdarzenie uruchamiające jest typem zdarzenia, którego otrzymanie oznacza uruchomienie przejścia pod warunkiem spełnienia warunku dozoru. Warunek dozoru (ang. guard condition) jest wyrażeniem logicznym, które musi być spełnione, by przejście mogło być zrealizowane. Kolejnym parametrem, który może zostać przypisany przejściu, jest akcja (ang. effect). Akcja jest niepodzielną procedurą, która jest wykonywana podczas przejścia. Akcja może mieć bezpośredni wpływ na obiekt, który jest właścicielem maszyny stanowej.

Przykładowe przejście (rys. 76) pośredniczy w zmianie stanów obiektu Pojazd.

najczesciej_stosowana_notacja_UML_2011_html_5c05d312

Rysunek 76. Przykładowe przejście z parametrami

Przejście ze stanu Oczekiwania na wydanie Klientowi do stanu Użytkowania przez Klienta może zajść po spełnieniu warunku, jakim jest poprawne sfinalizowanie procesu rezerwacji. Mimo spełnienia wspomnianego warunku, przejście może wywołać akcję powodującą zmianę statusu dla pojazdu, ale tylko w przypadku wystąpienia zdarzenia uruchamiającego polegającego na nadejściu daty, w której klient ma wypożyczyć pojazd.

Stan początkowy

najczesciej_stosowana_notacja_UML_2011_html_m5dc57a6f

Rysunek 77. Stan początkowy – notacja

Stan początkowy (ang. initial state) jest stanem, od którego zaczyna funkcjonować maszyna stanowa. Stan początkowy jest pseudostanem, gdyż nie posiada wszystkich atrybutów właściwych stanowi. Oznacza to, że jest to element nietrwały, przejściowy, który używany jest tylko do zapewnienia połączeń pomiędzy stanami (tutaj rozpoczęcia diagramu) bez wymogu akcji. Z racji tego,
że stan początkowy jest pseudostanem, który umożliwia jedynie zainicjowanie maszyny stanowej, przejście ze stanu początkowego do stanu pierwszego nie może zawierać zdarzenia uruchamiającego.

Stan końcowy

najczesciej_stosowana_notacja_UML_2011_html_m4acdad90

Rysunek 78. Stan końcowy – notacja

Stan końcowy (ang. final state) jest to stan, jaki jest przyjmowany w sytuacji zakończenia działania maszyny stanowej. Stan końcowy jest specjalnym stanem – nie ma z niego przejścia do następnego stanu.

Maszyna stanowa

najczesciej_stosowana_notacja_UML_2011_html_m3b3d132e

Rysunek 79. Maszyna stanowa – notacja

Maszyna stanowa (ang. state machine) to zbiór stanów przyjmowanych przez obiekt w odpowiedzi na zdarzenia zachodzące w czasie jego życia, a także reakcje obiektu na te zdarzenia. Przykładowa maszyna stanowa dla obiektu Pojazd (rys. 80) zawiera dwa podstany: pojazd może być w stanie mycia (karoserii) i w stanie sprzątania (wnętrza). Stany te są zawarte w bardziej ogólnym stanie Pojazdu zwanym konserwacją pojazdu.

image

Rysunek 80. Dekompozycja maszyny stanowej

Punkt wejścia

najczesciej_stosowana_notacja_UML_2011_html_m47a3c19d

Rysunek 81. Punkt wejścia – notacja

Punkt wejścia (ang. entry point) jest skapsułowanym mechanizmem, który pozwala na zdefiniowanie stanu pośredniczącego pomiędzy przejściami
z zewnątrz a wewnętrznymi stanami maszyny stanowej. Punkty wejścia
są stosowane zazwyczaj w przypadkach, gdy do maszyny stanowej przychodzi kilka przepływów. Drugim zastosowaniem jest sytuacja, gdy na diagramie maszyna stanowa jest przedstawiana jako „czarna skrzynka” i wskazywany jest tylko punkt wejścia do maszyny stanowej bez przedstawiania jej wewnętrznej struktury.

Punkt wyjścia

najczesciej_stosowana_notacja_UML_2011_html_131e396a

Rysunek 82. Punkt wyjścia – notacja

Punkt wyjścia (ang. exit point) jest skapsułowanym mechanizmem, który pozwala na zdefiniowanie stanu pośredniczącego pomiędzy przejściami wychodzącymi z wnętrza maszyny stanów a zewnętrznym środowiskiem maszyny stanów. Punkty wyjścia są zazwyczaj stosowane w przypadkach, gdy z maszyny stanowej wychodzi kilka przepływów. Drugim zastosowaniem jest sytuacja, gdy na diagramie maszyna stanowa jest przedstawiana jako „czarna skrzynka”
i wskazywany jest tylko punkt wyjścia z maszyny stanowej, bez przedstawiania jej wewnętrznej struktury.

Stan wznowienia

image

Rysunek 83. Stan wznowienia – notacja

Stan wznowienia (ang. history state) jest pseudostanem służącym do zapamiętania podstanu sekwencyjnego przed opuszczeniem maszyny stanowej. Na rysunku 84 pokazano maszynę stanową (fragment diagramu) dla obiektu Pojazd, która zawiera stan wznowienia. Przy pierwszym wejściu do stanu, w którym samochód jest konserwowany, stan wznowienia jest pusty, więc przejście następuje bezpośrednio do pierwszego podstanu, czyli mycia karoserii samochodu. W sytuacji, gdy pojazd będzie w stanie sprzątania wnętrza auta i wystąpi zdarzenie „przerwanie” (warunek – inny samochód musi być natychmiast konserwowany) w podstanie sprzątania, przerywana jest konserwacja i następuje opuszczenie maszyny stanowej oraz przejście do stanu garażowania pojazdu.

najczesciej_stosowana_notacja_UML_2011_html_m581d0cc

Rysunek 84. Przykładowe użycie stanu wznowienia

Po zakończeniu stanu garażowania, po akcji „konserwuj” następuje przejście do maszyny stanowej i wznowienie w podstanie, w którym przerwano działanie maszyny stanowej.

Należy pamiętać o fakcie, że gdy zagnieżdżona maszyna stanowa osiągnie swój wcześniej założony stan końcowy, to zawartość stanu wznowienia jest anulowana.

Węzeł wyboru

najczesciej_stosowana_notacja_UML_2011_html_74f75125

Rysunek 85. Węzeł wyboru – notacja

Węzeł wyboru (ang. choice node) to element, który umożliwia dokonanie wyboru spośród kilku możliwości.

Umieszczenie węzła wyboru na diagramie oznacza, że nie ma jednej ścieżki wykonywania poszczególnych czynności (istnieją ścieżki alternatywne). Węzeł wyboru może mieć jedno wejście dla przepływu sterującego i minimalnie dwa wyjścia przepływów. Na wyjściach z węzła wyboru znajdują się wykluczające się warunki dozoru. Istotne jest, by warunki dozoru uwzględniały wszystkie możliwości, tak by nie dopuścić do zatrzymania przepływu na węźle.

Język UML dopuszcza, by jedno wyjście z węzła było opisane warunkiem [else], który oznacza ścieżkę, jaka powinna być wybrana w przypadku niespełnienia warunku dozoru wszystkich pozostałych wyjść.

Węzeł rozwidlenia

najczesciej_stosowana_notacja_UML_2011_html_57bb6e9c

Rysunek 86. Węzeł rozwidlenia – notacja

Węzeł rozwidlenia (ang. fork node) to element, pozwalający na funkcjonowanie współbieżnych stanów. W zależności od sytuacji może być użyty jako linia pionowa lub pozioma.

Węzeł rozwidlenia stosowany jest, gdy w czasie wykonywania sekwencyjnej ścieżki występuje podzielenie ścieżki na równoległe (minimum dwie) ścieżki, których przepływy są wykonywane w tym samym czasie. Należy zaznaczyć,
że węzeł rozwidlenia nie jest elementem synchronizującym, a jedynie wskazującym początek przepływów równoległych. Do zsynchronizowania ścieżek można, tak jak w podanym przykładzie, użyć węzła scalenia, którego notacja jest identyczna jak węzła rozwidlenia.

image

Rysunek 87. Węzeł rozwidlenia i scalenia na diagramie maszyny stanowej

Diagram maszyny stanowej – przykładowe zastosowanie

Diagram maszyny stanowej prezentuje stan, w którym może znajdować się obiekt. Rysunek 88 prezentuje diagram maszyny stanowej, która przedstawia stany obiektu Pojazd. Na diagramie tym pokazano, jakie stany przyjmowane są przez egzemplarz Pojazdu. Pierwszym z nich jest stan, w którym nowo zakupiony pojazd jest rejestrowany w systemie komputerowym. Następnie pojazd przechodzi w stan konserwacji (mycie, sprzątanie). W dalszej kolejności pojazd oczekuje na wynajęcie/ rezerwację. Gdy pojazd zostanie zarezerwowany (akcja klienta lub sprzedawcy wypożyczalni) auto przechodzi w stan rezerwacji. Zastosowanie punktu wejściowego i wyjściowego dla stanu „Wypożyczony” umożliwiło zakapsułkowanie jego wnętrza. Wewnętrzna struktura tej maszyny stanowej została przedstawiona na rysunku 88. Po zwrocie pojazdu jest oceniany stan auta. W zależności od decyzji pojazd jest kierowany do serwisu, konserwacji lub jest wycofywany z użytku (np. po dużej kolizji drogowej). Wycofanie auta powoduje zakończenie istnienia bytu Pojazd.

image

Rysunek 88. Przykład diagramu maszyny stanowej

Pozostałe diagramy UML:

Close