Chapter-3-Activity

advertisement
Using UML, Patterns, and Java
Object-Oriented Software Engineering
Chapter 3,Activity Diagrams
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
2
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
Developed the
Booch method
25 year at GE Research,
(“clouds”), ACM
where he developed OMT,
Fellow 1995, and
joined (IBM) Rational in
IBM Fellow 2003
1994, CASE tool OMTool
http://www.booch.
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
3
com/
At Ericsson until 1994,
developed use cases and the
CASE tool Objectory, at IBM
Rational since 1995,
http://www.ivarjacobson.com
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-1923
Introduced 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
4
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
5
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
6
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
7
Activity Graph Elements
initial node
Do Laundry
Sort
Clothes
Wash
Whites
action node
Wash
Darks
activity
symbol
Dry
Clothes
activity edge
Fold
Clothes
activity final
node
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
8
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
9
Branching Nodes
Dry Clothes
merge
node
Run Drier
[still wet]
decision
node
Bernd Bruegge & Allen H. Dutoit
[else]
guards
Fold
Clothes
Object-Oriented Software Engineering: Using UML, Patterns, and Java
10
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
11
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
12
Deadlock
Try to Dry
Clothes
Run Drier
[still wet]
[else]
Fold
Clothes
Bernd Bruegge & Allen H. Dutoit
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.
Object-Oriented Software Engineering: Using UML, Patterns, and Java
13
Forking and Joining Nodes
Do Laundry
fork
node
Sort
Clothes
Wash
Darks
Wash
Whites
Dry
Clothes
join
node
Fold
Clothes
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
14
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
15
Concurrent Problem Solution (An example)
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
16
Object Nodes
Data and objects are shown as object nodes.
Cruiser
Battleship
[damaged]
Battlegroup
Destroyer
[captured]
object
node
state
object
node
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
17
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
18
Control and Data Flow Example
Wash and Dry
Clothes
Wash
Clothes
control
flow
Clothes
[wet]
data flows
Run Drier
Clothes
[still wet]
[else]
Fold
Clothes
Bernd Bruegge & Allen H. Dutoit
control
flow
Object-Oriented Software Engineering: Using UML, Patterns, and Java
19
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
20
Activity Parameter Example:
Maximum Finding Algorithm
activity
parameter
types
input
activity
parameter
FindMax
a : int[1..*]
max : int
a
max = a[0]
i=1
[else]
[i < a.length]
[else]
[max < a.[i]]
max = a[i]
max
i++
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
output
activity
parameter
21
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
22
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
23
Activity Diagrams allow to model Decisions
Decision
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
24
Activity Diagrams can model Concurrency
• Synchronization of multiple activities
• Splitting the flow of control into multiple threads
Splitting
Bernd Bruegge & Allen H. Dutoit
Synchronization
Object-Oriented Software Engineering: Using UML, Patterns, and Java
25
Activity Diagrams: Grouping of Activities
• Activities may be grouped into swimlanes to denote the
object or subsystem that implements the activities.
Allocate
Resources
Open
Incident
Coordinate
Resources
Dispatcher
Archive
Incident
FieldOfficer
Document
Incident
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
26
Activity Diagram vs. Statechart Diagram
Statechart Diagram for Incident
Focus on the set of attributes of a single abstraction (object, system)
Event causes
state transition
Active
Inactive
IncidentHandled
Closed
IncidentDocumented
Archived
IncidentArchived
Activity Diagram for Incident
(Focus on dataflow in a system)
Handle
Incident
Document
Incident
Completion of activity
causes state transition
Bernd Bruegge & Allen H. Dutoit
Archive
Incident
Triggerless
transition
Object-Oriented Software Engineering: Using UML, Patterns, and Java
27
Example of an Activity Diagram with a Frame
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
28
The Activity Diagram without Frame
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
29
Activity Diagram Example
Object
node
Bernd Bruegge & Allen H. Dutoit
Action
Object-Oriented Software Engineering: Using UML, Patterns, and Java
30
Activity Diagram: Activity Nodes & Edges
• An activity diagram consists of nodes and edges
• There are three types of activity nodes
Control nodes
Executable nodes
• Most prominent: Action
Object 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
31
Activity Diagram Example
Control
flow
Object
flow
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
32
Summary: Activity Diagram Example
Fork
node
Join
node
Initial
node
Control
flow
Merge
node
Final
node
Object
node
Bernd Bruegge & Allen H. Dutoit
Action
Object
flow
Object-Oriented Software Engineering: Using UML, Patterns, and Java
33
Example 1: What the diagram represents?
a. A document
b. A printer
c. A wordprocessor
d. 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
34
Example 2: What is the max number of
concurrent threads that is possible?
a.
b.
c.
d.
e.
1
2
3
4
5
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
35
Example 3:
In this diagram...
a.
b.
c.
d.
e.
f.
Fill Order is executed
before Receive Payment
Overnight Delivery is
executed in parallel with
Regulary Delivery
Close Order is executed
after Receive Payment
Fill Order is executed in
parallel with Send
Invoice
Send Invoice is possibly
executed
Regular Delivery is
always executed
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
36
36
Example 4:
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
37
Example 5: Cash Withdrawal Process from a Bank
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
38
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
39
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
40
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
41
Another view on UML Diagrams
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
42
Download