the role of ocl in the model driven architecture jos warmer klasse objecten [email protected]

57
The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten [email protected] http://www.klasse.nl

Upload: alondra-millis

Post on 11-Dec-2015

222 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

The role of OCL in theModel Driven Architecture

Jos Warmer

Klasse Objecten

[email protected]

http://www.klasse.nl

Page 2: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Part 1

The role of modeling in software development.

Page 3: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Modeling Maturity Levels

MML 0: No specification

MML 1: Textual Specification

MML 2: Text with Models

MML 3: Models with Text

MML 4: Precise Models

MML 5: Models only

Page 4: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MML 0: No Specification

Specification of software is kept in the heads of the developers.

My software

Page 5: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MML 1: Textual

Specification of software is written down in one or more natural language documents.

Page 6: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MML 2: Text with Diagrams

Specification of software in one or more natural language documents…

… plus several high-level diagrams to explain the overall architecture.

+

Page 7: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MML 3: Models with Text

Specification of software is written down in one or more models.

Additional natural language text is used to explain the background and motivation of the models.

+

Page 8: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MML 4: Precise Models

Specification of software is written down in one or more models.– Natural language text is used to explain the

background and motivation of the models.

The models are precise enough to have a direct link with the actual code.

This is what the OMG calls MDA or Model Driven architecture.

Page 9: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MML 5: Models Only

The models are precise and detailed enough to allow complete code-generation.

The code is invisible (as assembler is today).

Modeling language High level programming language.

This is future technology ().

Page 10: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

UML in the MMLs

MML 0: No use of UML

MML 1: No use of UML

MML 2: Moderate use of UML

MML 3: Extensive use of UML

MML 4: Extensive use of UML with OCL

MML 5: ???

Page 11: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MDA and MML

OMG’s Model Driven Architecture is designed for MML level 4

– Ultimate goal is level 5

UML and OCL play an important role

Page 12: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MDA Overview

Automatic transformation from platform independent model (PIM) to platform specific models (PSM).– PIM usually written in UML.– PSM can be diverse:

• Java, J2EE, SQL, C++, .NET, COBOL, C#, CORBA, XML, etc. etc.

– Bridges between PSMs generated as well.

Page 13: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MDA Example

SQL - EJB EJB - JSP

Platform Independent Model

PSM JSPPSM SQL PSM EJB

Page 14: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Experience in moving to MDA

Companies moving from MML 3 to MML 4 (MDA) realize the need for OCL and are using it.

Tools vendors developing tools for MDA realize the same and add support for OCL (e.g. ArcStyler, OptimalJ).

Page 15: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Part 2: OCL

Page 16: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Object Constraint Language

OCL is about objects

OCL is a language

OCL is not just about constraints

OCL is the UML

expression / query language

Page 17: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

History of OCL

Syntropy influenced by Z

Language for Business Modeling

IBM/ObjecTime OMG submission

Part of UML standard

Extended and formally defined for UML 2.0

Page 18: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

OCL Characteristics

Ease-of-use– Readable and writeable by wide audience

Pure expression language– Side-effect free

Specification language– Declarative and platform independent

Precision– Unambiguous, formal (?)

Page 19: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Example Model

Bottlecapacity : Integercontents : Integerweight : Integerdiameter : IntegerneckDiameter : Integer

totalWeight() : Integer

CapinnerDiameter : Integerweight : Integer

0..1

cap

0..*

bottles

Cratecapacity : IntegermaxWeight : IntegermaxDiameter : Integer

totalWeight() : IntegeraddBottle(b : Bottle)

0..1bottle

0..1

Palletcapacity : IntegermaxWeight : Integer

totalWeight() : IntegeraddCrate(c : Crate)

0..1

crates0..*

pallet

crate

0..*

/ caps

Page 20: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Invariants on Classes

context Crate

-- the number of bottles may not exceed its capacity

inv: bottles->size() <= capacity

