Diagram stanów

Diagramy maszyny stanów służą do obrazowania zachowania systemów programowych. (…)
Maszyny stanowe mają zastosowanie w prezentacji zachowania wybranych fragmentów systemów za pomocą grafów. (Pilone 2007, s. 111)

08.02.26

W tabelach poniżej przedstawiłem próbę zamodelowania dwóch prostych diagramów XTT przy pomocy diagramów stanów UMLa:

Diagram nr 1: Diagram stanowy dla diagramu XTT dt:
:pl:miw:miw08_umlandardxtt:xtt_dt.png:pl:miw:miw08_umlandardxtt:dt_state1.png
Diagram nr 2: Diagram stanowy dla diagramu XTT th:
:pl:miw:miw08_umlandardxtt:xtt_th.png:pl:miw:miw08_umlandardxtt:th_state1.png

W tabeli wymieniłem typy użytych pseudostanów:

Symbol Opis pseudostanu (na podstawie: Pilone 2007, s. 125)
:pl:miw:miw08_umlandardxtt:ico_start.png Pseudostan początkowy - punkt początkowy maszyny stanów.
:pl:miw:miw08_umlandardxtt:ico_romb.png Wybór - pozwala działającej maszynie stanów na wybór jednego z kilku różnych stanów na podstawie warunków dozoru zdefiniowanych dla przejść.
:pl:miw:miw08_umlandardxtt:ico_rozdzielacz.png Rozwidlenie i scalenie - rozwidlenie w wykonywaniu maszyny stanowej na obszary współbieżne, scalenie ponownie łączy obszary w jedno przejście. Maszyna stanowa nie wyjdzie ze scalenia dopóki wszystkie obszary nie przejdą w jego pseudostan.

Zagadnienia problematyczne

W drugim diagramie stanowym jeden z atrybutów tabeli XTT przekształciłem w stan, a drugi w warunek dozoru (warunek zapisany jest nad krawędzią przejścia pomiędzy stanami [oznaczona symbolem strzałki], gdy jest on spełniony - jeden stan przechodzi w drugi zgodnie z kierunkiem strzałki między nimi). Powoduje to następujący problem: które z parametrów przekształcać w stany, a które w warunki dozoru?

08.03.04

By uniknąć problemu, które atrybuty XTT przekształcać w warunki, a które w stany, ustalam:

  • stanami zostaną wartości atrybutów wyjściowych tabeli XTT (H w XTT),
  • warunkami dozoru stają się poszczególne wiersze tabeli XTT (koniunkcja wartości w ich komórkach).

Zmodyfikowany wg powyższych ustaleń diagram stanowy dla diagramu XTT th wygląda następująco:

Diagram nr 3: Zmodyfikowany diagram stanowy dla diagramu XTT th:
:pl:miw:miw08_umlandardxtt:xtt_th.png:pl:miw:miw08_umlandardxtt:th_state2a.png

Powyższy diagram byłby tylko częściowo zgodny z takim XTT, w których wiersze w tabelach są interpretowane z góry na dół oraz mają być unikalnymi kombinacjami wartości atrybutów. W przypadku użycia pseudostanu wybór (choice), zgodnie ze specyfikacją OMG UML 2.1.2 (s. 556) warunki dozoru co prawda nie muszą się wzajemnie wykluczać (tutaj następuje istotna niezgodność), ale w przypadku spełnienia więcej niż jednego warunku, wybierany jest tylko jeden z nich (tyle że nie pierwszy od góry, ale dowolny).

Jeśli jednak w XTT mogłyby (choćby na skutek pomyłki) wystąpić w poszczególnych wierszach wartości, które nie wykluczałyby wzajemnie tych wierszy, wtedy należałoby użyć rozwidlenia (fork node), które duplikuje wartość wejściową i może przechodzić więcej niż jedną krawędzią do kolejnych stanów. Dla tak rozumianego XTT należałoby zmodyfikować diagram następująco:

Diagram nr 4: Zmodyfikowany diagram stanowy dla diagramu XTT th:
:pl:miw:miw08_umlandardxtt:xtt_th.png:pl:miw:miw08_umlandardxtt:th_state2b.png

Zagadnienia problematyczne

  • :!: Jak uniknąć braku czytelności w przypadku diagramu nr 3? Przy większej liczbie stanów końcowych i większej liczbie kombinacji warunków dozoru krawędzie przejść między stanami mogą się przecinać, a ponieważ wychodzą z jednego punktu (pseudostanu wybór) sprawią, że warunki dozoru je opisujące będą nieczytelne.
  • :!: Czy i jak realizować -X (retract), +Y(assert) w XTT?

:!: Zgodnie ze specyfikacją XTT wiersze w tabelach są interpretowane z góry na dół. W tym momencie diagramy aktywności czy stanów zamodelowane jak wyżej nie dają możliwości oddania tych zależności. Możliwości rozwiązania problemu:

  • numeracja krawędzi i w ten sposób utrzymywanie kontroli przepływu - komplikuje to diagram, prawdopodobnie nie będzie zgodne ze specyfikacją UML.
  • oddanie tych specyficznych zależności na innym rodzaju diagramu.
pl/miw/miw08_umlandardxtt/state_diagrams.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0