Beruflich Dokumente
Kultur Dokumente
Dynamic Models
07-UML-Dynamic
Overview
Interaction diagrams
Activity diagrams
State Diagrams
07-UML-Dynamic
Interaction Diagrams
07-UML-Dynamic
We Will Cover
Capturing use-cases
Dealing with concurrency
Collaboration diagrams
When to use what
When to use interaction diagrams
07-UML-Dynamic
Sequence diagrams
Collaboration diagrams
07-UML-Dynamic
Power Up
Home Owner (initiator)
Primary and essential
Cross Ref.:
Use-Cases:
07-UML-Dynamic
Sequence Diagrams
a H om e O wner
t h e O n - O f f S w it c h
t h e C o n t r o lle r
a Room
S y s te m O n
p o w e rO n ()
* [fo r a ll r o o m s ]
te m p S ta tu s := c h e c k T e m p ()
[te m p S ta tu s = = lo w ]
p u m p O n ()
[te m p S ta tu s = = lo w ]
o p e n V a lv e ( )
[te m p S ta tu s = = lo w ]
s ta rtB u rn e r()
th e W a te r P u m p
p re p a re ()
a n O rd e r
a n O r d e r L in e
a S to c k Ite m
* [ f o r a ll o r d e r lin e s ]
p re p a re ()
h a s S to c k := c h e c k ()
[h a s S to c k ]
re m o v e ()
n e e d s R e o rd e r := n e e d s T o R e o rd e r()
[n e e d s R e o rd e r]
new
[h a s S to c k ] n e w
a R e o rd e r Ite m
a D e liv e r y I t e m
M H
Concurrency
new
a T r a n s a c t io n
new
a T r a n s a c t io n
C o o r d in a t o r
new
a f ir s t T r a n s a c t io n
C hecker
a second
T r a n s a c tio n
C hecker
new
ok
a llD o n e ?
ok
a llV a lid
a llD o n e ?
Another Example
a H om e O wner
th e O n - O ff S w itc h
S y s te m O n
th e C o n tr o lle r
th e W a te r P u m p
p o w e rO n ()
* [ f o r e a c h r o o m in h o u s e ]
new
a R oom
c h e c k T e m p ()
te m p L o w
[te m p L o w ]
p u m p O n ()
[te m p L o w ]
o p e n V a lv e ( )
[te m p L o w ]
s ta rtB u rn e r()
M H
a H om e O wner
th e O n - O f f S w itc h
S y s te m O n
t h e C o n t r o lle r
th e W a te r P u m p
p o w e rO n ()
* [ f o r e a c h r o o m in h o u s e ]
new
a Room
c h e c k T e m p ()
te m p L o w
[te m p L o w ]
p u m p O n ()
[te m p L o w ]
o p e n V a lv e ( )
[te m p L o w ]
s ta rtB u rn e r()
M H
Collaboration Diagrams
:O rd e r E n try
W in d o w
1 : p re p a re ()
:O rd e r
2 : * [ fo r a ll o r d e r lin e s ]:
p re p a re ()
5 : n e e d s R e o rd e r := n e e d s T o R e o rd e r()
3 : h a s S to c k := c h e c k ()
W in te r s t o c k :
S to c k Ite m
W in te r lin e : O r d e r L in e
7 : [h a s S to c k ] :n e w
: D e liv e r y It e m
4 : [h a s S to c k ]:
re m o v e ()
6 : [n e e d s R e o rd e r]:
new
a R e o rd e r Ite m
M H
Conditional Behavior
07-UML-Dynamic
13
Comparison
07-UML-Dynamic
14
When you want to clarify and explore single usecases involving several objects
If you are interested in one object over many usecases -- state transition diagrams
If you are interested in many objects over many
use cases -- activity diagrams
07-UML-Dynamic
15
State Diagrams
07-UML-Dynamic
16
We Will Cover
State Machines
07-UML-Dynamic
17
Class
Has a
Behavior
Behavior
Generally, one state diagram per class
Describe the entire behavior of class
All methods in one state diagram
1
State Diagram
07-UML-Dynamic
18
The controller is in the state self-test after the self-test button has been
pressed and the rest-button has not yet been pressed
The tank is in the state too-low when the fuel level has been below level-low
for alarm-threshold seconds
07-UML-Dynamic
19
07-UML-Dynamic
20
1 ..1
L in e
1 ..1
C a lle r
Phone
1 ..1
1 ..1
07-UML-Dynamic
C a lle e
21
Event Trace
The Caller
The Line
The Callee
phone rings
tone stops
phones connected
callee answers
ringing stops
phones connected
phones disconnected
callee hangs up
caller hangs up
phones disconnected
Idle
off-hook
Dial tone
digit(x)
digit(x)
Dialing
valid-number
Ringing
called-phone-answers
Connected
called-phone-hangs-up
Disconnected
Scenario 2
The Caller
The Line
The Callee
Dial tone
digit(x)
on-hook
Busy tone
Dialing
valid-number
number-busy
routed
Connecting
Ringing
called-phone-answers
Connected
called-phone-hangs-up
on-hook
Disconnected
Conditions
on-hook
off-hook
Dial tone
digit(x) [x = 8]
digit(x)
digit(x)
Dialing
digit(x) [x != 8]
Dial tone
(external)
Dialing
valid-number
Busy tone
routed
07-UML-Dynamic
valid-number
number-busy
Ringing
digit(x)
Connecting
26
Actions are
performed when a
transition is taken or
performed while in a
state
Actions are
terminated when
leaving the state
off-hook
on-hook
Dial tone
digit(x)
on-hook
on-hook
Busy tone
do/ busy tone
on-hook
Dialing
valid-number
number-busy
Connecting
on-hook
Ringing
Connected
called-phone-hangs-up / disconnect line
on-hook
07-UML-Dynamic
Disconnected
27
Idle
Dial tone
off-hook
do/ sound dial tone
dial(x) [x is a digit]
Make Call
Establish call
Dialing
dial(x)
valid-number
number-busy
on-hook
Busy tone
Connecting
routed
Ringing
on-hook
Connected
called-phone-answers /
connect line
called-phone-hangs-up /
disconnect line
Disconnected
dial(x) [x = *]
Voice Mail
Information Hiding
Idle
on-hook
off-hook
Establish call
Dial tone
Dialing
Busy tone
Establish call
Voice Mail
on-hook
on-hook /
disconnect line
on-hook
valid-number
number-busy
Make Call
Connected
Connecting
Ringing
called-phone-answers /
connect line
called-phone-hangs-up /
disconnect line
Disconnected
07-UML-Dynamic
dial(x)
29
Event Generalization
mouse-up.location
mouse-down.device
mouse-button.time
event
time
user-input
device
mouse-button
location
mouse-down
07-UML-Dynamic
keyboard-key
character
mouse-up
30
Concurrency
Alarms Disabled
out-of-bounds-event
Alarms
Visual Alarm Enabled
reset
On
Off
visual-on
Aural Alarm
reset
On
Off
aural-on
07-UML-Dynamic
31
Ambiguous Semantics 1
Is F transition ever taken?
How?
A
B
[G]
07-UML-Dynamic
32
Ambiguous Semantics 2
[G]
07-UML-Dynamic
33
Ambiguous Semantics 3
How many threads are running in here?
A
F
J
G
D
E
K
H
What does this mean?
07-UML-Dynamic
34
Ambiguous Semantics 4
F
J
G
D
E
07-UML-Dynamic
K
H
Does this component get started?
35
Ambiguous Semantics 5
Class_One
Class_Two.message
Class_Two
07-UML-Dynamic
36
Transition Rules
07-UML-Dynamic
37
38
Transition Syntax
Event[Guard]/Action1;Action2;.;ActionN
Actions include: send(event)
Events include: timeout(), when(boolean)
Pulse[pulsemode]/count++
Sample triggers:
Timeout(10s)/send(reset)
Digit(d)[isvalid(d)]/stash(d)
07-UML-Dynamic
39
Events
States
something performed in a
state
Hierarchies
Transitions
Internal actions
Conditions
instances in time
Parallelism
Triggered by events
Guarded by conditions
Cause actions to happen
07-UML-Dynamic
40
07-UML-Dynamic
41
07-UML-Dynamic
42
Modeling Approach
Prepare scenarios
07-UML-Dynamic
43
Scenario-1
Room
Fuel
Valve
Controller
request-temp
Every 5s
Burner
respond-temp
open-valve
Temp Low
start-burner
pump-on
open-water-valve
request-temp
Every 5s
respond-temp
pump-off
Temp Normal
close-water-valve
stop-burner
close-valve
Water
Pump
Scenario-2
Control
Panel
Every 5s
Desired temp
change
Every 5s
Room
Controller
request-temp
respond-temp
Temp Normal
Burner
desired-temp-change
request-temp
respond-temp
open-valve
start-burner
pump-on
Temp Low
Every 5s
Fuel
Valve
open-water-valve
request-temp
respond-temp
close-water-valve
pump-off
stop-burner
close-valve
Water
Pump
Dynamic Model
Water Pump
pump-on
On
Off
pump-off
Fuel Valve
open-valve
Open
Closed
close-valve
Burner
start-burner
On
Off
stop-burner
07-UML-Dynamic
46
Room
Water-Valve
open-water-valve/
wv-open
Temp-Sensor
Idle
Valve
request-temp
close-water-valve/
wv-close
07-UML-Dynamic
temp-report(x)/
respond-temp(x)
Processing
Request
47
respond-temp(x)[x>desired-temp+2]/stop-heating
Temp-Low
Temp-Normal
timeout(5s)\
request-temp
respond-temp(x)[x<desired-temp-2]/start-heating
timeout(1s)/start-burner
Burner-On
Fuel-Open
start-heating/open-valve
All-Running
stop-heating/
pump-off,close-water-valve
07-UML-Dynamic
All-Off
Water-Off
Fuel-Off
timeout(1s)/close-valve
timeout(1s)/stop-burner
48
07-UML-Dynamic
49
Complete OO Model
Home Heating
System
Control Panel
Water Pump
on()
off()
On-Off Switch
Thermostat
setting
desired-temp
Pushes
Runs
Furnace
operating()
target-temp()
Adjusts
Burner
Fuel Valve
on()
off()
open()
close()
1..*
Room
Notifies
open-valve()
close-valve()
room-temp()
Operator
1..*
Ignites
Temp Sensor
Heats
Water Valve
Monitor
1..*
Opens/Closes
temperature
07-UML-Dynamic
Controller
50
Iterate
07-UML-Dynamic
51
Activity Diagrams
07-UML-Dynamic
52
We Will Cover
Activity diagrams
Swimlanes
When to use activity diagrams
When not to
07-UML-Dynamic
53
Activity Diagrams
Mechanisms to express
A glorified flowchart
07-UML-Dynamic
54
B.H.C.
07-UML-Dynamic
55
w.e.m.
07-UML-Dynamic
56
Coffee Example
F in d B e v e r a g e
[n o c o ffe e ]
D e c is io n
[n o c o k e ]
[fo u n d c o ffe e ]
[fo u n d c o k e ]
P u t C o f f e e in F ilt e r
A d d W a te r to
R e s e r v o ir
G et Cups
G et C an of C oke
P u t F ilt e r in
M a c h in e
T u r n O n M a c h in e
^ c o ffe P o t.T u rn O n
B re w C o ffe e
D r in k B e v e r a g e
P o u r C o ffe e
M H
HACS Use-Cases
Use case:
Distribute Assignments
Actors: Instructor (initiator), Student
Type:
Primary and essential
Description:
The Instructor completes an assignment and submits
it to the system. The instructor will also submit the
delivery date, due date, and the class the assignment
is assigned for. The system will at the due date mail
the assignment to the student.
Cross Ref.:
Requirements XX, YY, and ZZ
Use-Cases:
Configure HACS must be done before any user
(Instructor or Student) can use HACS
07-UML-Dynamic
58
[ s u b m is s io n t im e ]
W r it e S o lu t io n
S u b m it
A s s ig n m e n t
M a il
A s s ig n m e n t
S u b m it S o lv e d
A s s ig n m e n t
S u b m it
S o lu tio n
G ra d e
A s s ig n m e n t
S o lv e
A s s ig n m e n t
M a il S o lu tio n
R e v ie w
S o lu t io n
H it th e P u b
H ACS
S tu d e n t
W r ite
A s s ig n m e n t
[s u b m is s io n tim e ]
W r it e S o lu t io n
S u b m it
A s s ig n m e n t
M a il
A s s ig n m e n t
S u b m it S o lv e d
A s s ig n m e n t
S u b m it
S o lu t io n
G ra d e
A s s ig n m e n t
S o lv e
A s s ig n m e n t
M a il S o lu t io n
R e v ie w
S o lu tio n
H it th e P u b
07-UML-Dynamic
60
Flow to OO is hard
Extensive use of activity charts can make this shift even harder
However...
07-UML-Dynamic
61
Useful when
07-UML-Dynamic
62