1 Introduction to UML and Design Patterns Part I Modeling Structure ...

28 downloads 132643 Views 1MB Size Report
to Design Patterns. Part III ... Stevens, Pooley: Using UML: Software Engineering with Objects and ..... The problem describes when to apply the pattern: intent ...
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





Part I Modeling Structure: Classes and Objects

Part II Short Introduction to Design Patterns

”Reuse”

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

Suggest Documents