object modeling with uml: advanced modeling karin palmkvist, bran selic, and jos warmer march 2000...

131
Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea Data, IntelliCorp, Klasse Objecten, ObjectTime Ltd., Rational Software, Unisys

Upload: joshua-willis

Post on 11-Jan-2016

222 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Object Modeling with UML: Advanced Modeling

Karin Palmkvist, Bran Selic, and Jos Warmer

March 2000

© 1999 OMG and Tutorial Contributors: EDS, IBM, Enea Data, IntelliCorp, Klasse Objecten, ObjectTime Ltd., Rational Software, Unisys

Page 2: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 2

Overview

Tutorial seriesUML OverviewAdvanced Modeling Part 1: Model Management

Karin Palmkvist, Enea Data Part 2: Extension Mechanisms and Profiles

Bran Selic, ObjecTime Limited Part 3: Object Constraint Language (OCL)

Jos Warmer, Klasse Objecten

Page 3: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 3

Tutorial Series

Introduction to UML November 1999, Cambridge, US

Behavioral Modeling with UML January 2000, Mesa, Arizona, US

Advanced Modeling with UML March 2000, Denver, US

Metadata Integration with UML, XMI and MOF June 2000, Oslo, Norway

Page 4: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 4

Tutorial Focus: the Language

language = syntax + semantics syntax = language elements (e.g. words) are

assembled into expressions (e.g. phrases, clauses) semantics = the meanings of the syntactic

expressions

UML Notation Guide – defines UML’s graphic syntax

UML Semantics – defines UML’s semantics

Page 5: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 5

«metamodel»UML

UML Overview

Foundation

Model Management

Behavioral Elements

dependency

package

Page 6: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 6

Foundation

Model Management

Behavioral Elements

UML Overview

CoreExtension Mechanisms

Data Types

Page 7: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 7

Behavioral Elements

Model Management

Foundation

UML Overview

Use Cases State Machines Activity GraphsCollaborations

Common Behavior

Page 8: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 8

Advanced Modeling with UML

Part 1: Model ManagementKarin Palmkvist, Enea [email protected]

Part 2: Extension Mechanisms and Profiles

Part 3: Object Constraint Language (OCL)

Page 9: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 9

UML Overview

Use Cases State Machines Activity Graphs

Behavioral Elements

Model Management

Foundation

Collaborations

Common Behavior

Page 10: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 10

Model Management Overview

Package

Subsystem

Model

Page 11: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 11

Unifying Concepts

Grouping - Packages, Subsystems, and Models all group other model elements, although with very differing purposes

Other grouping elements include Classes and Components

Page 12: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 12

Package

What are Packages

Core Concepts

Diagram Tour

When to Use Packages

Modeling Tips

Page 13: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 13

Package

A package is a grouping of model elements

Page 14: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 14

Package – Example

OrderCustomer

Location Item

Stock Item Order Item

Sales

Warehouse

Page 15: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 15

Package

A package can contain model elements of different kinds

In particular, there can be a containment hierarchy of nested packages

A package defines a namespace for its contents

Packages can be used for different purposes

Page 16: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 16

Core Concepts

Construct Description Syntax

Access

Import A dependency indicating that the public contents of the target package are added to the namespace of the source package.

«import»

A dependency indicating that the public contents of the target package are available in the namespace of the source package.

«access»

Package A grouping of model elements.Name

Page 17: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 17

Visibility

A public element is visible to elements outside the package, denoted by ‘+’

A protected element is visible only to elements within inheriting packages, denoted by ‘#’

A private element is not visible at all to elements outside the package, denoted by ‘-’

Page 18: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 18

X Y

Import

The associations are owned by package X

«import»A

B +C-D

+E

A

B +C-D

+E

X Y

Y::C

Y::E

«import»

Page 19: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 19

Import – Alias

An imported element can be given a local alias and a local visibility

«import»A

B +B-D

+E

X Y

A

B +B-D

X Y

+E«import»

+Y::E

