96 lines
3.1 KiB
Markdown
96 lines
3.1 KiB
Markdown
# State Machine Diagrams
|
|
## Introduction
|
|
- Beschreiben den Zustand von Objekten oder des Systems
|
|
|
|
### Introduction Example
|
|
- Light can be on / off
|
|
- 
|
|
|
|
## States
|
|
- Diskretes, durchgehendes Segment von Zeit, während der das Verhalten des Objekts stabil ist
|
|
- Kann eine passive Qualität haben
|
|
- _Licht an / aus_
|
|
- Kann auch eine aktive Qualität haben / Was das Objekt tut
|
|
- _Kaffeemaschine mahlt Kaffee_
|
|
- Objekt bleibt in dem Zustand bis es von einem Event stimuliert wird
|
|
|
|
- States sind **nicht**:
|
|
- Objekte oder Komponenten des Systems
|
|
- Aktivitäten des Systems
|
|
|
|
### Internal Activities of States
|
|

|
|
- 3 Aktivitäten die an einem definierten Moment ausgeführt werden
|
|
- **entry behavior**
|
|
- **do-activity behavior**
|
|
- kann unterbrochen werden
|
|
- **exit behavior**
|
|
- entry- und exit behavior können nicht unterbrochen werden
|
|
|
|
#### Activities Example
|
|

|
|
|
|
### Internal Pseudostate
|
|

|
|
- **nur einmalig**
|
|
- Markieren den Start eines Maschinen-Diagramms
|
|
- Keine eingehenden Pfeile
|
|
- Ein ausgehender Pfeil zum ersten _richtigen_ Zustand
|
|
- ohne Events
|
|
|
|
### Final State
|
|

|
|
- **können mehrere existieren**
|
|
- Objekte können permanent in einem End-Status sein
|
|
|
|
|
|
## State Transitions
|
|
### External Transitions
|
|

|
|
- Repräsentiert eine Änderung des Zustands von einem Ursprungs-Zustand zu einem Ziel-Zustand
|
|
- Eine Transition braucht keine Zeit
|
|
- Das System ist immer in einem Zustand, nie in einer Transition
|
|
|
|

|
|
|
|
#### Syntax of Description: trigger[guard] / behavior
|
|
- Alles **optional**:
|
|
- **Trigger** (Event), dass eine [Transition](#state-transitions) hervorruft
|
|
- **Guard** (Condition), welche die Ausführung der Transition aktiviert
|
|
- Sobald das Event stattfindet, muss der Guard erfüllt werden
|
|
- Falls dasselbe Event mehrere Transitions eines einzigen States hervorruft
|
|
- Die Guards müssen sich gegenseitig ausschließen
|
|
- Falls nicht: EIne Transition wird zufällig ausgesucht
|
|
- **Behavior** (Effects) wird während der Transition ausgeführt
|
|
|
|
### Internal Transition
|
|
- Handhaben Events innerhalb eines States
|
|
- 
|
|
|
|
### Types of Events
|
|
#### Call Events
|
|
- Operation calls inklusive der Parameter
|
|
- _occupy(user, LectureHall)_
|
|
|
|
#### Time Events
|
|
- Zeitbasierter Zustandsübergang (relativ / absolut)
|
|
- _relative: after(5 sec)_
|
|
- _absolute: when(time == 16:00)_
|
|
|
|
#### Change Events
|
|
- Permanente Überwachung, ob eine Bedingung wahr wird
|
|
- _when (registration == numberOfSeats)_
|
|
|
|
#### Any Receive Events
|
|
- Zur Spezifikation einen Typ eines _else_ Übergangs
|
|
- Falls ein Event auftritt, welches keine Übergänge für den aktiven Zustand auslöst
|
|
- _the object transitions to S4 without any event that is not e1 or e2_
|
|
|
|
#### Completion Events
|
|
- Falls alle Verhaltensweisen eines States vollständig sind
|
|
- _once A1 is completed completion event triggers transition to S2_
|
|
|
|
### State Transition Examples
|
|
- 
|
|
- 
|
|
-  |