Software Design, Modelling and Analysis in UML
Lecture 16: Hierarchical State Machines I
2014-01-15
- Prof. Dr. Andreas Podelski, Dr. Bernd Westphal
Albert-Ludwigs-Universit¨ at Freiburg, Germany
– 16 – 2014-01-15 – main –
Software Design, Modelling and Analysis in UML Lecture 16: - - PowerPoint PPT Presentation
Software Design, Modelling and Analysis in UML Lecture 16: Hierarchical State Machines I 2014-01-15 16 2014-01-15 main Prof. Dr. Andreas Podelski, Dr. Bernd Westphal Albert-Ludwigs-Universit at Freiburg, Germany Contents
– 16 – 2014-01-15 – main –
– 16 – 2014-01-15 – Sprelim –
2/59
– 16 – 2014-01-15 – main –
3/59
– 16 – 2014-01-15 – Sstmocl –
4/59
– 16 – 2014-01-15 – main –
5/59
[ 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 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. K a r t e n l e s e r Wenn ein Regionsend- zustand erreicht wird, wird der gesamte komplexe Zustand beendet, also auch alle parallelen Regionen.
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.
– 16 – 2014-01-15 – Shiersyn –
6/59
s1 entry/actentry
1
do/actdo
1
exit/actexit
1
E1/actE1 . . . En/actEn
s s1 s2 s3
s s1 s2 s3 s′
1
s′
2
s′
3
H
H∗
– 16 – 2014-01-15 – Shiersyn –
7/59
– 16 – 2014-01-15 – Shiersyn –
8/59
– 16 – 2014-01-15 – Shiersyn –
8/59
s s1 s2 s3
s s1 s2 s3 s′
1
s′
2
s′
3
1}, {s2, s′ 2},
3}}
– 16 – 2014-01-15 – Shiersyn –
9/59
→
– 16 – 2014-01-15 – Shiersyn –
10/59
– 16 – 2014-01-15 – Shiersyn –
11/59
1, init) ∈ Si and
1 as source,
2 is in Si, and
2) = st, and
– 16 – 2014-01-15 – Shiersyn –
12/59
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
– 16 – 2014-01-15 – Shiersyn –
13/59
– 16 – 2014-01-15 – main –
14/59
/act1 annot
– 16 – 2014-01-15 – Sinitfin –
15/59
– 16 – 2014-01-15 – Sinitfin –
16/59
– 16 – 2014-01-15 – Sinitfin –
17/59
– 16 – 2014-01-15 – main –
18/59
– 16 – 2014-01-15 – Shierstm –
19/59
– 16 – 2014-01-15 – Shierstm –
20/59
1
2
3
1, st)(s2, st)(s′ 2, st)(s3, st)(s′ 3, st)}
1}, {s2, s′ 2}, {s3, s′ 3}}, s1 → ∅, s′ 1 → ∅, . . . }
– 16 – 2014-01-15 – Shierstm –
21/59
s1 s2 s3 s4 s5 s6 tr[gd]/act
– 16 – 2014-01-15 – Shierstm –
22/59
E/ F/ F/ E/ G/
– 16 – 2014-01-15 – Shierstm –
23/59
– 16 – 2014-01-15 – Shierstm –
24/59
s s1 s2 s3
– 16 – 2014-01-15 – Shierstm –
24/59
s s1 s2 s3 s′
1
s′
2
s′
3
– 16 – 2014-01-15 – Shierstm –
24/59
– 16 – 2014-01-15 – Shierstm –
25/59
1
2
3
1
2
3
– 16 – 2014-01-15 – Shierstm –
25/59
– 16 – 2014-01-15 – Shierstm –
26/59
1
2
3
1
2
3
– 16 – 2014-01-15 – Shierstm –
26/59
– 16 – 2014-01-15 – Shierstm –
27/59
1
2
3
1
2
3
– 16 – 2014-01-15 – Shierstm –
27/59
– 16 – 2014-01-15 – Shierstm –
28/59
1
2
3
1
2
3
– 16 – 2014-01-15 – Shierstm –
28/59
– 16 – 2014-01-15 – Shierstm –
29/59
s2
s8 s4
s6
E/ F/ F/ E/ G/
s7 [true]/ F/
– 16 – 2014-01-15 – Shierstm –
29/59
– 16 – 2014-01-15 – Shierstm –
30/59
s2
s8 s4
s6
E/ F/ F/ E/ G/
s7 [true]/ F/
– 16 – 2014-01-15 – Shierstm –
30/59
– 16 – 2014-01-15 – Shierstm –
31/59
– 16 – 2014-01-15 – Shierstm –
31/59
– 16 – 2014-01-15 – Shierstm –
31/59
– 16 – 2014-01-15 – Shierstm –
31/59
(cons,Snd)
– 16 – 2014-01-15 – Shierstm –
32/59
– 16 – 2014-01-15 – main –
33/59
1
1
1
2
2
2
– 16 – 2014-01-15 – Sentryexit –
34/59
1
1
1
2
2
2
1
1 , . . .
s2 ◦ tact ◦ tactexit s1
– 16 – 2014-01-15 – Sentryexit –
34/59
1
1
1
2
2
2
– 16 – 2014-01-15 – Sentryexit –
35/59
1
1
1
2
2
2
– 16 – 2014-01-15 – Sentryexit –
35/59
1
1
2
2
– 16 – 2014-01-15 – Sentryexit –
36/59
1
1
2
2
– 16 – 2014-01-15 – Sentryexit –
36/59
1
1
1
2
2
2
– 16 – 2014-01-15 – Sentryexit –
37/59
1
1
1
2
2
2
– 16 – 2014-01-15 – Sentryexit –
37/59
– 16 – 2014-01-15 – main –
38/59
H H∗
E/ B/ C/ D/ F/ Rs/ Rd/ A/ S/ Rs/ Rd/
– 16 – 2014-01-15 – Shist –
39/59
[gd2]/act2
– 16 – 2014-01-15 – Shist –
40/59
[gd2]/act2
– 16 – 2014-01-15 – Shist –
40/59
[gd2]/act2
– 16 – 2014-01-15 – Shist –
40/59
– 16 – 2014-01-15 – Shist –
41/59
– 16 – 2014-01-15 – Shist –
41/59
– 16 – 2014-01-15 – Shist –
41/59
– 16 – 2014-01-15 – main –
42/59
– 16 – 2014-01-15 – Sdefer –
43/59
– 16 – 2014-01-15 – Sdefer –
43/59
– 16 – 2014-01-15 – Sdefer –
43/59
– 16 – 2014-01-15 – Sdefer –
43/59
– 16 – 2014-01-15 – Sdefer –
44/59
– 16 – 2014-01-15 – Sdefer –
44/59
– 16 – 2014-01-15 – Sdefer –
44/59
– 16 – 2014-01-15 – main –
45/59
– 16 – 2014-01-15 – Sactpass –
46/59
– 16 – 2014-01-15 – Sactpass –
46/59
– 16 – 2014-01-15 – Sactpass –
47/59
– 16 – 2014-01-15 – Sactpass –
47/59
– 16 – 2014-01-15 – Sactpass –
47/59
– 16 – 2014-01-15 – Sactpass –
48/59
– 16 – 2014-01-15 – Sactpass –
48/59
C1 C2 D n
0..1
itsAct
1
itsAct
1
itsAct
1
dest
1
dest
1
dest
1
C– 16 – 2014-01-15 – Sactpass –
49/59
u1 : C1 ud : C2 ua : D n
itsAct itsAct itsAct
– 16 – 2014-01-15 – Sactpass –
49/59
u1 : C1 ud : C2 ua : D n
itsAct itsAct itsAct
– 16 – 2014-01-15 – Sactpass –
49/59
– 16 – 2014-01-15 – main –
50/59
– 16 – 2014-01-15 – Smethods –
51/59
– 16 – 2014-01-15 – Smethods –
51/59
C
ξ1 f(τ1,1, . . . , τ1,n1) : τ1 P1 ξ2 F(τ2,1, . . . , τ2,n2) : τ2 P2
E
– 16 – 2014-01-15 – Smethods –
52/59
C
ξ1 f(τ1,1, . . . , τ1,n1) : τ1 P1 ξ2 F(τ2,1, . . . , τ2,n2) : τ2 P2
E
– 16 – 2014-01-15 – Smethods –
52/59
C
ξ1 f(τ1,1, . . . , τ1,n1) : τ1 P1 ξ2 F(τ2,1, . . . , τ2,n2) : τ2 P2
E
– 16 – 2014-01-15 – Smethods –
52/59
C
ξ1 f(τ1,1, . . . , τ1,n1) : τ1 P1 ξ2 F(τ2,1, . . . , τ2,n2) : τ2 P2
E
– 16 – 2014-01-15 – Smethods –
53/59
C
ξ1 f(τ1,1, . . . , τ1,n1) : τ1 P1 ξ2 F(τ2,1, . . . , τ2,n2) : τ2 P2
E
– 16 – 2014-01-15 – Smethods –
53/59
– 16 – 2014-01-15 – main –
54/59
– 16 – 2014-01-15 – Ssemvar –
55/59
– 16 – 2014-01-15 – Ssemvar –
55/59
– 16 – 2014-01-15 – Ssemvar –
55/59
– 16 – 2014-01-15 – main –
56/59
N S W E
CD, SM
S = (T, C, V, atr), SMM = (Σ
D S , A S , →SM)ϕ ∈ OCL expr CD, SD
S , SDB = (QSD, q0, A
S , →SD, FSD)π = (σ0, ε0)
(cons0,Snd0)
− − − − − − − − →
u0
(σ1, ε1)· · · wπ = ((σi, consi, Sndi))i∈N G = (N, E, f)
OD
– 16 – 2014-01-15 – main –
57/59
– 16 – 2014-01-15 – main –
58/59
– 16 – 2014-01-15 – main –
59/59