-C

same class

Page 20: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 20

A

B +C-D

+E

X Y«access»

X Y

Access

The associations are owned by package X

«access»A

B +C-D

+E

Page 21: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 21

X Y Z

X Y Z

Import vs. Access

«import»

A

B +C-D

+E

«import»

+G

+F

-H

-Z::G

+Z::F

«access»

A

B +C-D

+E

«access»

+G

+F

-H

Y::C

Y::E

Y::F

Page 22: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 22

Diagram Tour

Packages are shown in static diagrams

Two equivalent ways to show containment:

Page 23: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 23

When to Use Packages

To create an overview of a large set of model elements

To organize a large model

To group related elements

To separate namespaces

Page 24: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 24

Modeling Tips – Package

Gather model elements with strong cohesion in one package

Keep model elements with low coupling in different packages

Minimize relationships, especially associations, between model elements in different packages

Namespace implication: an element imported into a package does not “know” what is done to it in the imported package

Page 25: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 25

Subsystem

What are Subsystems

Core Concepts

Diagram Tour

When to Use Subsystems

Modeling Tips

Page 26: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 26

Subsystem

Subsystems are used for system decomposition

Page 27: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 27

Subsystem – Example

TrunkTraffic Control

Subscription

Communicating subsystems constitute a system

Page 28: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 28

Core Concepts

Subsystem

Construct Description Syntax

A grouping of model elements that represents a behavioral unit in a physical system.

Name

Page 29: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 29

Subsystem Aspects

A subsystem has two aspects: An external view, showing the services provided by

the subsystem An internal view, showing the realization of the

subsystem

There is a mapping between the two aspects

Page 30: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 30

Subsystem Aspects

A subsystem has a specification and a realization

Realization elementsSpecification elements

Page 31: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 31

Subsystem Realization

The subsystem realization defines the actual contents of the subsystem

The subsystem realization typically consists of classes and their relationships, or a contained hierarchy of subsystems with classes as leaves

Realization elementsSpecification elements

?

Page 32: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 32

Subsystem Specification

The subsystem specification defines the external view of the subsystem

Realization elementsSpecification elements

?

Page 33: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 33

Subsystem Specification

describes the services offered by the subsystem

describes the externally experienced behavior of the subsystem

does not reveal the internal structure of the subsystem

describes the interface of the subsystem

The subsystem specification:

Page 34: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 34

Specification Techniques

The Use Case approach

The State Machine approach

The Logical Class approach

The Operation approach

…and combinations of these.

Page 35: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 35

Use Case Approach

For subsystem services used in certain sequences

When the specification is to be understood by non-technical people

For complex behavior

Realization elementsSpecification elements

Page 36: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 36

Use Case Approach – Example

Traffic Control

Specification elements Realization elements

Change Digit Analysis Information

Initiate Call

Receive Digit and Connect

Hook Signal and Disconnect

Operator

Trunk

Subscription

Page 37: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 37

State Machine Approach

Specification elements

Stopped Running

Error

Maintenance

Exhausted

Traffic Control

For subsystems with state dependent behavior

Focuses on the states of the subsystem and the transitions between them

Page 38: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 38

Specification elements

AnalyzerNumber Dictionary

Network Manager

Traffic Control

When usage of the subsystem is perceived as manipulation of objects

Logical Class Approach

When the requirements are guided by a particular standard

Page 39: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 39

Operation Approach

OperationsinitiateConnection (…)

dialledDigit (…)

throughConnect (…)

bAnswer (…)

bOnHook (…)

aOnHook (…)

Traffic Control

For subsystems providing simple, “atomic” services

When the operations are invoked independently

Page 40: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 40

Mixing Techniques

Traffic Control

changeDigitAnalysisInformation (...)

Operator

Initiate Call

Receive Digit and Connect

Hook Signal and DisconnectSubscription

Trunk

Specification elements

Specification elements

Operations

Page 41: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 41

Complete Subsystem Notation

