Frage

Bei einem System, das zwei Komponenten enthält, a und b und b und

Das System startet gleichzeitig A und B. Jetzt kann A durch die Zustände {A.Starting, A.Ready} und B können in den Zuständen sein {B.Starting, B.Doingx, B.Doingy}. (Ereignisse zum Übergang zwischen A und Bs Zuständen werden dementsprechend benannt: B.Doingx => B geht zu B. Doingx usw.)

A and B state machine from yuml.me

Ich möchte das modellieren

  • Während A in A.Starting oder B in B.Starting ist, ist das System "anfängt"
  • Das System ist im Zustand "tox", wenn a in A.Ready und B in b.doingx ist
  • Das System ist im Zustand "toy", wenn a in A.Ready und B in B. doingy ist

System state machine from yuml.me

Wenn ich mich nicht irre, könnten hier die Fork/Join-Pseudo-States verwendet werden.

Aber haben diese Modellelemente die deklarative Semantik des oben erwähnten komponierten Zustands? Gibt es eine andere Möglichkeit, dies zu modellieren?

(Hinweis: Die Diagramme stammen aus http://yuml.me)

War es hilfreich?

Lösung

Warum ziehst du diese nicht einfach auseinander? Hier ist eine weitere Idee, wie Sie es modellieren können (vorausgesetzt, ich habe es richtig verstanden):

  • Ein Staat "Start", der die Zustände enthält, die Sie als A.Starting und B. in parallelen Regionen starten (Sie können hier Gabel/Anschlüsse verwenden oder sich nur auf das Standardverhalten aller Regionen verlassen, wenn der Status "Start" aktiviert wird wird eingegeben)

  • Ein weiterer Staat "Tun", der eine Region mit Ihrem "A.Ready" -Staat und einer anderen parallele Region enthält, die die beiden Staaten "B.Doingx" und "B. Doingy" enthält.

Wenn Sie wirklich einen Gesamtstatus "tatx" benötigen, müssen Sie möglicherweise zwei Zustände erstellen, die A.Ready entsprechen.

Wie auch immer, aus einer breiteren Perspektive: Ich glaube, Ihr Standpunkt ist hier ein bisschen abgeschafft, wenn Sie sagen, dass das "System im Zustand ist ...". Das von einer solchen Zustandsmaschine modellierte System befindet sich vielmehr in einer Reihe von Zuständen. Normalerweise wäre ich sehr froh zu sagen, dass "das System derzeit in A.Ready und b.doingx ist".

Vielleicht brauchen Sie nur eine Änderung der Terminologie. Was ist damit:

Das System ist in Aufbau "Dox", wenn A.Ready und B.Doingx -Zustände aktiv sind?

Als Antwort auf den Kommentar: Ja, dies ist Standard. Hier ist der entsprechende Teil der Überstrukturspezifikation (Version 2.4 Beta):

In einer hierarchischen Zustandsmaschine kann mehr als ein Zustand gleichzeitig aktiv sein. [...] Der aktuelle aktive „Zustand“ wird tatsächlich durch eine Reihe von Bäumen dargestellt, die mit den obersten Zuständen der Wurzelregionen bis zum innersten aktiven Substate liegen. Wir bezeichnen einen solchen Staatsbaum als Statuskonfiguration.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top