Diagramy stanu (maszyny stanowej)
Przykładem notacji służącej do modelowania zmian stanów systemu są diagramy maszyny stanowej UML (state machine diagrams)
W wersji 2.0 UML wprowadza się rozróżnienie między:
- maszynami stanu modelującymi zachowanie (behavioral state machines) - będącymi zmodyfikowaną wersją diagramów opracowanych przez Harela w roku 1987 (rozmaite diagramy stanów są w użyciu już od lat 60-tych XX wieku)
- maszynami stanu reprezentującymi dozwolone sposoby użycia egzemplarzy klasyfikatorów (np. obiektów jako egzemplarzy klas) (protocol state machines)
Maszyny stanowe protokołów są jednym ze sposobów ilustracji interfejsów klas.
Elementami diagramów stanu są:
- stany – przedstawiane jako prostokąty o zaokrąglonych narożach
- stany proste (bez regionów i podmaszyn)
- stany będące maszynami stanowymi (“podmaszyny”)
- stany złożone – zawierające regiony sekwencyjne lub współbieżne (stany zawarte w regionach ortogonalnych innych stanów nazywane są “podstanami”)
- regiony ortogonalne (współbieżne)
- przejścia między stanami – strzałki łączące stany
- z przejściem może być związany słowny opis mający różną formę w diagramach zachowania i protokołów
- pseudostany – elementy pozwalające na tworzenie złożonych przejść między stanami
W diagramach protokołów opis przejścia może mieć postać:
[warunek początkowy] zdarzenie/[warunek końcowy]
- zdarzenie (event) jest najczęściej wywołaniem operacji związanej z danym egzemplarzem klasyfikatora (obiektem)
- warunek początkowy i końcowy (precondition, postcondition) mają swoje standardowe znaczenie – warunek początkowy musi być spełniony przed rozpoczęciem przejścia, warunek końcowy powinien być spełniony po zakończeniu przejścia
Protokół - DostępDoBazyDanych
W diagramach zachowania opis przejścia może mieć postać:
wyzwalacz [warunek sprawdzający]/czynność
- wyzwalacz (trigger) jest tym co uruchamia przejście
- czynność (activity) opisuje, co realizowane jest w trakcie przejścia
- warunek sprawdzjący (warunek dozoru, guard) musi być prawdziwy, aby doszło do przejścia (dzięki temu można wprowadzać sterowanie za pomocą warunków)
- oznaczenie przejść parami wyzwalacz-warunek musi być jednoznaczne
Zamiast opisu przejścia można wykorzystać także graficzne symbole oznaczające wysłanie lub odebranie sygnału
Symbol stanu (tylko w maszynie modelującej zachowanie) może, poza samą nazwą stanu, zawierać dodatkowe informacje (umieszczane poniżej poziomej kreski dzielącej symbol stanu). Dodatkowe informacje określają wewnętrzne przemiany w ramach danego stanu.
Podstawowymi dodatkowymi informacjami są:
- entry/... - informuje o działaniach realizowanych bezpośrednio po wejściu w dany stan
- exit/... - działania realizowane bezpośrednio przed wyjściem ze stanu
- do/... - czynności realizowane w sposób ciągły w danym stanie, po ich ukończeniu możliwe jest przejście ze stanu bez żadnego wyzwalacza
- inne wewnętrzne działania (przejścia wewnętrzne) opisane za pomocą tej samej formy co przejścia między stanami
- .../defer – zdarzenia odroczone, obsługiwane w innych stanach
Podstawowymi pseudostanami pojawiającymi się w diagramach stanów są następujące pseudostany:
- (initial) – pokazuje na domyślny stan początkowy
- (fork) – rozdziela przejście na ortogonalne składowe
- (join) – łączy ortogonalne składowe
- (junction) – łączy składowe
- (choice) – oznacza miejsce dokonywania wyboru
- (entry) – wejście do maszyny stanowej lub stanu złożonego
- (exit) – wyjście z pod-maszyny stanowej lub stanu złożonego
- (terminate) – zakończenie działania maszyny stanowej
- (deep history, shallow history) – oznaczają przejście maszyny w ostatni aktywny stan, wskazują na stan domyślny przy braku stanów poprzednich