The complete subsystem symbol has three pre-defined compartments

Realization elements

Specification elements

Operations

Each of the compartments may optionally be omitted from the diagram

Page 42: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 42

Subsystem Interfaces

TrunkTraffic Control Subscription

TrunkTraffic Control Subscription

Page 43: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 43

Operations and Interfaces

The subsystem must support all operations in the offered interfaces

Operations

operation1( ) : Type1

operation2( ) : Type2

operation3( ) : Type3

operation4( ) : Type4

operation5( ) : Type5

«Interface»

«realize»operation1( )operation2( )operation4( )

«Interface»

«realize»operation2( )operation3( )operation5( )

Page 44: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 44

Subsystem Interfaces

Specification elements«Interface»

«realize»

«Interface»

«realize»

Page 45: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 45

Specification – Realization

The specification and the realization must be consistent

The mapping between the specification and the realization can be expressed by:

«realize» relationships collaborations

Page 46: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 46

Realize Relationship

«realize» is particularly useful in simple mappings

Operations

operation1( ) : Type1

operation2( ) : Type2

operation3( ) : Type3

operation4( ) : Type4

operation5( ) : Type5

Realization Elements

«realize»

operation1( )

Page 47: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 47

Realize – Example

Realization elements

Specification elements

changeDigitAnalysisInformation ( )

Initiate Call

Receive Digit and Connect

Hook Signal and DisconnectSubscription

Traffic Control

Operations

Operator

Trunk

changeDigitAnalysisInformation ( )::

«realize»

Page 48: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 48

Collaboration

A collaboration defines the roles to be played when a task is performed

The roles are played by interacting instances

Sequence Diagram

:Trunk :Traffic Control :Subscription

markBusy

dialledDigit

dialledDigit

throughConnect

bAnswer

markBusy

Collaboration Diagram

:Trunk

:Traffic Control

:Subscription

3: dialledDigit6: bAnswer

5: markBusy1: markBusy

4: throughConnect

2: dialledDigit

Page 49: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 49

Collaboration – Notation

A collaboration and its participants

Collaboration

Role

Class

role name

role namerole name

role name

Page 50: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 50

Collaboration – Example

Collaborations are useful in more complex situations

Specification elements Realization elements

Receive Digit and Connect

Hook Signal and Disconnect

Initiate Call

Coordinator

AnalysisDatabase

NetworkInterface

Page 51: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 51

Diagram Tour

Subsystems can be shown in static diagrams and interaction diagrams

“Fork” notation alternative for showing contents:

Realization elementsSpecification elements

Realization elements

Page 52: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 52

Diagram Tour – continued

Subsystems can be shown in interaction diagrams collaboration diagrams sequence diagrams

Sequence Diagram

Page 53: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 53

When to Use Subsystems

To express how a large system is decomposed into smaller parts

To express how a set of modules are composed into a large system

To trace requirements between the system and its parts

Page 54: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 54

Modeling Tips – Subsystem

Define a subsystem for each separate part of a large system

Choose specification technique depending on factors like kind of system and kind of subsystem

Realize each subsystem independently, using the specification as a requirements specification

Page 55: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 55

Model

What are Models

Core Concepts

Diagram Tour

When to Use Models

Modeling Tips

Page 56: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 56

Model

A model is an abstraction of a system, specifying the system from a certain viewpoint and at a certain level of abstraction

Page 57: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 57

Model – Example

Design Model

Use Case Model

Page 58: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 58

Core Concepts

Model

Trace

Construct Description Syntax

A dependency connecting model elements that represent the same concept within different models. Traces are usually non-directed.

«trace»

An abstraction of a system, as seen from a specific viewpoint and at a certain level of abstraction and detail.

Name

Page 59: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 59

Trace

Analysis

Design

«trace»

Page 60: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 60

Diagram Tour

Models as such are seldom shown in diagrams

Two equivalent ways to show containment:

Page 61: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 61

Model vs. Diagram

Use Case Model

Design Model

Diagrams make up the documentation of a model

