8.1 Interaction Diagrams: Interaction Diagrams Are Used To Model The Dynamic Aspects of A Software System
8.1 Interaction Diagrams: Interaction Diagrams Are Used To Model The Dynamic Aspects of A Software System
8.1 Interaction Diagrams: Interaction Diagrams Are Used To Model The Dynamic Aspects of A Software System
1 Interaction Diagrams
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 3 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 4
Creating instances diagrams Sequence diagrams – an example
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 5 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 6
Sequence diagrams –
Sequence diagrams
same example, more details
A sequence diagram shows the sequence of messages exchanged by
the set of objects performing a certain task
The objects are arranged horizontally across the diagram. GUI :CourseSection aStudent: :Course
Student
An actor that initiates the interaction is often shown on the left.
requestToRegister
requestToRegister
The vertical dimension represents time. (aStudent)
prereq :=
hasPrerequisite := getPrerequisite
A vertical line, called a lifeline, is attached to each object or actor. hasPassedCourse(prereq)
[hasPrerequisite]
The lifeline becomes a broad box, called an activation box during <<create>> :Registration
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 7 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 8
Sequence diagrams – Sequence diagrams –
an example with replicated messages an example with object deletion
An iteration over objects is indicated by an asterisk If an object’s life ends, this is shown with an X at the
preceding the message name end of the lifeline
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 9 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 10
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 11 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 12
Collaboration diagrams –
Communication links
same example, more details
A communication link can exist between two objects
whenever it is possible for one object to send a message
2: prereq := getPrerequisite
to the other one.
1: requestToRegister(aStudent)
<<local>>
GUI :CourseSection :Course
3: hasPrerequisite := 5: addToRegistrationList
Several situations can make this message exchange
hasPassedCourse(prereq) 4: [hasPrerequisite]
<<parameter>> <<create>>
<<parameter>> possible:
aStudent: :Registration
Student 5: addToSchedule
<<parameter>> 1. The classes of the two objects have an association
between them.
- This is the most common case.
- If all messages are sent in the same direction, then probably
the association can be made unidirectional.
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 13 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 14
2. The receiving object is stored in a local variable of 4. The receiving object is global.
the sending method. - This is the case when a reference to an object can be
- This often happens when the object is created in the sending obtained using a static method.
method or when some computation returns an object . - The stereotype «global», or a [G] symbol is used in this
- The stereotype to be used is «local» or [L]. case.
3. A reference to the receiving object has been received 5. The objects communicate over a network.
as a parameter of the sending method. - We suggest to write «network».
- The stereotype is «parameter» or [P].
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 15 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 16
How to choose between using a sequence How to choose between using a sequence
or collaboration diagram or collaboration diagram
Sequence diagrams Collaboration diagrams
Make explicit the time ordering of the interaction. Can be seen as a projection of the class diagram
—Use cases make time ordering explicit too —Might be preferred when you are deriving an
—So sequence diagrams are a natural choice when you interaction diagram from a class diagram.
build an interaction model from a use case. —Are also useful for validating class diagrams.
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 17 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 18
A collaboration diagram can be used to represent aspects of A state diagram describes the behaviour of a system,
a design pattern some part of a system, or an individual object.
2: [information needed At any given point in time, the system or object is in a
1: request
and not loaded]
loadHeavyWeight
certain state.
:Client :Proxy :HeavyWeight
—Being in a state means that it is will behave in a
a) specific way in response to any events that occur.
proxy heavyWeight
Some events will cause the system to change state.
Student PersistentStudent
—In the new state, the system will behave in a
Proxy
different way to events.
client
A state diagram is a directed graph where the nodes are
CourseSection states and the arcs are transitions.
b)
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 19 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 20
State diagrams – an example States
tic-tac-toe game At any given point in time, the system is in one state.
XWin
It will remain in this state until an event occurs that
XTurn causes it to change state.
Tie
A state is represented by a rounded rectangle containing
the name of the state.
OWin
Special states:
OTurn
—A black circle represents the start state
—A circle with a ring around it represents an end state
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 21 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 22
The label on each transition is the event that causes the after(25s)
after(25s since exit from
state RedLight)
change of state.
YellowLight after(30s) YellowLight after(30s)
after(5s) after(5s)
RedLight RedLight
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 23 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 24
State diagrams – an example with
Activities in state diagrams
conditional transitions
An activity is something that takes place while the
system is in a state.
Planned
openRegistration
closeRegistration
—It takes a period of time.
requestToRegister
Cancelled OpenNotEnoughStudents (aStudent)
cancel /createRegistration
classSize >= minimum
—The system may take a transition out of the state in
cancel
response to completion of the activity,
closeRegistration
requestToRegister
Closed OpenEnoughStudents (aStudent)
classSize >= maximum /createRegistration
—Some other outgoing transition may result in:
- The interruption of the activity, and
- An early exit from the state.
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 25 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 26
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 27 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 28
State diagram – an example with actions State diagrams – another example
Closed Opening
Enter / pressButton Enter /
stop motor run motor forwards
Recording endOfTape Rewinding
closingCompleted
Exit / stop
openingCompleted
pressButton
startOfTape / stop
endOfProgram
Closing pressButton Open
Wait
Enter / Enter /
run motor in reverse stop motor
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 29 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 30
Nested substates and guard conditions State diagram – an example with substates
openRegistration
Cancelled Open requestToRegister
selectReverse
Neutral Reverse cancel (aStudent)
do:
selectNeutral NotEnoughStudents /createRegistration
unregister
students closeRegistration
selectFirst selectDrive selectSecond selectNeutral
classSize >= minimum
reachSecondSpeed reachThirdSpeed
[driveSelected] [driveSelected]
First Second Third classSize >= maximum
dropBelowSecondSpeed dropBelowThirdSpeed Closed EnoughStudents
[driveSelected] closeRegistration
selectFirst selectSecond
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 31 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 32
8.3 Activity Diagrams Activity diagrams – an example
Receive course
An activity diagram is like a state diagram. registration request
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 33 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 34
Concurrency is shown using forks, joins and rendezvous. —A join has multiple incoming transitions and one
outgoing transition.
- The outgoing transition will be taken when all incoming
—A fork has one incoming transition and multiple
transitions have occurred.
outgoing transitions.
- The incoming transitions must be triggered in separate
- The execution splits into two concurrent threads. threads.
- If one incoming transition occurs, a wait condition occurs at
—A rendezvous has multiple incoming and multiple the join until the other transitions occur.
outgoing transitions.
- Once all the incoming transitions occur all the outgoing
transitions may occur.
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 35 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 36
Activity diagrams – an example with
Swimlanes
swimlanes Student CourseSection
Complete
registration
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 37 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 38
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 39 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 40
Example: The CourseSection class Example: The CourseSection class
course.getMinimu m()
‘EnoughStudents’ (substate of ‘Open’):
— open == true && registrationList.size() >=
course.getMinimu m()
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 41 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 42
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 43 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 44
Example: The CourseSection class Example: The CourseSection class
public void openRegistration() public void closeRegistration()
{ {
if(!closedOrCancelled) //to 'Cancelled' or 'Closed' state
// must be in ‘Planned’ state open = false;
{ closedOrCancelled = true;
open = true; if(registrationList.size() <
//to 'OpenNotEnoughStudents' state course.getMinimu m())
} {
} unregisterStudents();
//to ‘Cancelled’ state
}
}
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 45 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 46
// Check for auto matic transition to 'Closed' state // Called within this package only, by the
if(registrationList.size() >= course.getMaxim u m()) // constructor of Registration
{ void addToRegistrationList(
//to ‘Closed’ state Registration newRegistration)
open = false; {
closedOrCancelled = true; registrationList.add(newRegistration);
} }
} }
}
© Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 47 © Lethbridge/Laganière 2001 Chapter 8: Modelling Interactions and Behaviour 48
8.5 Difficulties and Risks in Modelling
Interactions and Behaviour
Dynamic modelling is a difficult skill
In a large system there are a very large number of possible paths a
system can take.
It is hard to choose the classes to which to allocate each behaviour:
—Ensure that skilled developers lead the process, and ensure that
all aspects of your models are properly reviewed.
—Work iteratively:
- Develop initial class diagrams, use cases, responsibilities,
interaction diagrams and state diagrams;
- Then go back and verify that all of these are consistent, modifying
them as necessary.
—Drawing different diagrams that capture related, but distinct,
information will often highlight problems.