– 17 – 2015-01-20 – main –
Software Design, Modelling and Analysis in UML
Lecture 17: Hierarchical State Machines Ib
2015-01-20
- Prof. Dr. Andreas Podelski, Dr. Bernd Westphal
Albert-Ludwigs-Universit¨ at Freiburg, Germany
Lecture 17: Hierarchical State Machines Ib 2015-01-20 Prof. Dr. - - PowerPoint PPT Presentation
Software Design, Modelling and Analysis in UML Lecture 17: Hierarchical State Machines Ib 2015-01-20 Prof. Dr. Andreas Podelski, Dr. Bernd Westphal 17 2015-01-20 main Albert-Ludwigs-Universit at Freiburg, Germany Contents
– 17 – 2015-01-20 – main –
Albert-Ludwigs-Universit¨ at Freiburg, Germany
– 17 – 2015-01-20 – Sprelim –
2/37
inject this event?
– 17 – 2015-01-20 – main –
3/37
– 17 – 2015-01-20 – Shiersyn –
4/37
[ ausstehendeAufrufe>1 ] empfangeErgebnisse(nr, parameter) / [ausstehendeAufrufe = ausstehendeAufrufe @pre - 1] [ true ] / [ausstehendeAufrufe = ausstehendeAufrufe @pre + 1 ] anmelden()/ abmelden()/
angemeldet abgemeldet
PA Client
Die Zustandsübergänge von Protokoll-Zustandsautomaten verfügen über eine Vorbedingung, einen Auslöser und eine Nachbedingung (alle
einen Effekt. Wenn der Endzustand eines Zustandsautomaten erreicht wird, wird die Region beendet, in der der Endzustand liegt.
ZA Boardingautomat (HW) ZA
when(k=0)/ when(k=1)/ “Karte liegt an” “Karte auswerfen” / setze(f,1) “Karte laden” / setze(f,1) “Karte zurückweisen” / setze(f,-1) “Karte auslesen” / inhalt = i
leer bereit belegt
when(k=0) / setze(f,0)
Kartenleser
Auch Zeit- und Änderungs- ereignisse können Zustands- übergänge auslösen:
Verstreichen eines Intervalls;
Zustandswechsel. Zustände und zeitlicher Bezugsrahmen werden über den umgebenden Classifier definiert, hier die Werte der Ports, siehe das Montage- diagramm „Abfertigung“ links
drehkreuz
“Drehkreuz freigeben” / setze(s,0) “Drehkreuz blockieren” / setze(s,1)
freigegeben gesperrt
when(d>0) / “Kreuz dreht sich”
aus/
an/
Ein verfeinerter Zustand verweist auf einen Zustands- automaten (angedeutet von dem Symbol unten links), der das Verhalten des Zustandes definiert. Ein Zustand kann eine oder mehrere Regionen enthalten, die wiederum Zustands- automaten enthalten können. Wenn ein Zustand mehrere Regionen enthält, werden diese in verschiedenen Abteilen angezeigt, die durch gestrichelte Linien voneinander getrennt sind. Regionen können benannt
werden parallel zueinander abgearbeitet. Kartenleser Wenn ein Regionsend- zustand erreicht wird, wird der gesamte komplexe Zustand beendet, also auch alle parallelen Regionen. Ereignisse können innerhalb eines Zustands Aktionen auslösen.
ZA
Bordkarte einlesen
entry/Karte auswerfen do/Drehkreuz freigeben
Bordkarte akzeptieren
[ Passagier nicht angemeldet ] when(Drehkreuzsensor=”drehen”) / Drehkreuz blockieren entry/Suchanfrage starten do/Anzeigelämpchen blinkt
Passagier überprüfen Bordkarte zurückweisen
Ergebnis der Such- anfrage liegt vor [ Passagier angemeldet ] after(10s) / Drehkreuz blockieren
Protokollzustandsautomaten beschreiben das Verhalten von Softwaresystemen, Nutzfällen oder technischen Geräten.
aussetzen wieder aufnehmen Passagier identifizieren after(10s) /timeout
H
Passagier-ID auslesen
Ein Zustand löst von sich aus bestimmte Ereignisse aus:
Aufenthaltes;
des Endzustandes einer Unter-Zustandsmaschine
Diese und andere Ereignisse können als Auslöser für Aktivitäten herangezogen werden.
[ valide ] Validität überprüfen
warten Reguläre Beendigung löst ein completion-Ereignis aus. Das Zeitereignis after(10s) löst einen Abbruch von „Bordkarte einlesen“ aus. Der Gedächtniszustand sorgt dafür, dass nach dem Wieder- aufnehmen der gleiche Zustand wie vor dem Aussetzen einge- nommen wird. Der Austrittspunkt erlaubt es, von einem definierten inneren Zustand aus den Oberzustand zu verlassen. Der Anfangszustand markiert den voreingestellten Startpunkt von „Boarding“ bzw. „Bordkarte einlesen“. Ein Eintrittspunkt definiert, dass ein komplexer Zustand an einer anderen Stelle betreten wird, als durch den Anfangszustand definiert ist.
timeout
Boarding
Ein komplexer Zustand mit einer Region.
[St¨
– 17 – 2015-01-20 – Shiersyn –
5/37
example simple state
s1 entry/actentry
1
do/actdo
1
exit/actexit
1
E1/actE1 . . . En/actEn
final state composite state OR
s s1 s2 s3
AND
s s1 s2 s3 s′
1
s′
2
s′
3
example pseudo-state initial
H
deep history
H∗
fork/join , junction, choice
entry point exit point terminate submachine state S : s
– 17 – 2015-01-20 – Shiersyn –
6/37
– 17 – 2015-01-20 – Shiersyn –
6/37
(as before),
is a function which labels states with their kind, (new)
(new)
(changed)
(new)
provides an annotation for each transition. (new)
– 17 – 2015-01-20 – Shiersyn –
7/37
s s1 s2 s3
s s1 s2 s3 s′
1
s′
2
s′
3
1}, {s2, s′ 2},
3}}
– 17 – 2015-01-20 – Shiersyn –
8/37
({(top, st), (s1, init), (s, st), (s2, fin)}
, {top → {{s1, s, s2}}, s1 → ∅, s → ∅, s2 → ∅}
, {t1, t2}
→
, {t1 → ({s1}, {s}), t2 → ({s}, {s2})}
, {t1 → (tr, gd, act), t2 → annot}
)
– 17 – 2015-01-20 – Shiersyn –
9/37
– 17 – 2015-01-20 – Shiersyn –
10/37
1, init) ∈ Si and
at least one transition t ∈→ with si
1 as source,
2 is in Si, and
(for simplicity!) kind(si
2) = st, and
annot(t) = ( , true, act).
– 17 – 2015-01-20 – Shiersyn –
11/37
example simple state
s1 entry/actentry
1
do/actdo
1
exit/actexit
1
E1/actE1 . . . En/actEn
final state composite state OR
s s1 s2 s3
AND
s s1 s2 s3 s′
1
s′
2
s′
3
example pseudo-state initial
H
deep history
H∗
fork/join , junction, choice
entry point exit point terminate submachine state S : s
– 17 – 2015-01-20 – main –
12/37
– 17 – 2015-01-20 – Sentryexit –
13/37
s1 entry/actentry
1
do/actdo
1
exit/actexit
1
E1/actE1 . . . En/actEn s2 entry/actentry
2
do/actdo
2
exit/actexit
2
tr[gd]/act
action (default: skip)
trigger/action pairs called internal transitions, (default: empty). Note: E1, . . . , En ∈ E , ‘entry’, ‘do’, ‘exit’ are reserved names!
1
1 , . . .
s2
s1
– 17 – 2015-01-20 – Sentryexit –
14/37
s1 entry/actentry
1
do/actdo
1
exit/actexit
1
E1/actE1 . . . En/actEn s2 entry/actentry
2
do/actdo
2
exit/actexit
2
tr[gd]/act
– 17 – 2015-01-20 – Sentryexit –
15/37
s0 s1 entry/actentry
1
exit/actexit
1
E1/actE1 s2 entry/actentry
2
exit/actexit
2
tr 0[gd0]/act0 tr 1[gd1]/act1 tr 2[gd2]/act2
– 17 – 2015-01-20 – Sentryexit –
15/37
s0 s1 entry/actentry
1
exit/actexit
1
E1/actE1 s2 entry/actentry
2
exit/actexit
2
tr 0[gd0]/act0 tr 1[gd1]/act1 tr 2[gd2]/act2
If internal actions should have priority, s1 can be embedded into an OR-state (later).
– 17 – 2015-01-20 – Sentryexit –
16/37
s1 entry/actentry
1
do/actdo
1
exit/actexit
1
E1/actE1 . . . En/actEn s2 entry/actentry
2
do/actdo
2
exit/actexit
2
tr[gd]/act
– 17 – 2015-01-20 – main –
36/37
– 17 – 2015-01-20 – main –
37/37
[Crane and Dingel, 2007] Crane, M. L. and Dingel, J. (2007). UML vs. classical vs. rhapsody statecharts: not all models are created equal. Software and Systems Modeling, 6(4):415–435. [Damm et al., 2003] Damm, W., Josko, B., Votintseva, A., and Pnueli, A. (2003). A formal semantics for a UML kernel language 1.2. IST/33522/WP 1.1/D1.1.2-Part1, Version 1.2. [Fecher and Sch¨
machines: Complete formal semantics via core state machines. In Brim, L., Haverkort, B. R., Leucker, M., and van de Pol, J., editors, FMICS/PDMC, volume 4346 of LNCS, pages 244–260. Springer. [Harel and Kugler, 2004] Harel, D. and Kugler, H. (2004). The rhapsody semantics
and Westk¨ amper, E., editors, Integration of Software Specification Techniques for Applications in Engineering, number 3147 in LNCS, pages 325–354. Springer-Verlag. [OMG, 2007] OMG (2007). Unified modeling language: Superstructure, version 2.1.2. Technical Report formal/07-11-02. [St¨
ur Studenten. Pearson Studium.