-- each bottle must fit in the crateinv: bottles->forAll(diameter < maxDiameter)

-- the total weight must be less than the maximuminv: totalWeight() <= maxWeight

Page 21: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Invariants on Classes

context Crate

-- each bottle must fit in the crateinv: bottles->forAll(diameter < maxDiameter)

FORALL b : Bottle FROM bottlesISTRUE b.diameter < maxDiameter

Page 22: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

State invariants

context Bottle

state Closed inv: contents = capacity

open

closed

Bottle capacity : Integer contents : Integer weight : Integer diameter : Integer neckDiameter : Integer

totalWeight() : Integer

Page 23: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Design by Contract

Pre- and post-conditions

Takes “Design by Contract” principle into “Analysis by Contract”

Page 24: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Preconditions on Operations

context Crate::addBottle( b : Bottle )

-- there must be room in the crate

pre: bottles->size() < capacity

-- the maximum weight for the crate may not be exceeded

pre: totalWeight() + b.totalWeight() <= maxWeight

-- the bottle is not in the crate

pre: not bottles->includes( b )

-- ‘b’ is added to the collection of bottlespost: bottles = bottles@pre->including(b)

Page 25: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Use Case Pre/Postcondtions

A use-case can be viewed as a “system function”.

Use case assumptions and results can be specified in OCL.

Page 26: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Components

Specified by an (or more) interface(s)– Operations with pre- and postconditions– Invariants on the objects described by the

interface• Show business rules for the component

OCL 2.0 Message clause– Specify user visible side-effects

Page 27: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Business Rules

There may be at most as many caps with winner markers on a pallet as there are crates on the pallet:

context Pallet inv:caps->select(winnerMark = true)->size()

<= crates->size()

SIZEOF SELECT c : Cap FROM self.caps WHERE c.winnerMark = true<=SIZEOF self.crates

Page 28: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Initial values and derivations

-- The caps in a pallet are derived:

context Pallet::cap

derive: crates.bottles.cap->asSet()

context Bottle::contents

init: 0

Page 29: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Operation body

The body of a query operation can be specified in OCL

context Bottle::totalWeight() : Integer

body: weight + cap.weight

context Crate::totalWeight() : Integer

body: weight + bottles.totalWeight()->sum()

Page 30: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Guards

open

closed

close [ contents=capacity ]

Bottlecapacity : Integercontents : Integerweight : Integerdiameter : IntegerneckDiameter : Integer

totalWeight() : Integer

Page 31: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Expressions in a UML model

The target object in an interaction can be specified.

Object flows in activity diagrams

Parameters to messages and signals

… etc. …

Page 32: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Queries

OCL is a Query Language– Expressive power >= SQL

• David Akehurst, Canterbury University

Boldsoft– Uses OCL exclusively as a query language to

specify the user interface

Queries can be defined on the model level

Page 33: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Part 3: The MDA Framework

Page 34: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MDA

MDA is defined around:– Models– Model Transformations

Important model types:– PIM : Platform Independent Model– PSM : Platform Specific Model

Page 35: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Basic MDA Framework

SourceModel

TargetModel

TransformationTool

CodePIM PSMTransformation

ToolTransformation

Tool

Page 36: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MDA Framework

SourceModel

TargetModel

Transformationtool

Transformationdefinition

TransformationTool

Page 37: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MDA

To enable this we need– Modeling languages– Transformation definitions

Page 38: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MDA Framework

SourceModel

TargetModel

Transformationtool

Language

Iswritten in Is used

by

Language

Iswritten in

Transformationdefinition

Page 39: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Defining Languages

model

Iswritten in

metamodel

Isdefined by

Language

Iswritten in meta

language

Page 40: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

MDA Framework

SourceModel

TargetModel

Transformationtool

Transformationdefinition

Language Language

Iswritten in Is used

by

Iswritten in

Meta languageIs writtenin

Is writtenin

Page 41: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Defining Transformations

A transformation definition maps– Element(s) from the source language

