Download
the role of ocl in the model driven architecture n.
Skip this Video
Loading SlideShow in 5 Seconds..
The role of OCL in the Model Driven Architecture PowerPoint Presentation
Download Presentation
The role of OCL in the Model Driven Architecture

The role of OCL in the Model Driven Architecture

128 Views Download Presentation
Download Presentation

The role of OCL in the Model Driven Architecture

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. The role of OCL in theModel Driven Architecture Jos Warmer Klasse Objecten J.Warmer@klasse.nl http://www.klasse.nl

  2. Part 1 • The role of modeling in software development.

  3. 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

  4. MML 0: No Specification My software … • Specification of software is kept in the heads of the developers.

  5. MML 1: Textual • Specification of software is written down in one or more natural language documents.

  6.   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. +

  7.    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. +

  8.     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.

  9.      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 ().

  10. 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: ???

  11.     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

  12. 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.

  13. Platform Independent Model  SQL - EJB   EJB - JSP PSM SQL PSM EJB PSM JSP MDA Example

  14. 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).

  15. Part 2: OCL

  16. Object Constraint Language • OCL is about objects • OCL is a language • OCL is not just about constraints • OCL is the UML • expression / query language

  17. 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

  18. 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 (?)

  19. Example Model Bottle capacity : Integer contents : Integer weight : Integer diameter : Integer neckDiameter : Integer totalWeight() : Integer Crate capacity : Integer maxWeight : Integer maxDiameter : Integer totalWeight() : Integer addBottle(b : Bottle) 0..1 0..* bottles crate 0..* crates bottle 0..1 pallet 0..1 cap 0..1 Pallet capacity : Integer maxWeight : Integer totalWeight() : Integer addCrate(c : Crate) Cap innerDiameter : Integer weight : Integer 0..* / caps

  20. Invariants on Classes • context Crate -- the number of bottles may not exceed its capacity • inv: bottles->size() <= capacity -- each bottle must fit in the crate • inv: bottles->forAll(diameter < maxDiameter) -- the total weight must be less than the maximum • inv: totalWeight() <= maxWeight

  21. Invariants on Classes • context Crate -- each bottle must fit in the crate • inv: bottles->forAll(diameter < maxDiameter) • FORALL b : Bottle FROM bottles • ISTRUE • b.diameter < maxDiameter

  22. State invariants • context Bottle • state Closed inv: contents = capacity open Bottle capacity : Integer contents : Integer weight : Integer diameter : Integer neckDiameter : Integer totalWeight() : Integer closed

  23. Design by Contract • Pre- and post-conditions • Takes “Design by Contract” principle into “Analysis by Contract”

  24. 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)

  25. Use Case Pre/Postcondtions • A use-case can be viewed as a “system function”. • Use case assumptions and results can be specified in OCL.

  26. 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

  27. 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

  28. Initial values and derivations -- The caps in a pallet are derived: • context Pallet::cap • derive: crates.bottles.cap->asSet() • context Bottle::contents • init: 0

  29. 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()

  30. Guards open Bottle capacity : Integer contents : Integer weight : Integer diameter : Integer neckDiameter : Integer totalWeight() : Integer close [ contents=capacity ] closed

  31. 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. …

  32. 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

  33. Part 3: The MDA Framework

  34. MDA • MDA is defined around: • Models • Model Transformations • Important model types: • PIM : Platform Independent Model • PSM : Platform Specific Model

  35. Transformation Tool Source Model Target Model Transformation Tool Transformation Tool PIM PSM Code Basic MDA Framework

  36. Transformation definition Transformation tool MDA Framework Transformation Tool Source Model Target Model

  37. MDA • To enable this we need • Modeling languages • Transformation definitions

  38. Language Language Transformation definition Is written in Is written in Transformation tool MDA Framework Is used by Source Model Target Model

  39. metamodel Is written in Language meta language Is defined by Defining Languages model Is written in

  40. Language Language Transformation definition Transformation tool MDA Framework Meta language Is written in Is written in Is written in Is written in Is used by Source Model Target Model

  41. 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

  42. Meta language Transformation definition language Language Language Transformation definition Is written in Is written in Is written in Is written in Is written in Is used by Source Model Target Model Transformation tool

  43. 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

  44. Part 3: OCL in MDA

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

  46. Defining Languages • UML metamodel • Context Class inv: • attributes->isUnique(name) Class name : Integer 1 owner 0..* attributes Attribute name : String

  47. 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))

  48. 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.

  49. Company name : Integer employees : Set(Person) Company name : Integer transforms to 0..* employees Person name : String Person name : String Transformation Definition

  50. Transformation Definitions • Transformation ManyAssociationToAttribute (UML, UML) { • source ae : UML::AssociationEnd ; • target att : UML::Attribute; • sourcecondition • ae.multiplicity = MultiplicityKind::many; • targetcondition • att.visibility = VisibilityKind::public and att.type.isTypeOf(Set); • mapping • ae.name <~> att.name; • ae.type <~> att.type.elementType; • }