Page 62: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 62

When to Use Models

To give different views of a system to different stakeholders

To focus on a certain aspect of a system at a time

To express the results of different stages in a software development process

Page 63: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 63

Modeling Tips – Model

Define the purpose for each model

A model must give a complete picture of the system, within its viewpoint and level of abstraction

Focus on the purpose of the model; omit irrelevant information

Page 64: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 64

Models and Subsystems

Models and subsystems can be combined in a hierarchy:

Page 65: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 65

Wrap Up Model Management

Packages are used to organize a large set of model elements Visibility Import Access

Subsystems are used to structure a large system Specification Realization

Models are used to show different aspects of a system Trace

Page 66: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 66

Advanced Modeling with UML

Part 1: Model Management

Part 2: Extension Mechanisms and ProfilesBran Selic, Rational [email protected]

Part 3: Object Constraint Language (OCL)

Page 67: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 67

Semantic Variations in UML

Semantic aspects that are: undefined (e.g., scheduling discipline), or

ambiguous (multiple interpretations/possibilities)

Why? Different domains require different specializations

Extend the applicability and utility of UML to a very

broad spectrum of domains …while avoiding the “PL/I syndrome”

Page 68: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 68

Extensibility Mechanisms

Used for refining the general UML semantics must be consistent with general UML semantics!

Purpose: To obtain specialized domain-specific or even

application-specific variations of general-purpose modeling concepts

Standard UML semanticsStandard UML semanticsStandard UML semanticsStandard UML semantics

refined semanticsrefined semantics(valid)(valid)refined semanticsrefined semantics(valid)(valid) different semanticsdifferent semantics

(NOT valid)(NOT valid)different semanticsdifferent semantics(NOT valid)(NOT valid)

Page 69: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 69

Models

A model is a description of something “a pattern for something to be made” (Merriam-Webster) model thing that is modeled

blueprint(model)

model thing that is modeled

building building

Page 70: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 70

Meta-Models

Models of models (modeling tools)

ClassClassClassClass AssociationAssociationAssociationAssociation

ObjectsObjects

ModelModel

Meta-ModelMeta-Model

(M0)(M0)

(M1)(M1)

(M2)(M2)

<sawdust><sawdust><2 tons><2 tons><sawdust><sawdust><2 tons><2 tons>

<Ben&Jerry’s><Ben&Jerry’s><Ben&Jerry’s><Ben&Jerry’s> <lard><lard><5 tons><5 tons><lard><lard><5 tons><5 tons>

CustomerOrderCustomerOrderCustomerOrderCustomerOrder

itemitemquantityquantityitemitemquantityquantity

CustomerCustomerCustomerCustomer

idididid

Page 71: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 71

The UML Meta-Model

Expressed using a very small subset of UML

GeneralizableElementGeneralizableElementGeneralizableElementGeneralizableElement

isRoot : BooleanisRoot : BooleanisLeaf : BooleanisLeaf : BooleanisAbstract : BooleanisAbstract : Boolean

isRoot : BooleanisRoot : BooleanisLeaf : BooleanisLeaf : BooleanisAbstract : BooleanisAbstract : Boolean

ClassClassClassClass

isActive : BooleanisActive : BooleanisActive : BooleanisActive : Boolean

ClassifierClassifierClassifierClassifier

FeatureFeatureFeatureFeature

visibility : {public, private,visibility : {public, private,protected}protected}visibility : {public, private,visibility : {public, private,protected}protected}

**

not self.isAbstract implies self.allOperations->forAll(op | self.allMethods->exists(m | m.specification includes (op)))

not self.isAbstract implies self.allOperations->forAll(op | self.allMethods->exists(m | m.specification includes (op)))

Well-formedness constraint (OCL)Well-formedness constraint (OCL)

Meta-ClassMeta-ClassMeta-ClassMeta-Class

Page 72: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 72

The Three Basic Mechanisms

Stereotypes used to refine meta-classes (or other stereotypes) by