to– Element(s) from the target language

based on the respective language definitions

Page 42: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

SourceModel

TargetModel

Transformationtool

Transformationdefinition

Language Language

Iswritten in

Is usedby

Iswritten in

Meta language

Is writtenin

Is writtenin

Transformationdefinition language

Iswritten in

Page 43: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Complete MDA Framework

Languages are defined by models– These are metamodels, e.g. UML

These models are written in a metamodeling language:– MOF is the OMGs metamodeling language

Transformation Definition Language– MOF RfP for Query/Views/Transformations

Page 44: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Part 3: OCL in MDA

Page 45: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

OCL in MDA

OCL is essential for MDA in three ways– More precise models– Definition of Modeling Languages– Transformation definitions

Page 46: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Defining Languages

UML metamodelContext Class inv:

attributes->isUnique(name)

Classname : Integer

Attributename : String

0..*

owner1

attributes

Page 47: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

UML Metamodel Rules

[2] An AssociationClass cannot be defined between itself and something else.self.allConnections->forAll(ar | ar.participant <> self)

[1] An Interface can only contain Operations.self.allFeatures->forAll(f | f.oclIsKindOf(Operation) or f.oclIsKindOf(Reception))

Page 48: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

UML Profile Rules

Rules for e.g. Java profile:

context Class inv:

generalizations->size() <= 1

Other profiles:– EDOC, CORBA, C++, EAI, UML-EJB, SPE, etc.

etc.

Page 49: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Transformation Definition

Companyname : Integeremployees : Set(Person)

Personname : String

Companyname : Integer

Personname : String

0..* employees

transforms to

Page 50: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Transformation Definitions

Transformation ManyAssociationToAttribute (UML, UML) {

source ae : UML::AssociationEnd ;

target att : UML::Attribute;

source condition

ae.multiplicity = MultiplicityKind::many;

target condition

att.visibility = VisibilityKind::public and att.type.isTypeOf(Set);

mapping

ae.name <~> att.name;

ae.type <~> att.type.elementType;

}

Page 51: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

References

MDA Explained, Practice and Promise of the Model Driven Architecture– ISBN unknown, to appear Spring 2003, Kleppe, Warmer & Bast

The Object Constraint Language, Precise Modeling with UML– ISBN 0-201-37940-6, 1999, Warmer & Kleppe

The Object Constraint Language, Getting Your Models Ready for MDA– ISBN 0-321-17936-6, to appear May 2003, Warmer & Kleppe

OCL 2.0 Submission– www.klasse.nl/ocl/subm-intro.html

Page 52: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Questions

Page 53: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

Part 4: Current Status

Page 54: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

OCL 2.0 Submission

Authoring Team

Jos Warmer, Anneke Kleppe Klasse Objecten

Anders Ivner, Jonas Högström Boldsoft

Martin Gogolla, Mark Richters University of Bremen

Heinrich Hussmann,

Steffen Zschaler

Technical university of Dresden

Tony Clark Kings College, London

Simon Johnston Rational

Page 55: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

OCL 2.0 Submission

Submitters and supporters

Klasse Objecten IBM

Boldsoft Telelogic

University of Bremen Project Technology, Inc.

Technical university of Dresden Adaptive Ltd.

Kings College, London Compuware

Rational Software Corporation University of York

IONA University of Kent

Kabira Technologies, Inc.

Page 56: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

OCL 2.0 Submission Highlights

Full UML query language

Complete OCL metamodel full integration with UML metamodel

Concrete syntax strictly separated from abstract syntax allows alternative syntaxes, including visual ones

Semantics defined mathematically and in UML

Page 57: The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl

KlasseObjecten

UML 2.0 Structure

Infrastructure (ad/00-08-08)

– Simple and extensible UML core

Superstructure (ad/00-08-09)

– Higher level UML structures

OCL (ad/00-08-10)

– General purpose UML expression language

Diagram interchange (ad/00-08-11)

– Exchange visual UML models between tools