Introduction to UML and Design Patterns A Software Life-cycle Model…

advertisement
A Software Life-cycle Model…
Which part will we talk about today?
2
Maintenance
Validate Requirements, Verify Specification
Introduction to UML
and Design Patterns
Acceptance Test
Requirements
(Release testing)
Verify System Design
System Design
System Testing
(Architecture,
High-level Design)
(Integration testing of modules)
Module Design
DF14900 Software Engineering
CUGS
(Program Design,
Detailed Design)
2011
Verify Module Design
Module Testing
(Integration testing of units)
Verify Implementation
Implementation
Unit testing
of Units (classes, procedures,
functions)
Christoph Kessler and Kristian Sandahl
Department of Computer and Information Science
Linköping University, Sweden
Project Management, Software Quality Assurance (SQA), Supporting Tools, Education
Part I
Modeling Structure:
Classes and Objects
The goals of module design
3
Part II:
Short Introduction to Design Patterns
§ Contribute to quality, eg:
Performance
Usability
Reliability
...
Part III:
Behavioral Modeling with UML
State Machines, Sequence Diagrams,
Use case diagrams, Activity Diagrams
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
5
Part I
Modeling Structure with UML
Classes and Objects
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
4
Agenda
Esp., Classes and Objects
Separation of concern
Testability
Understandability
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part I:
Structural Modeling with UML
§ Provide the expected function
§ Prepare for change:
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Modeling as a Design Technique
§
§
§
§
Testing a physical entity before building it
Communication with customers
Visualization
Reduction of complexity
§ Models supplement natural language
§ Models support understanding, design, documentation
§ Creating a model forces you to take necessary design
decisions
§ UML is now the standard notation for modeling software.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
1
UML: Different diagram types
for different views of software
Literature on UML
§ Official standard documents by OMG:
www.omg.org, www.uml.org
§ Current version is UML 2.0 (2004/2005)
§ OMG documents:
UML Infrastructure, UML Superstructure
§ Books:
Modeling (logical) structure of software:
§ Static view: Class diagram
§ Design view: Structure diagr., collaboration d., component d.
§ Use case view: Use case diagram
Modeling behavior of software:
§ Activity view: Activity diagram
§ State machine view: State machine diagram
§ Interaction view: Sequence diagram, communication diagram
Pfleeger: Software Engineering 3rd ed., 2005
(mostly Chapter 6)
Rumbaugh, Jacobson, Booch:
The Unified Modeling Language Reference Manual, Second Edition,
Addison-Wesley 2005
Blaha, Rumbaugh: Object-Oriented Modeling and Design with UML,
Second Edition, Prentice-Hall, 2005.
Stevens, Pooley: Using UML: Software Engineering with Objects and
Components, 2nd edition. Addison-Wesley, 2006
And many others…
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Modeling physical structure of software
§ Deployment view: Deployment diagram
Modeling the model, and extending UML itself
§ Model management view: Package Diagram
§ Profiles
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
9
A Single Class
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Relationships (1/6) - overview and intuition
- Association
10
Association
Class name
(with navigability)
attributes
Multiplicity
1 exactly one
0..1 Zero or one
* Zero or more
(same as 0..*)
2..8 Between 2 and 8
operations
visibility
+ public
- private
# protected
~ package
Part I
Modeling Structure:
Classes and Objects
Parameter
Part II
Short Introduction
to Design Patterns
Return type
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Relationships (1/6) - overview and intuition
- Association
11
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Relationships (1/6) - overview and intuition
- Association
class
4
Both representations are
almost equivalent
attributes
12
Explicitly show that navigation
is not allowed
Navigation - mycar can reach the
wheels, but not the opposite
role name
objects
wheel1
directed association
mycar
{ordered} {unordered}
{unique}{nonunique}
Default is unordered,
unique
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
wheel2
mycar has links to 4
wheels
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
wheel4
wheel3
Part III
Modeling Behavior:
State Machines etc.
2
Relationships (1/6) - overview and intuition
- Association
13
Relationships (1/6) - overview and intuition
- Association
4
What does it mean to have a * here?
14
4
What if we have multiplicity 1 instead?
"*"
Associations are the "glue" that ties a system
together
"1"
association instance = link
mycar1
mycar1
mycar3
mycar2
A wheel can only be liked
to one car instance
wheel1 wheel2 wheel3 wheel4
Part I
Modeling Structure:
Classes and Objects
A wheel can be linked to more
than one car instance
Part II
Short Introduction
to Design Patterns
mycar1
mycar2
An association describes a relation between
objects at run-time.
wheel1 wheel2 wheel3 wheel4
wheel1 wheel2 wheel3 wheel4
Part III
Modeling Behavior:
State Machines etc.
Relationships (2/6) - overview and intuition
- Aggregation
Association
(with navigability)
{(mycar1,wheel1),
(mycar1,wheel2),
(mycar1,wheel3),
(mycar1,wheel4)}
Part I
Modeling Structure:
Classes and Objects
15
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
Relationships (2/6) - overview and intuition
- Aggregation
16
A major source of confusion
Common vague interpretations: "owns a" or "part of"
"A" has a reference(s) to
instance(s) of "B". Alternative: attributes
4
Aggregation
What does this mean? What is the
difference to association?
Inconsistency and misunderstandings
Vague definitions
Aggregation was added to UML with
little semantics. Why?
Jim Rumbaugh
"Think of it as a modeling placebo"
Recommendation: - Do not use it in your models.
- If you see it in other's models, ask them what they actually mean.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Relationships (3/6) - overview and intuition
- Composition
Association
(with navigability)
Aggregation
17
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
Part I
Modeling Structure:
Classes and Objects
Relationships (3/6) - overview and intuition
- Composition
18
Any difference to association?
"A" has a reference(s) to
instance(s) of "B". Alternative: attributes
1
4
Avoid it to avoid misunderstandings
Yes! First, multiplicity must be 1 or 0..1. An instance can only have one owner.
Composition
But, isn't this equivalent to what we
showed with associations?
1
mycar1
4
mycar2
Well, in this case...
wheel1 wheel2 wheel3 wheel4
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
3
Relationships (3/6) - overview and intuition
- Composition
19
Using composition...
1
Relationships (3/6) - overview and intuition
- Composition
20
Using composition...
4
1
2
1
4
2
1
Can mycar1 and mybike1
share the same wheels?
Ok for wheels to be part of
mycar1 or mybike1
mycar1
wheel1 wheel2 wheel3 wheel4
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
wheel1 wheel2 wheel3 wheel4
wheel5 wheel6
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Relationships (3/6) - overview and intuition
- Composition
Using associations...
NO!
Not with composition!
mycar1
mybike1
21
Part II
Short Introduction
to Design Patterns
Relationships (4/6) - overview and intuition
- Generalization
(Note the difference. The diamond is removed.)
4
Association
22
"A" has a reference(s) to
instance(s) of "B". Alternative: attributes
1
2
Can mycar1 and mybike1 share
the same wheels this time?
Yes! Associations do not
have a "no sharing"
rule.
mycar1
Key concepts
• "No sharing" rule
• The owner is responsible for managing
its parts,
e.g.
allocation and deallocation.
wheel5
wheel6
Part III
Modeling Behavior:
State Machines etc.
(with navigability)
1
mybike1
Aggregation
Avoid it to avoid misunderstandings
Composition
An instance of "B" is part of an instance of "A",
where the former is not allowed to be shared.
Generalization
mybike1
However, in this case it is a
strange model...
wheel1 wheel2 wheel3 wheel4
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
wheel5 wheel6
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Relationships - (4/6) overview and intuition
- Generalization
Class with code for
the drive()
1. Inheritance
operation
~ relation implementation
23
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Relationships - (5/6) overview and intuition
- Realization
Visible Type: Vehicle.
Instance of: MotorCycle.
Can we drive()? Can we reverse()?
Association
Visible Type: Car.
Instance of: Car
Can we drive()? Can we reverse()?
Aggregation
Avoid it to avoid misunderstandings
Visible Type: Vehicle.
Instance of: Car
Can we drive()? Can we reverse()?
Composition
An instance of "B" is part of an instance of "A",
where the former is not allowed to be shared.
Generalization
1) "A" inherits all properties and operations of "B".
2) An instance of "A" can be used where a
instance of "B" is expected.
(with navigability)
reverse() is not visible!
Overrides drive()
An instance of a class can have many types
= (subtyping) polymorphism
Inherits the code for
drive(). New
operation reverse()
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
24
"A" has a reference(s) to
instance(s) of "B". Alternative: attributes
Realization
2. Subtyping
~ relation on interfaces
static typing: safe substitution
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
4
Relationships - (5/6) overview and intuition
- Realization
25
Relationships - (5/6) overview and intuition
- Realization
Realization
~ provides a specified interface
What is the difference between an interface
and an abstract class?
Can we create an instance of
Vehicle? Yes! It is concrete.
AnotherVehicle
Realization
+ drive()
+ open()
Specifier
Interface
Interface
Can we create an instance of
AnotherVehicle? No!
Implementation
(no implementation)
Correct?
Must implement
the interface
Provides the Door
interface
Part I
Modeling Structure:
Classes and Objects
Abstract class
Non of them can be instantiated
Cannot contain implementation
Can (but need not to) contain
implementation
Abstract class
(Italic)
An abstract class with only abstract operations is conceptually the same as an interface
Abstract operation
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
Part I
Modeling Structure:
Classes and Objects
Relationships - (6/6) overview and intuition
- Realization
27
(with navigability)
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
Relationships - (6/6) overview and intuition
- Dependency
"A" has a reference(s) to
instance(s) of "B". Alternative: attributes
Association
26
28
Dependency
Aggregation
Avoid it to avoid misunderstandings
Composition
An instance of "B" is part of an instance of "A",
where the former is not allowed to be shared.
Generalization
1) "A" inherits all properties and operations of "B".
2) An instance of "A" can be used where a
instance of "B" is expected.
Realization
"A" provides an implementation of the interface
specified by "B".
client
supplier
Dependency
Part I
Modeling Structure:
Classes and Objects
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
Part I
Modeling Structure:
Classes and Objects
Relationships - (6/6) overview and intuition
- Dependency
29
Part III
Modeling Behavior:
State Machines etc.
Relationships - overview and intuition
Association
UML as sketch
§
§
§
Part II
Short Introduction
to Design Patterns
(with navigability)
Help to communicate some important aspect of system
Common media: whiteboard
Reverse engineering can be very
In documents: focus on communication compared to
useful to see dependencies
completeness
30
"A" has a reference(s) to
instance(s) of "B". Alternative: attributes
Aggregation
Avoid it to avoid misunderstandings
Composition
An instance of "B" is part of an instance of "A",
where the former is not allowed to be shared.
Generalization
1) "A" inherits all properties and operations of "B".
2) An instance of "A" can be used where a
instance of "B" is expected.
Realization
"A" provides an implementation of the interface
specified by "B".
Dependency
"A" is dependent on "B" if changes in the
definition of "B" causes changes of "A".
between classes and modules!
UML as blueprint
Forward engineering
UML
model
Round-trip engineering
Programming
Code
Reverse engineering
UML as programming language
UML
model
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Compile
Executable
Code
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
5
Class model with inheritance
and abstract classes
Classes and objects
Classes:
Abstract class
(cannot be instantiated,
only extended/specialized)
CoffeeCustomer
buys
CoffeeCustomer
0..*
0..*
CupOfCoffee
pay( c: coin )
Objects:
c1: CupOfCoffee
IndividualCustomer
getCup()
Part I
Modeling Structure:
Classes and Objects
Kristian:
CoffeeCustomer
Porter
pay() method is
inherited from
CoffeeCustomer
getCan()
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
c2: CupOfCoffee
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
34
Reasoning about an arbitrary object
Like this:
aCoffeeCustomer:
CoffeeCustomer
buys
theCupOfCoffee:
CupOfCoffee
buys
: CupOfCoffee
Part II
Short Introduction to Design Patterns
...or simply like this:
: CoffeeCustomer
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
TAPESTRY OF LIGHT AND DARK
Christopher Alexander
Create alternating areas of light and dark
throughout the building, in such a way that
people naturally walk toward the light,
whenever they are going to important places:
seats, entrances, stairs, passages, places of
special beauty, and make other areas darker, to
increase the contrast.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
6
Software Design Patterns
A Design Pattern is a standard solution for a standard
design problem in a certain context.
Goal: reuse design information
“A pattern involves a general description of a recurring solution to a recurring
problem with various goals and constraints. It identifies more than a
solution, it also explains why the solution is needed.“ (James Coplien)
“... describes a problem which occurs over and over again in our environment,
and then describes the core of the solution to that problem, in such a way
that you can use this solution a million times over, without ever doing it
the same way twice” (Christopher Alexander)
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Example: Facade
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Example: Facade
Facade
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
How to describe design patterns?
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Pattern Catalog in Gamma et al. 1996:
The GoF book describes each pattern
using the following attributes:
The name to describes the pattern,
its solutions and consequences
in a word or two
The problem describes when to apply the pattern:
intent, motivation, applicability
The solution describes the elements that make up the design
(structure with participants), their relationships, responsibilities,
and collaborations/interactions
The consequences are the results and trade-offs in applying
the pattern
Also: implementation notes, known uses, related patterns.
All examples in C++ and Smalltalk
Remark: Patterns exist also beyond the OO world…
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
7
Facade
Facade
Intent
Applicability
Provide a unified interface to a set of interfaces in a subsystem.
Facade defines a higher-level interface that makes the subsystem
easier to use.
Use the Facade pattern when:
§ you want to provide a simple interface to a complex subsystem.
This makes subsystems more reusable and easier to customize.
§ there are many dependencies between clients and the
implementation classes of an abstraction.
Introduce a facade to decouple the subsystem from other
subsystems, thereby promoting subsystem independence and
portability.
§ you want to layer your subsystems.
Use a facade to define an entry point to each subsystem level.
Motivation
Structuring a system into subsystems helps reduce complexity.
A common design goal is to minimize the communication and
dependencies between subsystems.
… example …
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Facade
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Observer
50%
Consequences
40%
50%
30%
40%
The Facade pattern offers the following benefits:
1. It shields clients from subsystem components, thereby reducing
the number of objects that clients deal with and making
subsystem easier to use.
2. It promotes weak coupling between subsystem and its clients.
Weak coupling lets you vary the components of the subsystem
without affecting its clients.
3. It doesn't prevent applications from using subsystem classes if
they need to.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Observer
10%
20%
0%
10%
a
b
c
0%
a
b
c
a = 10%
b = 30%
c = 40%
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Observer, structure
Subject
Applicability
§ When an abstraction has two aspects, one dependent on the other.
§ When a change to one object requires changing others.
§ When an object should be able to notify other objects without making
assumptions about who these objects are.
Part I
Modeling Structure:
Classes and Objects
20%
30%
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
attach(Observer)
detach(Observer)
notify()
Observer
*
update()
ConcreteSubject
ConcreteObserver
subjectState
observerState
getState()
setState()
update()
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
8
Observer, collaborations
Observer, consequences
§ Abstract coupling between Subject and Observer
§ Support for broadcast communication
§ Unexpected updates
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
51
Strategy
Name: Strategy
Part III
Modeling Behavior:
State Machines etc.
52
Strategy
Reference to a strategy type
Structure:
Also known as: Policy
Part II
Short Introduction
to Design Patterns
Problem:
§ Need to use different variants of the same algorithm in a class
§ Different algorithms will be appropriate at different time.
§
Abstract
In example:
e.g. class
EncryptAlg
It is hard to add new algorithms and to change existing ones.
Example:
Input
(Plain Text)
Algorithms:
Cryptographic
Module
DES
Output
(cipher text)
Intent (from GoF):
AES
3DES
RC5
"Define a family of algorithms, encapsulate each one and make them interchangeable.
Strategy lets the algorithm vary independently from clients that use it."
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
In example: Part of crypto
module. Holds data,
keys etc.
Part III
Modeling Behavior:
State Machines etc.
In Example: Implements
e.g. algorithm AES
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
E.g. AlgDES
E.g. AlgRC5
Part III
Modeling Behavior:
State Machines etc.
54
Design Pattern Space [Gamma et al.’96]
Creational Patterns
Structural Patterns
Behavioral Patterns
Factory Method
Abstract factory
Builder
Prototype
Singleton
Adapter (class based)
Adapter (object-based)
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Interpreter
Template method
Chain of Responsibility
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor
Part III
Modeling Behavior in UML:
State Machines etc.
Further UML Features
Creational patterns
Deal with initializing and configuring of classes and objects
Structural patterns
Deal with decoupling interface and implementation of classes and objects
Behavioral patterns
Deal with dynamic interactions among societies of classes and objects
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
9
55
State machine diagram
Can formally
describe protocols
For class
CoinHandler:
transition
state machine
course attempt
start state marker
orthogonal state
Studying
this object
Lab 1
falseCoin()/returnCoin(self)
checking
idle
lab1 done
pass
Final exam
trigger event,
causing transition
Part I
Modeling Structure:
Classes and Objects
action, reaction
to the event
fail
Failed
orthogonal region
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
Part I
Modeling Structure:
Classes and Objects
57
Explicit exit points
lab2 done
Lab 2
project done
Project
insertCoin()/checkCoin(self)
state
56
Orthogonal, composite state
Passed
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
Sequence diagram
course attempt
role
Studying
: Interface
Lab 1
lab1 done
lab2 done
Lab 2
Message
: CoffeeCustomer
project done
Project
insertCoin
pass
Final exam
Life line of object
machineReady
fail
pressButton(b1)
time
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
pourCoffee
passed
failed
Part I
Modeling Structure:
Classes and Objects
Procedure
is active
Part I
Modeling Structure:
Classes and Objects
Sequence diagram with several objects
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
Combining fragments of interaction diagrams
60
SD processOrder
: Interface
: CoinHandler
: Brewer
:Order
ref
A
insertCoin
:TicketDB
:Account
create
: CoffeeCustomer
Get existing customer data
transport
loop
{C-A < 5s}
litIndicators
pressButton(b1)
C
pourCoffee
coinAccepted
warmUp
loop
[get next item]
reserve(date,no)
makeOrder(o1)
loop condition
add(seats)
pourCoffee
answer
destruction
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
10
61
More fragments of interaction diagrams
:Order
Use-case modelling
:TicketDB
A use-case is:
loop
[get next item]
reserve(date,no)
alt
guard condition
nested conditional
[available]
add(seats)
“… a particular form or pattern or exemplar of usage,
a scenario that begins with some user of the
system initiating some transaction of sequence of
interrelated events.”
alternate branches
[unavailable]
reject
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Jacobson et al.1992: Object-oriented software engineering. AddisonWesley
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
A CoffeeDrinker approaches the machine
with her cup and a coin of SEK 5. She
places the cup on the shelf just under the
pipe. She then inserts the coin, and presses
the button for coffee to get coffee according
to default settings. Optionally she might use
other buttons to adjust the strength and
decide to add sugar and/or whitener. The
machine processes the
coffee and rings a bell when it is ready. The
CoffeeDrinker takes her cup from the shelf.
CoffeeDrinker
Actor: a user of
the system in a
particular role.
Can be human
or system.
Detail of use-case
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Stereotype: extended
classification of meaning
<<include>>
<<include>>
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
”Reuse”
<<extend>>
Add change
”Separating scenarious”
(often conditional)
Please, keep as
simple as possible.
Clean the
Machine
Get coin in
return
Add substances
System boundary
Service
Collect coins
Pour hot water
Brew a can of
coffee
TeaDrinker
Porter
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Identifying classes:
noun analysis
Open machine
Collect coins
CoffeeDrinker
Part I
Modeling Structure:
Classes and Objects
Relations between use-cases
Clean the
machine
CoffeeMachine
Buy a cup of
coffee
Buy a cup of coffee
Service
Part III
Modeling Behavior:
State Machines etc.
Use-case diagram
for the coffee machine
Use-case diagram
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
A CoffeeDrinker approaches the
machine with her cup and a coin of
SEK 5. She places the cup on the
shelf just under the pipe. She then
inserts the coin, and presses the
button for coffee to get coffee
according to default settings.
Optionally, she might use other buttons
to adjust the
strength and decide to add sugar
and/or whitener. The machine
processes the coffee and rings a bell
when it is ready. The CoffeeDrinker
takes her cup from the shelf.
•machine – real noun handled by the
system
•cup – unit for beverage
•coin – detail of user and machine
•shelf – detail of machine
•pipe – detail of machine
•button– handled by the system
•sugar – detail of coffee
•whitener – detail of coffee
•cup of coffee – handled by the
system
•indicator – not discovered
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
11
Extended class model
Revised class model
buys
CoffeeCustomer
0..*
buys
CoffeeCustomer
CupOfCoffee
0..*
0..*
CupOfCoffee
0..*
Generalisation
association
buys
Porter
Part I
Modeling Structure:
Classes and Objects
0..*
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Part I
Modeling Structure:
Classes and Objects
The coffee machine class model
Interface
Brewer
1
1 1
buys
CoffeeCustomer
0..*
0..*
CupOfCoffee
0..*
Part III
Modeling Behavior:
State Machines etc.
Part II
Short Introduction
to Design Patterns
1
makes
0..*
1: insertCoin
6: pressButton(b1)
: Interface
5: litIndicators
9: pourCoffee
1
1
4: coinAccepted
: CoinHandler
Part I
Modeling Structure:
Classes and Objects
buys
0..1
0..*
Part II
Short Introduction
to Design Patterns
CanOfCoffee
Even small models
take space. You
need good drawing
tools and a large
sheet.
Part III
Modeling Behavior:
State Machines etc.
Activity Diagram
Short Introduction
to Design Patterns
3: warmUp
: Brewer
Shows message flows with sequence numbers
Similar information as sequence diagram
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Activity diagram
§ Graph
brew coffee
Nodes are activities (actions)
• Method invocations, operations, sending / receiving messages,
handling events, creating / accessing / modifying / deleting
objects, variables …
• Data flow by input and output parameter pins
Edges are control flow transitions
To some degree dual to the state diagram
§ Might be refined to a low-level specification;
cf. control flow graph (~ compiler IR)
§ A Petri Net
Interpretation by moving tokens along edges
Models concurrency by multiple tokens for ”current state”
Fork / join for synchronization
§PartModels
real-world
workflows Part III
I
Part II
Modeling Structure:
Classes and Objects
8: pourCoffee
7: makeOrder(o1)
: CoffeeCustomer
machine
2: transport
Porter
CanOfCoffee
0..*
Communication diagram
CoinHandler
1
buys
Porter
CanOfCoffee
0..*
Modeling Behavior:
State Machines etc.
initial node
insert coin
final node
decision
[no]
coin accepted?
fork
[yes]
brew coffee
add hot water
to adjust strength
add sugar/whitener
join
pour coffee
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
12
Other UML features…
UML Summary
§ Comments
§ Constraints in OCL (Object Constraint Language)
{self.npages
>10}
Copy
constraint in
a comment
is a copy of
0..*
1..*
{xor}
1..*
is a copy of 0..*
§ UML – the standard for modeling software
§ Modeling before/during design, precedes coding
§ Different diagrams for different views
Book
Journal
a binary
constraint
§ Profiles: Collections of stereotypes for specific domains,
e.g. Realtime-profile for UML
Customize (specialize) UML elements, e.g. associations
Can introduce own symbols
More in the lecture on Model-Driven Architecture…
§ MOF (Meta-Object Facility):
UML is specified in UML MOF, a core subset of UML
MOF is the meta-model of UML – a language to define UML
Powerful mechanism for extending UML by adding new language
Part III
elements Part II
Part I
Modeling Structure:
Classes and Objects
Short Introduction
to Design Patterns
Modeling Behavior:
State Machines etc.
Model a software system only partially,
focus on a certain aspect and/or part at a time
Problem: Maintaining consistency across diagrams
§
§
§
§
UML is customizable and extendible: Profiles, MOF
UML is semi-formal, messy, imprecise
Tools
Trend towards more detailed modeling
Stepwise refinement
”executable UML”: UML 2 is almost a programming language…
§ Trend towards automatized partial generation of models and
code from models (MDA – model-driven architecture)
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
Homework Exercise
§ Draw a class diagram for the following scenario:
A customer, characterized by his/her name and phone number, may
purchase reservations of tickets for a performance of a show. A reservation
of tickets, annotated with the reservation date, can be either a reservation
by subscription, in which case it is characterized by a subscription series
number, or an individual reservation. A subscription series comprehends at
least 3 and at most 6 tickets; an individual reservation at most one ticket.
Every ticket is part of a subscription series or an individual reservation, but
not both. Customers may have many reservations, but each reservation is
owned by exactly one customer. Tickets may be available or not, and one
may sell or exchange them. A ticket is associated with one specific seat in a
specific performance, given by date and time, of a show, which is
characterized by its name. A show may have several performances.
Part I
Modeling Structure:
Classes and Objects
Part II
Short Introduction
to Design Patterns
Part III
Modeling Behavior:
State Machines etc.
13
Download