defining supplemental semantics

Constraints predicates (e.g., OCL expressions) that reduce

semantic variation can be attached to any meta-class or stereotype

Tagged Values individual modifiers with user-defined semantics can be attached to any meta-class or stereotype

Page 73: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 73

Example: A Special Type of Class

ClassClassClassClass

isActive : BooleanisActive : BooleanisActive : BooleanisActive : Boolean

self.feature->select(f | f.oclIsKindOf(Operation))-> forAll(o | o.elementOwnership.visibility = #protected)

self.feature->select(f | f.oclIsKindOf(Operation))-> forAll(o | o.elementOwnership.visibility = #protected)

«Capsule»«Capsule»«Capsule»«Capsule»

<Language = ”C++”><Language = ”C++”><Language = ”C++”><Language = ”C++”>

StereotypeconstraintStereotypeconstraint

Required tagRequired tagStereotypeStereotype

Page 74: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 74

Extensibility Method

Refinements are specified at the Model (M1) level but apply to the Meta-Model level (M2) does not require “meta-modeling” CASE tools can be exchanged with models

«Capsule»«Capsule»«Capsule»«Capsule»(M1)(M1)

(M2)(M2)ClassClassClassClass AssociationAssociationAssociationAssociation

CustomerOrderCustomerOrderCustomerOrderCustomerOrder

itemitemquantityquantityitemitemquantityquantity

CustomerCustomerCustomerCustomer

idididid

«capsule»«capsule»aCapsuleClassaCapsuleClass

«capsule»«capsule»aCapsuleClassaCapsuleClass

Page 75: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 75

Stereotypes

Used to define derivative modeling concepts based on existing generic modeling concepts

Defined by: base (meta-)class = UML meta-class or stereotype constraints required tags (0..*)

often used for modeling pseudo-attributes icon

A model element can have at most one stereotype

Page 76: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 76

Heuristic: Combining Stereotypes

Through multiple inheritance:

«Capsule»«Capsule»«Capsule»«Capsule»

<Language = ”C++”><Language = ”C++”><Language = ”C++”><Language = ”C++”>

«Square»«Square»«Square»«Square»

«SquareCapsule»«SquareCapsule»«SquareCapsule»«SquareCapsule»

Page 77: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 77

Stereotype Notation

Several choices

«capsule»«capsule»aCapsuleClassaCapsuleClass

«capsule»«capsule»aCapsuleClassaCapsuleClass aCapsuleClassaCapsuleClassaCapsuleClassaCapsuleClass

Stereotypeicon

Stereotypeicon

(a) with guillemets(a) with guillemets (b) with icon(b) with icon

(c) iconified form(c) iconified form

Page 78: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 78

Heuristic: When to Stereotype?

Abstract class or stereotype?

ClassClassClassClass

isActive : BooleanisActive : BooleanisActive : BooleanisActive : Boolean

«Capsule»«Capsule»«Capsule»«Capsule»

<Language = ”C++”><Language = ”C++”><Language = ”C++”><Language = ”C++”>

AbstractCapsuleAbstractCapsuleClassClass

AbstractCapsuleAbstractCapsuleClassClass

«capsule»«capsule»aCapsuleClassaCapsuleClass

«capsule»«capsule»aCapsuleClassaCapsuleClass

Stereotypes typically used where one or more tools need to support (validate, enforce) the supplementary semantics basis for further standardization

Page 79: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 79

Tagged Values and Constraints

Tagged values: consist of a tag and value pair often used to model stereotype attributes arbitrary domain-specific semantics

instructions to a code generator (“debug_flag = true”) project management data (“status = unit_tested”) etc.

Constraints formal or informal expressions must not contradict inherited base semantics

Page 80: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 80

Constraint Notation

Enclosed in braces “{…}”

Can appear in various places in a model

ATM_WithdrawlATM_WithdrawlATM_WithdrawlATM_Withdrawl

customer : idcustomer : idamount : Moneyamount : Money{amount is multiple of $20}{amount is multiple of $20}

customer : idcustomer : idamount : Moneyamount : Money{amount is multiple of $20}{amount is multiple of $20}

AccountAccountAccountAccount

customer : idcustomer : idbalance : Moneybalance : Moneycustomer : idcustomer : idbalance : Moneybalance : Money

{ATM_Withdrawl.customer = {ATM_Withdrawl.customer = Account.customer}Account.customer}{ATM_Withdrawl.customer = {ATM_Withdrawl.customer = Account.customer}Account.customer}

Page 81: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 81

UML Profiles

A package of related specializations of general UML concepts that capture domain-specific variations and usage patterns A domain-specific interpretation of UML

Profiles currently being defined by the OMG: EDOC Real-Time CORBA ...

Page 82: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 82

Advanced Modeling with UML

Part 1: Model Management

Part 2: Extension Mechanisms and Profiles

Part 3: Object Constraint Language (OCL)Jos Warmer, Klasse [email protected]

Page 83: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 83

Overview

What are constraints

Core OCL Concepts

Advanced OCL Concepts

Wrap up

Page 84: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 84

Why use OCL ?

What’s in it for me?

Use the Object ConstraintLanguage

Page 85: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

85

That’s why !!

Flight Airplane

CargoFlightPassengerFlight

PasssengerPlane CargoPlane11

0..*0..*11

0..*0..*

0..*0..*11flights

Page 86: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

86

Diagram with invariants

context Flightinv: type = #cargo implies airplane.type = #cargoinv: type = #passenger implies airplane.type = #passenger

10..*Flight Airplane

type = enum{cargo, passenger}

type = enum{cargo, passenger}

flights

Page 87: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 87

Definition of constraint

“A constraint is a restriction on one or more values of (part of) an object-oriented model or system.”

Page 88: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 88

Different kinds of constraints

Class invariant a constraint that must always be met by all instances

of the class

Precondition of an operation a constraint that must always be true BEFORE the

execution of the operation

Postcondition of an operation a constraint that must always be true AFTER the

execution of the operation

Page 89: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 89

Constraint stereotypes

UML defines three standard stereotypes for constraints: invariant precondition postcondition

Page 90: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 90

What is OCL?

OCL is a textual language to describe constraints the constraint language of the UML

Formal but easy to use unambiguous no side effects

Page 91: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 91

Constraints and the UML model

OCL expressions are always bound to a UML model

Page 92: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 92

Overview

What are constraints

Core OCL Concepts

Advanced OCL Concepts

Wrap up

Page 93: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 93

Example model

Airport

Flight

Passenger

Airline

*

**

*

$minAge: Integerage: IntegerneedsAssistance: Boolean

departTime: Time/arrivalTime: Timeduration : IntervalmaxNrPassengers: Integer

origin

desti-nation

name: String

name: String

{ordered}

arrivingFlights

departingFlights

CEO

0..1

flights

passengers

book(f : Flight)

0..1

airline

airline

Page 94: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 94

Constraint context and self

Every OCL expression is bound to a specific context.

The context may be denoted within the expression using the keyword ‘self’. Who? Who?

Me?Me?

Page 95: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 95

Notation

Constraints may be denoted within the UML model or in a separate document. the expression:

context Flight inv: self.duration < 4 is identical to:

context Flight inv: duration < 4 is identical to:

Flight

duration: Integer<<invariant>>duration < 4

Page 96: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 96

Elements of an OCL expression

In an OCL expression these elements may be used: basic types: String, Boolean, Integer, Real. classifiers from the UML model and their features

attributes, and class attributes query operations, and class query operations

associations from the UML model

Page 97: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 97

Example: OCL basic types

context Airline inv:

name.toLower = ‘klm’

context Passenger inv:

age >= ((9.6 - 3.5)* 3.1).floor implies mature = true

Page 98: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 98

Model classes and attributes

“Normal” attributes context Flight inv:

self.maxNrPassengers <= 1000

Class attributescontext Passenger inv:

age >= Passenger.minAge

Page 99: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 99

Example: query operations

context Flight inv:

self.departTime.difference(self.arrivalTime)

.equals(self.duration)

Time

difference(t:Time):Intervalbefore(t: Time): Booleanplus(d : Interval) : Time

Interval

equals(i:Interval):Boolean$Interval(d, h, m : Integer) :

Interval

$midnight: Timemonth : Stringday : Integeryear : Integerhour : Integerminute : Integer

nrOfDays : IntegernrOfHours : IntegernrOfMinutes : Integer

Page 100: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 100

Associations and navigations

Every association is a navigation path.

The context of the expression is the starting point.

Role names are used to identify the navigated association.

Page 101: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 101

Example: navigations

Navigations

context Flight

inv: origin <> destination

inv: origin.name = ‘Amsterdam’

context Flight

inv: airline.name = ‘KLM’

Page 102: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 102

Association classes

context Person inv:

if employer.name = ‘Klasse Objecten’ then

job.type = #trainer

else

job.type = #programmer

endif

Person Company

Job

* 1employee employer

type : {trainer, programmer}

name : String

Page 103: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 103

The OCL Collection types

What are constraints

Core OCL Concepts Collections

Advanced OCL Concepts

Wrap up

Page 104: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 104

Three subtypes to Collection

Set: arrivingFlights(from the context Airport)

Bag: arrivingFlights.duration (from the context Airport)

Sequence: passengers (from the context Flight)

Page 105: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 105

Collection operations

OCL has a great number of predefined operations on the collections types.

Syntax:

collection->operation

Page 106: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 106

The collect operation

Syntax:collection->collect(elem : T | expr)collection->collect(elem | expr)collection->collect(expr)

Shorthand:collection.expr

The collect operation results in the collection of the values resulting evaluating expr for all elements in the collection

Page 107: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 107

Example: collect operation

context Airport inv:

self.arrivingFlights->collect(airLine)->notEmpty

airp1

airp2

f1

f2

f3

f4

f5

airline1

airline2

airline3

departing flights arriving flights

Page 108: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 108

The select operation

Syntax:collection->select(elem : T | expression)

collection->select(elem | expression)

collection->select(expression)

The select operation results in the subset of all elements for which expression is true

Page 109: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 109

Example: collect operation

context Airport inv:

self.departingFlights->select(duration<4)->notEmpty

departing flights arriving flights

airp1

airp2

airline1

airline2

airline3

f5duration = 2

f1duration = 2

f4duration = 5

f2duration = 5

f3duration = 3

Page 110: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 110

The forAll operation

Syntax:collection->forAll(elem : T | expr)

collection->forAll(elem | expr)

collection->forAll(expr)

The forAll operation results in true if expr is true for all elements of the collection

Page 111: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 111

Example: forAll operation

context Airport inv:

self.departingFlights->forAll(departTime.hour>6)

departing flights arriving flights

airp1

airp2

airline1

airline2

airline3

f5depart = 8

f1depart = 7

f4depart = 9

f2depart = 5

f3depart = 8

Page 112: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 112

The exists operation

Syntax:collection->exists(elem : T | expr)

collection->exists(elem | expr)

collection->exists(expr)

The exists operation results in true if there is at least one element in the collection for which the expression expr is true.

Page 113: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 113

Example: exists operation

context Airport inv:

self.departingFlights->exists(departTime.hour<6)

departing flights arriving flights

airp1

airp2

airline1

airline2

airline3

f5depart = 8

f1depart = 7

f4depart = 9

f2depart = 5

f3depart = 8

Page 114: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 114

Example: exists operation

context Airport inv:

self.departingFlights ->

exists(departTime.hour < 6)

Page 115: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 115

Other collection operations

isEmpty: true if collection has no elementsnotEmpty: true if collection has at least one elementsize: number of elements in collectioncount(elem): number of occurences of elem in collectionincludes(elem): true if elem is in collectionexcludes(elem): true if elem is not in collectionincludesAll(coll): true if all elements of coll are in collection

Page 116: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 116

Result in postcondition

Example pre and postcondition

context Airline::servedAirports() : Set(Airport)

pre : -- none

post: result = flights.destination->asSet

Page 117: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 117

Statechart: referring to states

The operation oclInState returns true if the object is in the specified state.

open closed

context Bottle inv:self.oclInState(closed) implies filled = #full

Bottle

filled : enum {empty, half, full}

Page 118: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 118

Local variables

The Let construct defines variables local to one constraint:

Let var : Type = <expression1> in <expression2>

Page 119: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 119

Iterate

The iterate operation for collections is the most generic and complex building block.

collection->iterate(elem : Type;

answer : Type = <value> |

<expression-with-elem-and-answer>)

Page 120: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 120

Iterate example

Example iterate:context Airline inv:

flights->select(maxNrPassengers > 150)->notEmpty

Is identical to:context Airline inv:

flights->iterate(f : Flight; answer : Set(Flight) = Set{ } |

if f.maxNrPassengers > 150 then

answer->including(f)

else answer endif )->notEmpty

Page 121: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 121

Inheritance of constraints

Guiding principle Liskovs Substitution Principle (LSP): “Whenever an instance of a class is expected, one

can always substitute an instance of any of its subclasses.”

Page 122: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 122

Inheritance of constraints

Consequences of LSP for invariants: An invariant is always inherited by each subclass. Subclasses may strengthen the invariant.

Consequences of LSP for preconditions and postconditions: A precondition may be weakened A postcondition may be strengthened

Page 123: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 123

Wrap up

What are constraints

Core OCL Concepts

Advanced OCL Concepts

Wrap up

Page 124: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 124

Current Developments

Feedback from several OCL implementors handled in UML-RTF e.g. the grammar has some loose ends typical tool-related issues

Development of OCL metamodel currently concrete syntax only will result in abstract syntax

OCL Workshop with pUML group formalization of OCL

Page 125: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 125

OCL Tools

Cybernetics ww.cybernetic.org

University of Dresden www-st.inf.tu-dresden.de/ocl/

Boldsoft www.boldsoft.com

ICON computing www.iconcomp.com

Royal Dutch NavyOthers … …

Page 126: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 126

Conclusions and Tips

OCL invariants allow you to model more precisely stay implementation independent

OCL pre- and postconditions allow you to specify contracts (design by contract) precisely specify interfaces of components

OCL usage tips keep constraints simple always combine natural language with OCL use a tool to check your OCL

Page 127: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 127

Further resources on OCL

The Object Constraint Language ISBN 0-201-37940-6

OCL home page www.klasse.nl/ocl/index.htm

Page 128: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 128

Preview - Next Tutorial

Metadata Integration with UML, XMI, and MOF 4-Layer Metamodel Architecture UML CORBAfacility UML XMI DTD Meta Object Facility

Page 129: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 129

Web OMG UML Resource Page

www.omg.org/uml/ UML Tutorial 1 (OMG Document omg/99-11-04)

www.omg.org/cgi-bin/doc?omg/99-11-04 UML Tutorial 2 (OMG Document omg/00-01-01)

www.omg.org/cgi-bin/doc?omg/00-01-01 UML Tutorial 3 (will be posted)

Email Karin Palmkvist: [email protected] Bran Selic: [email protected] Jos Warmer: [email protected]

Conferences & workshops UML World 2000, NYC, June ‘00 UML ’00, York, England, Oct. ‘00

Further Info

Page 130: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 130

Questions

Page 131: Object Modeling with UML: Advanced Modeling Karin Palmkvist, Bran Selic, and Jos Warmer March 2000 © 1999 OMG and Tutorial Contributors: EDS, IBM, Enea

Advanced Modeling with UML 131

Tool demonstrations

For anyone interested there are tool demonstrations directly after this tutorial

University of Dresden Cybernetics