Professional Documents
Culture Documents
Chapter 2, Modeling With UML
Chapter 2, Modeling With UML
What is modeling?
What is UML?
Use case diagrams
Class diagrams
Next lecture
Sequence diagrams
Activity diagrams
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
What is modeling?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
Example: street map
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Why model software?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Systems, Models and Views
Examples:
System: Aircraft
Models: Flight simulator, scale model
Views: All blueprints, electrical wiring, fuel system
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Systems, Models and Views
Flightsimulator
Blueprints
Aircraft
Model 2
View 2
View 1
System
View 3
Model 1
Electrical
Wiring
Scale Model
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Models, Views and Systems (UML)
* *
System Model View
Described by Depicted by
Airplane: System
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Concepts and Phenomena
Phenomenon
An object in the world of a domain as you perceive it
Example: The lecture you are attending
Example: My black watch
Concept
Describes the properties of phenomena that are common.
Example: Lectures on software engineering
Example: Black watches
Concept is a 3-tuple:
Name (To distinguish it from other concepts)
Purpose (Properties that determine if a phenomenon is a member
of a concept)
Members (The set of phenomena which are part of the concept)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Concepts and phenomena
Abstraction
Classification of phenomena into concepts
Modeling
Development of abstractions to answer specific questions about a set of
phenomena while ignoring irrelevant details.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
Concepts in software: Type and Instance
Type:
An abstraction in the context of programming languages
Name: int, Purpose: integral number, Members: 0, -1, 1, 2, -2, . . .
Instance:
Member of a specific type
The type of a variable represents all possible instances the
variable can take
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Abstract Data Types & Classes
Abstract data type
Special type whose implementation is hidden Watch
from the rest of the system.
time
Class: date
An abstraction in the context of object-
SetDate(d)
oriented languages
Like an abstract data type, a class
encapsulates both state (variables) and
behavior (methods)
Class Vector CalculatorWatch
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Application and Solution Domain
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Object-oriented modeling
TrafficController FlightPlanDatabase
Aircraft
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
What is UML?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
UML: First Pass
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
UML First Pass
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
UML first pass: Use case diagrams
Actor
ReadTime
SetTime
WatchUser WatchRepairPerson
ChangeBattery
Association
Class
Multiplicity Watch
1 1 1 1
2 1 2 1
PushButton LCDDisplay Battery Time
state blinkIdx load now
push() blinkSeconds()
release() blinkMinutes()
blinkHours()
stopBlinking()
referesh()
Attribute
Operations
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
UML first pass: Sequence diagram
Actor Object
pressButton1() blinkHours()
pressButton1() blinkMinutes()
Activation Lifeline
[button1Pressed]
Transition
[button1&2Pressed] [button2Pressed]
BlinkMinutes IncrementMin.
[button1Pressed]
[button1&2Pressed] [button2Pressed]
BlinkSeconds IncrementSec.
Implementation diagrams
Component diagrams
Deployment diagrams
Introduced in lecture on System Design
Object constraint language
Introduced in lecture on Object Design
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
UML Core Conventions
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
Use Case Diagrams
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Actors
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Use Case
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
Use Case Diagram: Example
Exit condition:
Passenger has ticket.
Anything missing?
Exceptional cases!
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
The <<extends>> Relationship
<<extends>> relationships
represent exceptional or seldom
invoked cases.
The exceptional event flows are
Passenger factored out of the main event
flow for clarity.
Use cases representing exceptional
flows can extend more than one
PurchaseTicket use case.
The direction of a <<extends>>
<<extends>> relationship is to the extended use
case
<<extends>>
<<extends>>
Cancel NoChange
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
The <<includes>> Relationship
<<includes>> relationship
represents behavior that is factored
Passenger
out of the use case.
<<includes>> behavior is factored
out for reuse, not because it is an
PurchaseMultiCard exception.
PurchaseSingleTicket The direction of a <<includes>>
<<includes>>
relationship is to the using use
case (unlike <<extends>>
<<includes>> relationships).
CollectMoney
<<extends>> <<extends>>
NoChange Cancel
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
Use Case Diagrams: Summary
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
Class Diagrams
TarifSchedule
Trip
Enumeration getZones() zone:Zone
* * Price: Price
Price getPrice(Zone)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
Classes
TarifSchedule
Table zone2price
Enumeration getZones()
Name Price getPrice(Zone)
TarifSchedule
zone2price Attributes Signature
getZones()
getPrice()
Operations TarifSchedule
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
Instances
tarif_1974:TarifSchedule
zone2price = {
{‘1’, .20},
{‘2’, .40},
{‘3’, .60}}
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
Actor vs Instances
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34
Associations
TarifSchedule TripLeg
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35
1-to-1 and 1-to-many Associations
One-to-one association
Point
Polygon
* x: Integer
y: Integer
draw()
One-to-many association
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36
Many-to-Many Associations
Lists
StockExchange * * Company
tickerSymbol
StockExchange *
tickerSymbol
Lists
SX_ID
1 Company
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37
From Problem Statement To Object Model
Class Diagram:
StockExchange * * Company
Lists
tickerSymbol
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38
From Problem Statement to Code
Class Diagram:
StockExchange * * Company
Lists tickerSymbol
Java Code
public class StockExchange
{
private Vector m_Company = new Vector();
};
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 39
Aggregation
An aggregation is a special case of association denoting a “consists of”
hierarchy.
The aggregate is the parent class, the components are the children class.
Exhaust system Exhaust system
1 0..2 1 0..2
Muffler Tailpipe Muffler Tailpipe
3
ZoneButton
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40
Qualifiers
Without qualification
1 * File
Directory
filename
With qualification
1 0…1
Directory filename File
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41
Inheritance
Button
CancelButton ZoneButton
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42
Object Modeling in Practice: Class Identification
Foo
Betrag
CustomerId
Deposit()
Withdraw()
GetBalance()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43
Object Modeling in Practice:
Encourage Brainstorming
“Dada” Foo
Betrag Betrag
CustomerId CustomerId
Deposit() Deposit()
Withdraw() Withdraw()
GetBalance() GetBalance()
Account
Betrag
CustomerId
Deposit()
Naming is important! Withdraw()
Is Foo the right name? GetBalance()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44
Object Modeling in Practice ctd
Account
Betrag Customer
Bank AccountId
CustomerId
Name
Name Deposit() CustomerId
Withdraw()
GetBalance()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45
Object Modeling in Practice: A Banking System
Account
Betrag Customer
Bank AccountId
CustomerId
AccountId
* Has
Name
Name Deposit() CustomerId
Withdraw()
GetBalance()
Name
* Amount
* Has Name
AccountId
CustomerId
AccountId
Deposit()
Withdraw()
GetBalance() CustomerId()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47
Packages
A package is a UML mechanism for organizing elements into
groups (usually not an application domain concept)
Packages are the basic grouping construct with which you may
organize UML models to increase their readability.
DispatcherInterface
Notification IncidentManagement
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48
UML sequence diagrams
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 49
Nested messages
selectZone()
lookupPrice(selection)
price
displayPrice(price)
Dataflow
…to be continued...
The source of an arrow indicates the activation which sent the message
An activation is as long as all nested activations
Horizontal dashed arrows indicate data flow
Vertical dashed lines indicate lifelines
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 50
Iteration & condition
…continued from previous slide...
* insertChange(coin)
lookupCoin(coin)
price
Iteration displayPrice(owedAmount)
[owedAmount<0] returnChange(-owedAmount)
Condition
…to be continued...
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 51
Creation and destruction
…continued from previous slide...
ChangeProcessor
Passenger
Creation
createTicket(selection)
Ticket
print()
free()
Destruction
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 52
Sequence Diagram Summary
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 53
State Chart Diagrams
Event Initial state State
[button2Pressed]
[button1&2Pressed]
BlinkHours IncrementHrs
Transition
[button1Pressed]
[button1&2Pressed] [button2Pressed]
BlinkMinutes IncrementMin.
[button1Pressed]
[button1&2Pressed] [button2Pressed]
BlinkSeconds IncrementSec.
StopBlinking
Final state
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 55
Statechart Diagram vs. Activity Diagram
Statechart Diagram for Incident (similar to Mealy Automaton)
(State: Attribute or Collection of Attributes of object of type Incident)
Event causes
State transition
Triggerless
Completion of activity Transition
causes state transition
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 56
Activity Diagram: Modeling Decisions
[lowPriority]
Open Allocate
Incident Resources
Notify
Police Chief
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 57
Activity Diagrams: Modeling Concurrency
Allocate
Splitting Resources Synchronization
Document
Incident
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 58
Activity Diagrams: Swimlanes
Allocate Dispatcher
Resources
FieldOfficer
Document
Incident
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 59
What should be done first? Coding or Modeling?
It all depends….
Forward Engineering:
Creation of code from a model
Greenfield projects
Reverse Engineering:
Creation of a model from code
Interface or reengineering projects
Roundtrip Engineering:
Move constantly between forward and reverse engineering
Useful when requirements, technology and schedule are changing
frequently
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 60
UML Summary
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 61
Additional Slides
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 62
Models for Plato’s and Aristotle’s Views of Reality
Plato Aristotle
Material reality is a second-class Aristotle accepted the reality of Forms as
subordinate type of reality. nonmaterial entities.
The first-class type is a “form” However, he could not accept Plato’s idea, that
Forms lie behind every thing or in these Forms were not real.
the world. Forms can be abstract Instead of two separate worlds, one for Forms
nouns like “beauty” or “mammal” and one for Particulars, Aristotle had only one
or concrete nouns like “tree” or world, a world of particular things.
“horse”. Particular things according to Aristotle have a
There is an important difference certain permance about them, even while they
between the world of forms and are subject to change: A tree changes colors
without ceasing to be a tree. A horse grows in
particulars. Forms are nonmaterial,
size without ceasing to be a horse.
particulars are material. Forms are
permanent and changeless. What is the root of this permancence? It is the
thing’s internal form, which minds detect, when
Particulars are changing. they penetrate beyond the thing’s changing
Forms can be acquired attributes. So for Aristotle, reality is thus made
intellectually through a “dialectic” up of particular things that are each composed
process that moves toward the of form antdn matter..
highest understanding of reality
through the interaction of questions
and answers.
Using UML, we can illustrate Platon’s and Aristotle’s viewpoints very easily
and see their differences as well
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 63
Model for Plato’s View of Reality
Plato
Material reality is a second-class
subordinate type of reality.
The first-class type is a “form”
Forms lie behind every thing or in Reality
the world. Forms can be abstract
nouns like “beauty” or “mammal”
or concrete nouns like “tree” or
“horse”.
There is an important difference
between the world of forms and *
particulars. Forms are nonmaterial, Thing
particulars are material. Forms are
permanent and changeless.
Particulars are changing.
Forms can be acquired
intellectually through a “dialectic”
process that moves toward the
highest understanding of reality
through the interaction of Particular Form
questions and answers.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 64
Model Aristotle’s Views of Reality
Aristotle
Aristotle accepted the reality of Forms
as nonmaterial entities.
However, he could not accept Plato’s
idea, that these Forms were not real.
Instead of two separate worlds, one for
Reality
Forms and one for Particulars,
Aristotle had only one world, a world
of particular things.
Particular things according to Aristotle
have a certain permance about them, *
even while they are subject to change:
A tree changes colors without ceasing Substance
to be a tree. A horse grows in size
without ceasing to be a horse.
What is the root of this permancence?
It is the thing’s internal form, which
minds detect, when they penetrate
beyond the thing’s changing attributes.
So for Aristotle, reality is thus made up Form Matter
of particular things that are each
composed of form antdn matter..
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 65
Comparison of Plato’s and Aristotle’s Views
Plato Aristotle
Reality Reality
* *
Thing Substance
Form Matter
Particular Form
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 66