2017-11-21 3 views
1

Wie handhabe ich mehr als eine Bedingung (mit verschiedenen booleschen Ausdrücken) in einem UML-Zustandsmaschine-Übergang (als Schutz)?F: Wie behandelt man mehr als eine Bedingung in einem UML-Zustandsmaschine-Übergang

Beispiel: enter image description here

In diesem Beispiel würde Ich mag mehr hinzuzufügen als nur eine Bedingung (Tries < 3) beim Übergang von der "Protokollierung in" auf "Angemeldete" wie discribed in der Notiz.

Wie mit diesem UML-kompatibel umgehen?

+0

Es scheint, dass Sie eine Lösung mit EA Nein wollen? Sagen Sie es also :) – granier

+0

Sie zerlegen den Zustand entweder in mehrere Zustände mit jeweils eigenen Übergangsbedingungen (z. B. "networkOK -> LoginPrompt") oder Sie definieren ihn als eine zusammengesetzte Bedingung. –

+0

@granier Deshalb hat er diese Frage mit EA getaggt. –

Antwort

1

Einfach gesprochen (und auf den benötigten Schritt zu konzentrieren)

enter image description here

einen Booleschen Zustand versetzt wie oben in der Guard. Dies kann beliebiger Text sein. Sie können C-Stil oder einfachen Text schreiben. Ich bin mir nicht sicher über OCL hier, aber das ist für akademische Zwecke sowieso (meine Meinung).

N.B. Ihr Diagramm zeigt Tries = 3, das auch ein Guard sein sollte (d. H. [Tries = 3]) anstatt ein Name.

+0

wie ich weiß OCL nicht &&, aber und ... (warum? Vielleicht diese Jungs wissen nicht C ..) – granier

+0

@granier Vielleicht kommen sie von der Python, Pascal, COBOL oder (irgendwie) FORTRAN Front, die stattdessen Text verwenden von Symbolen auch. –

+0

;) Cobol: warum nicht :) – granier

1

Es gibt ein paar Möglichkeiten:

  1. Ihre Wache Zustand mehrere Kontrollen im ‚[]‘ kombinieren können - ähnlich wie Sie in der Notiz taten.
  2. Sie können mehrere Übergänge zwischen denselben zwei Zuständen haben, von denen jeder eine eigene Bedingung hat.
  3. Sie können Zustände innerhalb von Zuständen haben. In Ihrem Beispiel könnten die drei Zustände in einem Superzustand von "Normaler Betrieb" liegen - den Sie dann in anderen Dokumentationen oder durch eine Notiz weiter definieren.

Alle diese sind gültige UML-Syntax. Beachten Sie jedoch, dass nur weil etwas gültig ist, es nicht in Ihrem Editor unterstützt wird. Zum Beispiel war es viele Jahre, bis die meisten Funktionen von Sequenzdiagrammen in den Editoren wurde ...

Verwandte Themen