Software Mid-Level Design: State Transitions (chapter 13)

advertisement
State Transition Diagram
& UML’s enhancements
• Another “tool” for depicting the Design
• An integral part of the DeSCRIPTR
– State
– Transition
State Transition Diagram
•
–
A state transition diagram is used to depict:
1.
2.
3.
The states of an entity
The transitions of states of the entity
The trigger or the event that caused the transition of state of
the entity
The entity may be a physical device such as a light
switch or a vending machine; it may be a software
system or component such as a word processor or an
operating system; it may be a biological system such
as a cell or a human; or - - - -
This modeling technique came from a more formal area - automata theory and
switching theory. State transition diagram depicts a Finite State Machine.
Software Program View
• The end product of a software development
is a program which executes. In depicting the
program (or an object) we can consider:
– Variables which take on different values
– Control structure and assignment statements
(events) in the program that change the values of
the variables; but “little” is said about how the
control structure or the statements work
1. Combination of values of the data (variables & constants) at any point of
the program represent the program state at that point.
2. The change made to the values of the variables through assignment statements
represent a transition of state
A very simple example
light switch (page 368 of your text)
From
State
(light)
Alt
switch
Event
(switch)
To
State
(light)
light
[l_st=on]
TurnOff ( )
on
turnOff
off
[l_st=off]
off
turnOn
on
TurnOn ( )
2. “State transition table”
for light with switch events
1. “Sequence diagram” (alternative
fragment) for switch and light interaction
turnOff
light
on
light
off
turnOn
3. “State transition diagram”
for light with switch events
A little “more” on the light switch
turnOff
on
turnOff
off
turnOn
What happens if we turn on
a light that is already on?
on
turnOn
turnOff
off
turnOn
state can “transition” to its
current state
Using State Transition Diagram
•
Model the entity at the “abstraction” level
where the number of states is
“manageable.”
1.
2.
3.
4.
5.
List (design) the states (should not be large)
List (design) events that will trigger the state transition
(should not be big)
There must be a starting state
There must be a terminating state or states
Design the transition rules (the bulk of your design work
is thinking through the transition rules)
1.The above is not necessarily performed in sequence; iterate through these.
2. Even with a modest number of states and events, the state transition
diagram, which really depicts the transition rules, can be enormous.
Designing the Voice Recorder
(similar to example on page 397 of text)
• For the entity, voice recorder, design the states of this
entity:
– How many states does ( somewhat based on requirement ) a voice
recorder have?
• Set of recorder states = { off, on, play, record, erase, stop, error-msg }
– What are the initial and terminating states?
• Initial state = {off}
• Terminating state = {off}
Note: no “rewind”
“go-back” state
• List the events that will change the state of the entity:
– What are the events that will change the recorder’s states?
• “Input signals” = { 1, 2, 3, 4, 5, 6 } which corresponds to:
{off, on, play, record, erase, stop}
Designing the Voice Recorder
(example form page 397 of text) – cont.
• Design the transition rules for the voice recorder
from state
events
to state
off
off
2
1
on
off
on
1
off
on
3
play
on
4
record
on
5
erase
play
6
stop
record
6
stop
erase
6
stop
stop
3
play
stop
4
record
stop
5
erase
stop
1
off
More transition rules:
1. Any state transition not described
here will transition to error-msg state
2. once in error-msg state, the system
“displays a message” and
automatically transitions to stop state.
Events : {1=off, 2=on, 3=play, 4=record, 5=erase, 6=stop}
State Transition Diagram of
Voice Recorder
{1=off, 2=on, 3=play, 4=record, 5=erase, 6=stop}
1
1
1
Off
stop
On
2
[always true]
3
4
3
Error-msg
5
5
4
6
play
6
6
erase
record
Couple things to note:
1. All non-specified events for all the states go to “Error-msg” state - - - is that o.k?
2. What happens when a signal of 6 comes in when in state “ON” - - - error message?
3. How do you specify “display error message” in Error-msg state ?
4. How do you specify “Starting” and “Terminating” state ?
Finite State Machine (more “classical” usage)
State Transition diagram of M1
Pseudo code for the design of M1:
0
S1
1
0
1
S2
1
1
0
S4
0
S3
“Formal” Definition of M1
M1 = {event, States, T, I, Term}
where:
event = {0, 1}
States = {s1, s2, s3, s4}
T = {(s1,0)-> s2; (s1,1) -> s4; -----}
I = s1
Term = s1
Read input string;
If input string includes non - 0’s or 1’s, error msg; break;
if input string length is odd number, error msg; break;
Set state = s1;
While (the string is non-empty)
{ ele = first element from the string;
delete the first element from the string;
if (state = s1 & ele = 0) then state = s2;
if (state = s1 & ele = 1) then state = s4;
if (state = s2 & ele = 0) then state = s1;
if (state = s2 & ele = 1) then state = s3;
if (state = s3 & ele = 0) then state = s4;
if (state = s3 & ele = 1) then state = s2;
if (state = s4 & ele = 0) then state = s3;
if (state = s4 & ele = 1) then state = s1;
}
if (state = s1) string is accepted
else error msg ;
end
M1 is a string checker that “accepts” all strings that contain even number of 0’s and 1’s
UML’s “improvements” on
State Transition Diagrams
•
Event may be expressed with a string:
event-signature [guard] / action-expression
•
State symbol may contain several compartments:
•
•
Name
Processing activities in the form of :
•
Action-label / Action-expressions
•
•
Action-labels:
•
Entry – specifies activities upon state entry
•
Exit – specifies activities upon state exit
•
Do – specifies activities to be performed after entry but before exit
•
Include – names another state diagram to be used for “nested” state
transition diagram for further refinement
Action-expression specifies the activities to be performed.
•
Instead of include, there may be a “stubbed” state which can be
expanded later.
•
The state diagram may contain another state diagram (nested
diagram) in its compartment
UML State Transition Composite Diagram Example
(cruise control system - similar to page 401 of text)
off
onBtnclick
offBtnclick
On
Note:
pedalSpeed
entry / spLock:= undefined
engage
pressBreak
setSpeed
entry/ spLock :=
current speed
do / lockState := on
freeSpeed
entry / spLock :=
undefined
do / lockState:= off
exit / set offBtnclick
1. the start
and terminating
states
2. When entering a
composite diagram,
the start state must be
clearly defined.
3. How we exit this
composite diagram from
the freeSpeed state and
actually enter “off” state
Some Deeper (Advanced) UML State Diagrams
• Concurrent Composite State Diagram contains two or more
composite state diagrams that may be executed in parallel;
state diagram is divided up into compartments by parallel
doted lines.
Concurrent Composite State
Event-K
StateZ
Event-A
StateW
Note:
1. Transition to a concurrent
composite state boundary will
enter initial states of all the
concurrent state diagrams
2. Or one can specify the sub
states which will be entered,
along with the one specified
start state
3. similarly exits can be specified
More Advanced UML State Transition Diagram
with Synchronization Mechanism
EW= east-west
NS=north-south
SignalOperationState
EW Green
after 40 sec
after 5 sec
EW Yellow
EW Red
after 35 sec
NS Red
after 45 sec
NS Green
after 30 sec
NS Yellow
after 5 sec
Synch
signal
used to
help
regulate
transition
SynchronizedSignalOperation
after 35 sec
EW Green
after 40 sec
EW Red
EW Yellow
after 5 sec
1
1
NS Red
after 5 sec
NS Yellow
after 30 sec
after 45 sec
NS Green
Synch
signal
used to
help
regulate
transition
Transition Junction & Compound Transition
near_by
store
at_home
shopping_urge
[cold=no]
far_away
mall
on-line
shopping
Advanced Mechanism to set
History
RadioOn
off
turnOn
turnoff
setFM
Preset FM
station
setAM
Preset AM
station
setCD
Preset cd
music
H
The history of preset
state is
“remembered” if
the radio is turned
on after it is
turned off
History state, H, says
re-enter the state that
was last active
Read at least one example from the text on your own.
(Especially the Dialog Map and UI diagram)
Download