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