Usi
ng U
ML,
Pat
tern
s, an
d Ja
vaO
bjec
t-O
rien
ted
Soft
war
e E
ngin
eeri
ngChapter 3,Activity
Diagrams
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
What is UML?• UML (Unified Modeling Language)
• Nonproprietary standard for modeling software systems, OMG• Convergence of notations used in object-oriented methods
• OMT (James Rumbaugh and collegues)• Booch (Grady Booch) • OOSE (Ivar Jacobson)
• Current Version: UML 2.2• Information at the OMG portal http://www.uml.org/
• Commercial tools: Rational (IBM),Together (Borland), Visual Architect (business processes, BCD)
• Open Source tools: ArgoUML, StarUML, Umbrello, LucidChart• Commercial and Opensource: PoseidonUML (Gentleware)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
What is UML? Unified Modeling Language
• Convergence of different notations used in object-oriented methods, mainly
• OMT (James Rumbaugh and collegues), OOSE (Ivar Jacobson), Booch (Grady Booch)
• They also developed the Rational Unified Process, which became the Unified Process in 1999
25 year at GE Research, where he developed OMT, joined (IBM) Rational in
1994, CASE tool OMTool
At Ericsson until 1994, developed use cases and the
CASE tool Objectory, at IBM Rational since 1995,
http://www.ivarjacobson.com
Developed the Booch method
(“clouds”), ACM Fellow 1995, and IBM Fellow 2003
http://www.booch.com/
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
UML: First Pass
• You can model 80% of most problems by using about 20% UML
• We teach you those 20%
• 80-20 rule: Pareto principle: For many events, roughly 80% of the effects come from 20% of the causes.
Vilfredo Pareto, 1848-1923Introduced the concept of Pareto
Efficiency, Founder of the field of microeconomics.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
UML Core Conventions
• All UML Diagrams denote graphs of nodes and edges
• Nodes are entities and drawn as rectangles or ovals• Rectangles denote classes or instances • Ovals denote functions
• Names of Classes are not underlined• SimpleWatch• Firefighter
• Names of Instances are underlined• myWatch:SimpleWatch
• Joe:Firefighter• An edge between two nodes denotes a
relationship between the corresponding entities
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Outline of this Class
• Activity diagrams• Describe the dynamic behavior of a system, in
particular the workflow.• Class diagrams
• Describe the static structure of the system: Objects, attributes, associations
• Use case diagrams• Describe the functional behavior of the system as seen
by the user• Sequence diagrams
• Describe the dynamic behavior between objects of the system
• Statechart diagrams• Describe the dynamic behavior of an individual object
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
UML Activity Diagrams: Activities and Actions
An activity is a non-atomic task or procedure
decomposable into actions.
An action is a task or procedure that cannot be
broken into parts.
Actions and activities can be anything that humans, machines, organizations, or other entitites do.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Activity Graph Elements
Sort Clothes
Wash Whites
Wash Darks
Dry Clothes
Fold Clothes
Do Laundry
activity symbol
action node
activity edge
initial node
activity final node
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
UML Activity Diagrams• An activity diagram is a special case of a state
chart diagram • The states are activities (“functions”) • An activity diagram is useful to depict the
workflow in a system.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
Branching Nodes
guards
merge node
decision node
Run Drier
Fold Clothes
Dry Clothes
[else]
[still wet]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Execution Model
• Execution is modeled by tokens that are produced by action nodes, travel over action edges, and are consumed by action nodes.
• When there is a token on every incoming edge of an action node, it consumes them and begins execution.
• When an action node completes execution, it produces tokens on each of its outgoing edges.
• An initial node produces a token on each outgoing edge when an activity begins.
• An activity final node consumes a token available on any incoming edge and terminates the activity.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Branching Execution
Decision and merge node behavior:
• If a token is made available on the incoming edge of a decision node, the token is made available on the outgoing edge whose guard is true.
• If a token is available on any incoming edge of a merge node, it is made available on its outgoing edge.
• Guards must be mutually exclusive.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Deadlock
RunDrier cannot execute: when the activity begins, there is a token on the edge from the initial node but not on the other incoming edge.
Run Drier
Fold Clothes
Try to DryClothes
[else]
[still wet]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
Forking and Joining Nodes
fork node
join node
SortClothes
WashWhites
WashDarks
DryClothes
FoldClothes
Do Laundry
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
Forking and Joining Execution
• A token available on the incoming edge of a fork node is reproduced and made available on all its outgoing edges.
• When tokens are available on every incoming edge of a join node, a token is made available on its outgoing edge.
• Concurrency can be modeled without these nodes.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
Concurrent Problem Solution (An example)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
Object Nodes
Data and objects are shown as object nodes.
Destroyer[captured]
Cruiser
Battlegroup
Battleship[damaged]
object node
object node state
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
Control and Data Flows
• Control tokens do not contain data, data tokens do.
• A control flow is an activity edge that is a conduit for control tokens.
• A data flow is an activity edge that is a conduit for data tokens.
• Rules for token flow through nodes apply to both control and data tokens, except that data is extracted from consumed tokens and added to produced tokens.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
Control and Data Flow Example
Run Drier
Fold Clothes
Wash and DryClothes
[else]
[still wet]
Clothes[wet]
Clothes
Wash Clothes
control flow
control flow
data flows
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
Activity Parameters
• Activity parameters are object nodes placed on activity symbol boundaries to indicate data or object inputs or outputs.
• Activity parameters contain the data or object name.
• Activity parameter types are specified in the activity symbol beneath the activity name.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
Activity Parameter Example: Maximum Finding Algorithm
max = a[i]
FindMaxa : int[1..*]max : int
[else][i < a.length]
i++
[max < a.[i]]
[else]
max = a[0]i = 1a
max
output activity parameter
input activity
parameter
activity parameter types
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Activity Diagram Heuristics
• Flow control and objects down the page and left to right.
• Name activities and actions with verb phrases.• Name object nodes with noun phrases.• Don’t use both control and data flows when a
data flow alone can do the job.• Make sure that all nodes entering an action node
can provide tokens concurrently (to prevent deadlocks).
• Use the [else] guard at every branch.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
When to Use Activity Diagrams
When making a dynamic model of any process.• Design processes (what designers do)• Designed processes (what designers create)
• During analysis• During resolution
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Activity Diagrams allow to model Decisions
Decision
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Activity Diagrams can model Concurrency• Synchronization of multiple activities • Splitting the flow of control into multiple threads
SynchronizationSplitting
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
Activity Diagrams: Grouping of Activities• Activities may be grouped into swimlanes to denote the
object or subsystem that implements the activities.
OpenIncident
AllocateResources
CoordinateResources
DocumentIncident
ArchiveIncident
Dispatcher
FieldOfficer
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
Activity Diagram vs. Statechart Diagram
HandleIncident
DocumentIncident
ArchiveIncident
Active Inactive Closed ArchivedIncident-Handled
Incident-Documented
Incident-Archived
Statechart Diagram for IncidentFocus on the set of attributes of a single abstraction (object, system)
Activity Diagram for Incident (Focus on dataflow in a system)
TriggerlesstransitionCompletion of activity
causes state transition
Event causesstate transition
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
Example of an Activity Diagram with a Frame
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
The Activity Diagram without Frame
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
Activity Diagram Example
ActionObject node
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
Activity Diagram: Activity Nodes & Edges• An activity diagram consists of nodes and edges• There are three types of activity nodes
Control nodesExecutable nodes
• Most prominent: ActionObject nodes
• E.g. a document• An edge is a directed connection between
nodes• There are two types of edges
• Control flow edges• Object flow edges
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
Activity Diagram Example
Object flow
Control flow
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
Summary: Activity Diagram Example
Initial node
Merge node
Final node
ActionObject node
Fork node
Join node
Object flow
Control flow
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34
Example 1: What the diagram represents?
a. A documentb. A printerc. A word-
processord. A user of a
word-processor
e. A page being printed
f. The diagram is invalid
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35
Example 2: What is the max number of concurrent threads that is possible?
a. 1b. 2c. 3d. 4e. 5
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3636
Example 3: In this diagram...a. Fill Order is executed
before Receive Payment
b. Overnight Delivery is executed in parallel with Regulary Delivery
c. Close Order is executed after Receive Payment
d. Fill Order is executed in parallel with Send Invoice
e. Send Invoice is possibly executed
f. Regular Delivery is always executed
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37
Example 4:
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38
Example 5: Cash Withdrawal Process from a Bank
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39
Example 6: Passenger to Airplane
There should be only one final node, not two!!!
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40
Alıştırma (10 dakika)
Müşteri restorana girer. Eğer oturacak yer varsa oturur, yoksa çıkar. Oturduktan sonra menüye bakar. İki seçeneği vardır: Çin yemeği, Japon
yemeği. İkisini de yemek istemiyorsa çıkar gider. İstediği yemeği seçer, garsona söyler. Garson
mutfağa siparişi geçer. Yemekler hazır olduğunda garson yemeği müşteriye götürür. Müşteri
yemeği yedikten sonra hesap ister. Eğer memnun kaldıysa hesabı ödeyip bahşiş bırakır. Eğer memnun kalmadıysa hesabı öder, bahşiş
bırakmadan restorandan çıkar.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41
Summary
• A process is a collection of related tasks that transforms a set of inputs to a set of outputs.
• UML activity diagrams model processes by depicting actions and the flow of control and data between them.
• Activity symbols contain activity graphs consisting of • action nodes• action edges• data nodes• special nodes for starting and stopping activities,
branching, forking, and joining• Activity diagrams can represent any process and are
useful throughout software design.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42
Another view on UML Diagrams