Transcript slides
Using UML, Patterns, and Java
Object-Oriented Software Engineering
Chapter 2,
Modeling with UML
Use Case Diagrams: Summary
Use case diagrams represent external behavior
Use case diagrams are useful as an index into the use cases
Use case descriptions provide meat of model, not the use case
diagrams.
All use cases need to be described for the model to be useful.
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
2
Class Diagrams
Class diagrams represent the structure of the system
Used
during requirements analysis to model application domain
concepts
during system design to model subsystems
during object design to specify the detailed behavior and
attributes of classes.
TarifSchedule
Table zone2price
Enumeration getZones()
Price getPrice(Zone)
Bernd Bruegge & Allen H. Dutoit
*
*
Trip
zone:Zone
Price: Price
Object-Oriented Software Engineering: Using UML, Patterns, and Java
3
Classes
Type
Name
TarifSchedule
zone2price
getZones()
getPrice()
TarifSchedule
Table zone2price
Enumeration getZones()
Price getPrice(Zone)
Attributes
Signature
Operations
TarifSchedule
A class represents a concept
A class encapsulates state (attributes) and behavior (operations)
Each attribute has a type
Each operation has a signature
The class name is the only mandatory information
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
4
Instances
tarif2006:TarifSchedule
zone2price = {
{‘1’, 0.20},
{‘2’, 0.40},
{‘3’, 0.60}}
:TarifSchedule
zone2price = {
{‘1’, 0.20},
{‘2’, 0.40},
{‘3’, 0.60}}
An instance represents a phenomenon
The attributes are represented with their values
The name of an instance is underlined
The name can contain only the class name of the instance (anonymous
instance)
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
5
Actor vs Class vs Object
Actor
An entity outside the system to be modeled, interacting with the
system (“Passenger”)
Class
An abstraction modeling an entity in the application or solution
domain
The class is part of the system model (“User”, “Ticket distributor”,
“Server”)
Object
A specific instance of a class (“Joe, the passenger who is purchasing
a ticket from the ticket distributor”).
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
6
Associations
TarifSchedule
TripLeg
Enumeration getZones()
Price getPrice(Zone)
Price
Zone
*
*
Associations denote relationships between classes
The multiplicity of an association end denotes how many
objects the instance of a class can legitimately reference.
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
7
1-to-1 and 1-to-many Associations
Country
1
name:String
1
City
name:String
1-to-1 association
Point
Polygon
*
x: Integer
y: Integer
draw()
1-to-many association
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
8
Many-to-Many Associations
Company
StockExchange
Bernd Bruegge & Allen H. Dutoit
*
*
tickerSymbol
Object-Oriented Software Engineering: Using UML, Patterns, and Java
9
From Problem Statement To Object Model
Problem Statement: A stock exchange lists many companies.
Each company is uniquely identified by a ticker symbol
Class Diagram:
StockExchange *
Bernd Bruegge & Allen H. Dutoit
*
Lists
Company
tickerSymbol
Object-Oriented Software Engineering: Using UML, Patterns, and Java
10
From Problem Statement to Code
Problem Statement : A stock exchange lists many companies.
Each company is identified by a ticker symbol
Class Diagram:
StockExchange
*
Lists
*
Company
tickerSymbol
Java Code
public class StockExchange
{
private Vector m_Company = new Vector();
};
Associations
are mapped to
Attributes!
public class Company
{
public int m_tickerSymbol;
private Vector m_StockExchange = new Vector();
};
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
11
Aggregation
An aggregation is a special case of association denoting a “part-of”
hierarchy
Exhaust system
The aggregate is the parent class,
the components are the children classes
1
0..2
Muffler
Tailpipe
diameter
diameter
A solid diamond denotes composition: A strong form of
aggregation where the life time of the component instances
is controlled by the aggregate. That is, the parts don’t exist
on their own (“the whole controls/destroys the parts”)
TicketMachine
3
ZoneButton
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
12
Qualifiers
Without qualification
Directory
1
*
File
filename
With qualification
Directory
filename
1
1
File
Qualifiers identify subsets of related instances in association
navigations; they provide a model of indices or keys for
association ends.
Qualifiers can be used to reduce the multiplicity of an
association
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
13
Qualification: Another Example
Person
Bank
Bank
Bernd Bruegge & Allen H. Dutoit
*
*
Lists
Lists
accountNumber
*
accountNumber
0..1
*
Object-Oriented Software Engineering: Using UML, Patterns, and Java
Person
14
Inheritance
Button
CancelButton
ZoneButton
Inheritance is another special case of an association denoting
a “kind-of” hierarchy
Inheritance simplifies the analysis model by introducing a
taxonomy
The children classes inherit the attributes and operations of
the parent class.
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
15
Packages
Packages help you to organize UML models to increase their
readability
We can use the UML package mechanism to organize classes
into subsystems
Account
Bank
Customer
Any complex system can be decomposed into subsystems,
where each subsystem is modeled as a package.
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
16
Object Modeling in Practice
Foo
Amount
CustomerId
Deposit()
Withdraw()
GetBalance()
Class Identification: Name of Class, Attributes and Methods
Is Foo the right name?
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
17
Object Modeling in Practice: Brainstorming
“Dada”
Foo
Amount
Amount
CustomerId
CustomerId
Deposit()
Withdraw()
GetBalance()
Deposit()
Withdraw()
GetBalance()
Account
Amount
CustomerId
Is Foo the right name?
Bernd Bruegge & Allen H. Dutoit
Deposit()
Withdraw()
GetBalance()
Object-Oriented Software Engineering: Using UML, Patterns, and Java
18
Object Modeling in Practice: More classes
Account
Amount
AccountId
CustomerId
Bank
Deposit()
Withdraw()
GetBalance()
Name
Customer
Name
CustomerId
1) Find New Classes
2) Review Names, Attributes and Methods
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
19
Object Modeling in Practice: Associations
Account
*
Bank
has
Name
Amount
AccountId
CustomerId
AccountI
d
Deposit()
Withdraw()
GetBalance()
*
Customer
owns
2
Name
CustomerId
1) Find New Classes
2) Review Names, Attributes and Methods
3) Find Associations between Classes
4) Label the generic assocations
5) Determine the multiplicity of the assocations
6) Review associations
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
20
Practice Object Modeling: Find Taxonomies
Account
Bank
*
Name
Savings
Account
Withdraw()
Bernd Bruegge & Allen H. Dutoit
Customer
Amount
AccountId
CustomerId
AccountI
d
Deposit()
Withdraw()
GetBalance()
Checking
Account
Withdraw()
*
Has
Name
CustomerId()
Mortgage
Account
Withdraw()
Object-Oriented Software Engineering: Using UML, Patterns, and Java
21
Practice Object Modeling: Simplify, Organize
Account
Amount
AccountId
CustomerId
AccountI
d
Deposit()
Withdraw()
GetBalance()
Savings
Account
Withdraw()
Bernd Bruegge & Allen H. Dutoit
Checking
Account
Withdraw()
Show Taxonomies
separately
Mortgage
Account
Withdraw()
Object-Oriented Software Engineering: Using UML, Patterns, and Java
22
Practice Object Modeling: Simplify, Organize
Account
Bank
Name
Bernd Bruegge & Allen H. Dutoit
*
Customer
Amount
AccountId
CustomerId
AccountI
d
Deposit()
Withdraw()
GetBalance()
*
Has
Object-Oriented Software Engineering: Using UML, Patterns, and Java
Name
CustomerId()
23
Sequence Diagrams
Focus on
control flow
Passenger
TicketMachine
To refine use case descriptions
to find additional objects
(“participating objects”)
selectZone()
insertCoins()
pickupChange()
Bernd Bruegge & Allen H. Dutoit
Used during system design
TicketMachine
to refine subsystem interfaces
zone2price
Messages
->
Instances are represented
by
selectZone()
Operations
rectangles. Actors by sticky
figureson
insertCoins()
participating Object
Lifelines are represented by dashed
pickupChange()
lines
pickUpTicket()
pickUpTicket()
Used during analysis
Messages are represented by arrows
Activations are represented by narrow
rectangles.
Object-Oriented Software Engineering: Using UML, Patterns, and Java
24
Sequence Diagrams can also model the Flow of Data
Passenger
ZoneButton
selectZone()
TarifSchedule
Display
lookupPrice(selection)
price
Dataflow
displayPrice(price)
…continued on next slide...
The source of an arrow indicates the activation which sent the message
Horizontal dashed arrows indicate data flow, for example return results
from a message
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
25
Sequence Diagrams: Iteration & Condition
…continued from previous slide...
Passenger
ChangeProcessor
*insertChange(coin)
Iteration
CoinIdentifier
Display
CoinDrop
lookupCoin(coin)
value
displayPrice(owedAmount)
[owedAmount<0] returnChange(-owedAmount)
Condition
…continued on next slide...
Iteration is denoted by a * preceding the message name
Condition is denoted by boolean expression in [ ] before the message
name
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
26
Creation and destruction
…continued from previous slide...
Passenger
ChangeProcessor
Creation of Ticket
createTicket(selection)
Ticket
print()
free()
Destruction of Ticket
Creation is denoted by a message arrow pointing to the object
Destruction is denoted by an X mark at the end of the destruction activation
In garbage collection environments, destruction can be used to denote the end
of the useful life of an object.
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
27
Sequence Diagram Properties
UML sequence diagram represent behavior in terms of
interactions
Useful to identify or find missing objects
Time consuming to build, but worth the investment
Complement the class diagrams (which represent structure).
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
28
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
Handle
Incident
Bernd Bruegge & Allen H. Dutoit
Document
Incident
Object-Oriented Software Engineering: Using UML, Patterns, and Java
Archive
Incident
29
Activity Diagrams allow to model Decisions
Decision
Open
Incident
[lowPriority]
Allocate
Resources
[fire & highPriority]
[not fire & highPriority]
Notify
Fire Chief
Notify
Police Chief
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
30
Activity Diagrams can model Concurrency
Synchronization of multiple activities
Splitting the flow of control into multiple threads
Splitting
Open
Incident
Allocate
Resources
Coordinate
Resources
Synchronization
Archive
Incident
Document
Incident
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
31
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
32
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
33
UML Summary
UML provides a wide variety of notations for representing
many aspects of software development
Powerful, but complex
UML is a programming language
Can be misused to generate unreadable models
Can be misunderstood when using too many exotic features
We concentrated on a few notations:
Functional model: Use case diagram
Object model: class diagram
Dynamic model: sequence diagrams, statechart and activity
diagrams
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
34
Additional References
Martin Fowler
UML Distilled: A Brief Guide to the Standard Object Modeling
Language, 3rd ed., Addison-Wesley, 2003
Grady Booch,James Rumbaugh,Ivar Jacobson
The Unified Modeling Language User Guide, Addison Wesley, 2nd
edition, 2005
Commercial UML tools
Rational Rose XDE for Java
http://www-306.ibm.com/software/awdtools/developer/java/
Together (Eclipse, MS Visual Studio, JBuilder)
http://www.borland.com/us/products/together/index.html
Open Source UML tools
http://java-source.net/open-source/uml-modeling
ArgoUML,UMLet,Violet, …
Bernd Bruegge & Allen H. Dutoit
Object-Oriented Software Engineering: Using UML, Patterns, and Java
35