Object Constraint Language OCL

Podobné dokumenty
OCL a integritní omezení

2. Entity, Architecture, Process

UML. Unified Modeling Language. Součásti UML

Gymnázium, Brno, Slovanské nám. 7 WORKBOOK. Mathematics. Teacher: Student:

Problém identity instancí asociačních tříd

WORKSHEET 1: LINEAR EQUATION 1

Transportation Problem

PRAVIDLA ZPRACOVÁNÍ STANDARDNÍCH ELEKTRONICKÝCH ZAHRANIČNÍCH PLATEBNÍCH PŘÍKAZŮ STANDARD ELECTRONIC FOREIGN PAYMENT ORDERS PROCESSING RULES

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Contact person: Stanislav Bujnovský,

Introduction to MS Dynamics NAV

Database systems. Normal forms

UML - Unified Modeling Language

User manual SŘHV Online WEB interface for CUSTOMERS June 2017 version 14 VÍTKOVICE STEEL, a.s. vitkovicesteel.com

AIC ČESKÁ REPUBLIKA CZECH REPUBLIC

Čipové karty Lekařská informatika

PAINTING SCHEMES CATALOGUE 2012

SPECIFICATION FOR ALDER LED

Course description. Course credit prior to NO Counted into average NO Winter semester 0 / - 0 / - 0 / - Timetable Language of instruction

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

Czech Republic. EDUCAnet. Střední odborná škola Pardubice, s.r.o.

DC circuits with a single source

Střední odborná škola a Střední odborné učiliště, Chrudim, Čáslavská 205. Keywords: The wedding banquet, The seating arrangement, Wedding customs

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost.

Gymnázium, Brno, Slovanské nám. 7, SCHEME OF WORK Mathematics SCHEME OF WORK. cz

Postup objednávky Microsoft Action Pack Subscription

GENERAL INFORMATION MATCH: ALSA PRO ARENA MASTERS DATE: TIME SCHEDULE:

PART 2 - SPECIAL WHOLESALE OFFER OF PLANTS SPRING 2016 NEWS MAY 2016 SUCCULENT SPECIAL WHOLESALE ASSORTMENT

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Compression of a Dictionary

Chapter 7: Process Synchronization

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Jazyk OCL a modelem řízený vývoj 1

Rekonstrukce OCL z SQL *

On large rigid sets of monounary algebras. D. Jakubíková-Studenovská P. J. Šafárik University, Košice, Slovakia

valid from 1st November 2011

CZ.1.07/1.5.00/

2 Axiomatic Definition of Object 2. 3 UML Unified Modelling Language Classes in UML Tools for System Design in UML 5

COMPETENT AUTHORITY responsible for ensuring compliance with Regulation (EC) No 21/2004:

18.VY_32_INOVACE_AJ_UMB18, Frázová slovesa.notebook. September 09, 2013

EURO přeshraniční platba

GENERAL INFORMATION MATCH: ALSA PRO HOT SHOTS 2018 DATE:

ROLZ-2. Portable AV/Conference Center. Assembly Instructions

Travelling Rules for Inbounds in District 2240 Czechia and Slovakia

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 2.díl. České vysoké učení technické Fakulta elektrotechnická

Obsah&/&Content& Všeobecné)podmínky)(v)češtině)) Terms)and)Conditions)(in)english)) )

Ošetřovací plán Treatment Plan

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost.

Přihláška ke studiu do doktorských studijních programů Hospodářská politika Systémové inženýrství a informatika Aplikovaná informatika

Právní formy podnikání v ČR

Progressive loyalty V1.0. Copyright 2017 TALENTHUT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jméno autora: Mgr. Alena Chrastinová Datum vytvoření: 2O Číslo DUMu: VY_32_INOVACE_O9_AJ

PC/104, PC/104-Plus. 196 ept GmbH I Tel. +49 (0) / I Fax +49 (0) / I I

THE MARKING OF BOVINE ANIMALS IN THE CZECH REPUBLIC

PACIFIC AEROSPACE CORPORATION letadlo model PAC 750 XL Tento PZZ je vydáván pro výrobek transferovaný pod působnost EASA

Život v zahraničí Studium

Code List of Transactions in XML Statements KB Code List of Transactions in XML Statements Issued by KB ver. 008 (valid from

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

DATA SHEET. BC516 PNP Darlington transistor. technický list DISCRETE SEMICONDUCTORS Apr 23. Product specification Supersedes data of 1997 Apr 16

VY_32_INOVACE_06_Předpřítomný čas_03. Škola: Základní škola Slušovice, okres Zlín, příspěvková organizace

Next line show use of paragraf symbol. It should be kept with the following number. Jak může státní zástupce věc odložit zmiňuje 159a.

7.VY_32_INOVACE_AJ_UMB7, Tázací dovětky.notebook. September 08, 2013

Just write down your most recent and important education. Remember that sometimes less is more some people may be considered overqualified.

Co vím o Ázerbájdžánu?

CODE BOOK NEISS 8. A code book is an identification tool that allows the customer to perform a test result evaluation using a numeric code.

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

1, Žáci dostanou 5 klíčových slov a snaží se na jejich základě odhadnout, o čem bude následující cvičení.

Digitální učební materiál

Vypsání závodu / Notice of Race strana/page 1/5. Compotech Cup. v lodních třídách / in classes. D-One, 7P CTL

VOŠ, SPŠ automobilní a technická. Mgr. Marie Šíchová. At the railway station

Dohoda č. Agreement No. o podmínkách následného placení s platbou Tankovací kartou on Conditions of Post-Payment Mode with payment using a Fleet Card

PRAVIDLA ZPRACOVÁNÍ EXPRESNÍCH ELEKTRONICKÝCH DOMÁCÍCH PLATEBNÍCH PŘÍKAZŮ EXPRESS ELECTRONIC DOMESTIC PAYMENT ORDERS PROCESSING RULES

Aplikace matematiky. Dana Lauerová A note to the theory of periodic solutions of a parabolic equation

Mechanika Teplice, výrobní družstvo, závod Děčín TACHOGRAFY. Číslo Servisní Informace Mechanika:

Výukový materiál v rámci projektu OPVK 1.5 Peníze středním školám

kterou se provádí zákon č. 122/2000 Sb., o ochraně sbírek muzejní povahy a o změně některých dalších zákonů

Výukový materiál zpracovaný v rámci operačního programu Vzdělávání pro konkurenceschopnost

Java Cvičení 05. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

LOGOMANUÁL / LOGOMANUAL

Course description. Second Romance language 2 Printed: :05. Course name: Academic Year 2015/2016

Litosil - application

Číslo projektu: CZ.1.07/1.5.00/ Název projektu: Inovace a individualizace výuky

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Aktivita CLIL Chemie III.

ŽÁDOST O UZNÁNÍ ZAHRANIČNÍHO VYSOKOŠKOLSKÉHO VZDĚLÁNÍ A KVALIFIKACE APPLICATION FOR THE RECOGNITION OF FOREIGN EDUCATION IN THE CZECH REPUBLIC

1) Personal data / Osobní údaje

Luk aˇ s R uˇ ziˇ cka Pˇ redbudouc ı ˇ cas

PRAVIDLA ZPRACOVÁNÍ URGENTNÍCH ELEKTRONICKÝCH DOMÁCÍCH PLATEBNÍCH PŘÍKAZŮ URGENT ELECTRONIC DOMESTIC PAYMENT ORDERS PROCESSING RULES

Britské společenství národů. Historie Spojeného království Velké Británie a Severního Irska ročník gymnázia (vyšší stupeň)

USING VIDEO IN PRE-SET AND IN-SET TEACHER TRAINING

Název školy STŘEDNÍ ODBORNÁ ŠKOLA a STŘEDNÍ ODBORNÉ UČILIŠTĚ, Česká Lípa, 28. října 2707, příspěvková organizace

Téma 8. Náklady kapitálu. Kapitálová struktura a její optimalizace

2N LiftIP. IO Extender. Communicator for Lifts. Version

GENERAL INFORMATION MATCH: ALSA PRO OPEN 2018 DATE: TIME SCHEDULE: Prematch - Friday. registration:

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

STŘEDNÍ ODBORNÁ ŠKOLA a STŘEDNÍ ODBORNÉ UČILIŠTĚ, Česká Lípa, 28. října 2707, příspěvková organizace

World cup #9 and #10 Czech republic

series Awards program

Transkript:

Object Constraint Language OCL Tomáš Černý : Object contraint language

OCL Intro Flight Airplane type : enum of cargo, passenger flights type : enum of cargo, passenger {context Flight inv: type = #cargo implies airplane.type = #cargo inv: type = #passenger implies airplane.type = #passenger} Tomáš Černý : Object contraint language 2

OCL Intro Flight Airplane type : enum of cargo, passenger flights type : enum of cargo, passenger {context Flight inv: type = #cargo implies airplane.type = #cargo inv: type = #passenger implies airplane.type = #passenger} Tomáš Černý : Object contraint language 3

OCL Intro Flight Airplane type : enum of cargo, passenger flights type : enum of cargo, passenger {context Flight inv: type = #cargo implies airplane.type = #cargo inv: type = #passenger implies airplane.type = #passenger} Always true Tomáš Černý : Object contraint language 4

OCL Intro Flight type : enum of cargo, passenger flights Airplane type : enum of cargo, passenger {context Flight inv: type = #cargo implies airplane.type = #cargo inv: type = #passenger implies airplane.type = #passenger} Tomáš Černý : Object contraint language 5

OCL Intro II Airport name: String context Flight origin destination departing Flights inv: origin <> destination * * arriving Flights Flight departtime: Time /arrivaltime: Time duration : Interval maxnrpassengers: Integer Airline name:string flights airline inv: origin.name = Amsterdam context Flight inv: airline.name = KLM Tomáš Černý : Object contraint language 6

OCL Intro II Airport name: String context Flight origin destination departing Flights inv: origin <> destination * * arriving Flights Flight departtime: Time /arrivaltime: Time duration : Interval maxnrpassengers: Integer Airline name:string flights airline inv: origin.name = Amsterdam context Flight inv: airline.name = KLM inv: airline.name.tolower = klm Tomáš Černý : Object contraint language 7

OCL Intro III context Person inv: if employer.name = CVUT then job.type = #lecturer else job.type = #programmer endif Job type : {lecturer, programmer} Person * employee employer Company name : String Tomáš Černý : Object contraint language 8

Definition of constraint A constraint is a restriction on one or more values of (part of) an object-oriented model or system. Tomáš Černý : Object contraint language 9

History 995 IBEL IBM Součást UML. Tomáš Černý : Object contraint language 0

UML diagram nedostačuje Potřebujeme jazyk pro specifikaci Potřebujeme něco pro Objektový návrh ne nový jazyk Potřebujeme něco standardizovaného Tomáš Černý : Object contraint language

Účel OCL Jazyk formální specifikace -> implementovatelný Objektový návrh Intuitivní syntax pro OO jazyk Pozor není to programovací jazyk! Tomáš Černý : Object contraint language 2

Výhody formální specifikace Lepší dokumentace Omezení modelu Informace navíc Přesnost Zamezí dvojznačnosti Komunikace bez nedorozumění Komunikace mezi vývojářem a analytikem bez nedorozumění Tomáš Černý : Object contraint language 3

Kam s OCL Specifikace invariantů tříd a typů Co smí a co ne Vymezení legálních hodnot Pre- a post-conditions pro metody Navigační jazyk Omezení/vymezení operací Test požadavku a specifikace Tomáš Černý : Object contraint language 4

Example: A Mortgage System (Hypoteka). A person may have a mortgage only on a house she owns. 2. The start date of a mortgage is before its end date. Tomáš Černý : Object contraint language 5

OCL specification of the constraints:. context Mortgage context Mortgage invariant: self.security.owner = self.borrower invariant: security.owner = borrower 2. context Mortgage context Mortgage invariant: self.startdate < self.enddate invariant: startdate < enddate. A person may have a mortgage only on a house she owns. 2. The start date of a mortgage is before its end date. Tomáš Černý : Object contraint language 6

OCL specification of the constraints:. context Mortgage context Mortgage invariant: self.security.owner = self.borrower invariant: security.owner = borrower 2. context Mortgage context Mortgage invariant: self.startdate < self.enddate invariant: startdate < enddate Tomáš Černý : Object contraint language 7

OCL specification of the constraints:. context Mortgage context Mortgage invariant: self.security.owner = self.borrower invariant: security.owner = borrower 2. context Mortgage context Mortgage invariant: self.startdate < self.enddate invariant: startdate < enddate Tomáš Černý : Object contraint language 8

OCL specification of the constraints:. context Mortgage context Mortgage invariant: self.security.owner = self.borrower invariant: security.owner = borrower 2. context Mortgage context Mortgage invariant: self.startdate < self.enddate invariant: startdate < enddate Tomáš Černý : Object contraint language 9

OCL specification of the constraints:. context Mortgage context Mortgage invariant: self.security.owner = self.borrower invariant: security.owner = borrower 2. context Mortgage context Mortgage invariant: self.startdate < self.enddate invariant: startdate < enddate Tomáš Černý : Object contraint language 20

OCL specification of the constraints:. context Mortgage context Mortgage invariant: self.security.owner = self.borrower invariant: security.owner = borrower 2. context Mortgage context Mortgage invariant: self.startdate < self.enddate invariant: startdate < enddate Tomáš Černý : Object contraint language 2

More Constraints Examples All players must be over 8. context Player invariant: self.age >=8 Player age: Integer The number of guests in each room doesn t exceed the number of beds in the room. Room numberofbeds: Integer room guest * Guest context Room invariant: guest -> size() <= numberofbeds Tomáš Černý : Object contraint language 22

Constraints/Omezení (invariants), Contexts and Self Constraint (invariant) Boolean OCL výraz vyhodnotitelný do true/false Každý constraint je vázán na specifický typ (class, association class, interface) v UML modelu Má svůj context. Context objektu může být vytyčen přes keyword self. Context lze specifikovat přes: Context <context name> Přerušovanou čárou spojující objekt v UML modelu Constraint může mít název za klíčovým slovem invariant. Tomáš Černý : Object contraint language 23

ProgramPartner numberofcustomers: Integer deliveredservices Service condition: Boolean pointsearned: Integer pointsburned: Integer description: String Date..* partner generatedby $now: Date partners isbefore(t:date): Boolean isafter(t:date): Boolean =(t:date): Boolean..* {ordered}..* Tomáš Černý : Object contraint language LoyaltyProgram enroll(c:customer) ServiceLevel name: String level availableservices transactions program actuallevel Membership 0.. LoyaltyAccount points: Integer earn(i: Integer) burn(i: Integer) isempty(): Boolean transactions Transaction points: Integer date:date account program(): LoyaltyProgram Burning Earning card transactions Customer name: String title:string ismale: Boolean dateofbirth: Date age(): Integer owner card CustomerCard valid: Boolean validform: Date goodthru: Date color: enum{silver, gold} printedname: String card 24

Using OCL in Class Diagrams <<precondition>> i >= 0 LoyaltyAccount points: Integer earn(i: Integer) burn(i: Integer) isempty(): Boolean class invariant { points >= 0 } <<precondition>> points >= i and i >= 0 precondition for burn operation <<postcondition>> points = points@pre + i <<postcondition>> result = (points=0) <<postcondition>> points = points@pre - i postcondition for burn operation Tomáš Černý : Object contraint language 25

Invarianty Atributů Invarianty atributů: context Customer invariant age-restriction: age >= 8 context CustomerCard invariant correctdates: validfrom.isbefore(goodthru) The type of validfrom and goodthru is Date. isbefore(date):boolean is a Date operation. Customer name: String title:string ismale: Boolean dateofbirth: Date age(): Integer owner card CustomerCard valid: Boolean validform: Date goodthru: Date color: enum{silver, gold} printedname: String The class on which the invariant must be put is the invariant context. For the above example, this means that the expression is an invariant of the Customer class. Tomáš Černý : Object contraint language 26

Invarianty : Navigace přes associace role Navigation over associations is used to refer to Associated objects, starting from the context object: context CustomerCard invariant: owner.age >= 8 owner a Customer instance. owner.age an Integer. Customer name: String title:string ismale: Boolean dateofbirth: Date age(): Integer CustomerCard valid: Boolean validform: Date goodthru: Date color: enum{silver, gold} printedname: String Note: This is not the right context for this constraint! If the role name is missing use the class name at the other end of the association, starting with a lowercase letter. Preferred: Always give role names. owner card Tomáš Černý : Object contraint language 27

Invarianty : Navigace přes associace roles context CustomerCard invariant printedname: printedname = owner.title.concat( ).concat(owner.name) printedname a String. owner a Customer instance. owner.title a String. owner.name a String. String is a recognized OCL type. concat is a String operation, with the signature concat(string): String. Tomáš Černý : Object contraint language 28

ProgramPartner numberofcustomers: Integer deliveredservices Service condition: Boolean pointsearned: Integer pointsburned: Integer description: String Date..* partner generatedby $now: Date partners isbefore(t:date): Boolean isafter(t:date): Boolean =(t:date): Boolean..* {ordered}..* Tomáš Černý : Object contraint language LoyaltyProgram enroll(c:customer) ServiceLevel name: String level availableservices transactions program actuallevel Membership 0.. LoyaltyAccount points: Integer earn(i: Integer) burn(i: Integer) isempty(): Boolean transactions Transaction points: Integer date:date account program(): LoyaltyProgram Burning Earning card transactions Customer name: String title:string ismale: Boolean dateofbirth: Date age(): Integer owner cards CustomerCard valid: Boolean validform: Date goodthru: Date color: enum{silver, gold} printedname: String card 29

Invarianty : Navigace přes associace Navigation from a class through an association class uses the association class name to obtain all tuples of an object: The cards of the memberships of a customer are only the customer s cards : context Customer invariant correctcard: cards->includesall(membership.card) This is exactly the same as the previous constraint: The owner of the card of a membership must be the customer in the membership : context Membership invariant correctcard: card.owner = customer The Membership correctcard constraint is better! Tomáš Černý : Object contraint language 30

Invariants using Navigation through Associations with Many Multiplicity Navigation over associations roles with multiplicity greater than yields a Collection type. Operations on collections are accessed using an arrow ->, followed by the operation name. A customer card belongs only to a membership of its owner : context CustomerCard invariant correctcard: owner.membership->includes(membership) owner a Customer instance. owner.membership a set of Membership instances. membership a Membership instance. includes is an operation of the OCL Collection type. Tomáš Černý : Object contraint language 3

Navigating to collections Customer Account Transaction context Customer account context Customer account.transaction produces a set of Accounts produces a bag of transactions If we want to use this as a set we have to do the following account.transaction -> asset Tomáš Černý : Object contraint language 32

ProgramPartner numberofcustomers: Integer deliveredservices Service condition: Boolean pointsearned: Integer pointsburned: Integer description: String Date..* partner generatedby $now: Date partners isbefore(t:date): Boolean isafter(t:date): Boolean =(t:date): Boolean..* {ordered}..* Tomáš Černý : Object contraint language LoyaltyProgram enroll(c:customer) ServiceLevel name: String level availableservices transactions program actuallevel Membership 0.. LoyaltyAccount points: Integer earn(i: Integer) burn(i: Integer) isempty(): Boolean transactions Transaction points: Integer date:date account program(): LoyaltyProgram Burning Earning card transactions Customer name: String title:string ismale: Boolean dateofbirth: Date age(): Integer owner cards CustomerCard valid: Boolean validform: Date goodthru: Date color: enum{silver, gold} printedname: String card 33

Navigation to Collections The partners of a loyalty program have at least one delivered service : context LoyaltyProgram invariant minservices: partners.deliveredservices->size() >= The number of a customer s programs is equal to that of his/her valid cards : context Customer invariant sizesagree: Programs->size() = cards->select(valid=true)->size() Tomáš Černý : Object contraint language 34

Navigation to Collections When a loyalty program does not offer the possibility to earn or burn points, the members of the loyalty program do not have loyalty accounts. That is, the loyalty accounts associated with the Memberships must be empty : context LoyaltyProgram invariant noaccounts: partners.deliveredservices-> forall(pointsearned = 0 and pointsburned = 0) implies Membership.account->isEmpty() and, or, not, implies, xor are logical connectives. Tomáš Černý : Object contraint language 35

The OCL Collection types Collection is a predefined OCL type Operations are defined for collections They never change the original Three different collections: Set (no duplicates) Bag (duplicates allowed) Sequence (ordered Bag) With collections type, an OCL expression either states a fact about all objects in the collection or states a fact about the collection itself, e.g. the size of the collection. Syntax: collection->operation Tomáš Černý : Object contraint language 36

Collection Operations <collection> size ( ) isempty ( ) notempty ( ) sum ( ) count ( object ) includes ( object ) includesall ( collection ) Tomáš Černý : Object contraint language 37

Collections cont. <collection> select ( e:t <b.e.>) reject ( e:t <b.e.>) collect ( e:t <v.e.>) forall ( e:t* <b.e.>) exists ( e:t <b.e.>) iterate ( e:t ; r:t 2 = <v.e.> <v.e.>) b.e. stands for: boolean expression v.e. stands for: value expression Tomáš Černý : Object contraint language 38

Changing the context Customer name:string title: String golduser: Boolean age( ):Integer owner..* cards StoreCard printname:string points: Integer earn(p:integer) context StoreCard invariant: printname = owner.title.concat(owner.name) context Customer cards forall ( printname = owner.title.concat(owner.name) ) Tomáš Černý : Object contraint language 39

Example UML diagram Student name: String..* taken_by submitted_by takes Module code: String credit: Integer for_module set_work..* submits..* Assessment weight: Integer Exam hours: Integer Coursework date: String Tomáš Černý : Object contraint language 40

Constraints a) Modules can be taken iff they have more than seven students registered b) The assessments for a module must total 00% c) Students must register for 20 credits each year d) Students must take at least 90 credits of CS modules each year e) All modules must have at least one assessment worth over 50% f) Students can only have assessments for modules which they are taking Tomáš Černý : Object contraint language 4

Constraint (a) Modules can be taken iff they have more than seven students registered Note: when should such a constraint be imposed? context Module invariant: taken_by size > 7 Tomáš Černý : Object contraint language 42

Constraint (b) The assessments for a module must total 00% context Module invariant: set_work.weight sum( ) = 00 Tomáš Černý : Object contraint language 43

Constraint (c) Students must register for 20 credits each year context Student invariant: takes.credit sum( ) = 20 Tomáš Černý : Object contraint language 44

Constraint (d) Students must take at least 90 credits of CS modules each year context Student invariant: takes select(code.substring(,2) = CS ).credit sum( ) >= 90 Tomáš Černý : Object contraint language 45

Constraint (e) All modules must have at least one assessment worth over 50% context Module invariant: set_work exists(weight > 50) Tomáš Černý : Object contraint language 46

Constraint (f) Students can only have assessments for modules which they are taking context Student invariant: takes includesall(submits.for_module) Tomáš Černý : Object contraint language 47

OCL Constraints A constraint is a restriction on one or more values of (part of) an object model/system. Constraints come in different forms: invariant constraint on a class or type that must always hold pre-condition constraint that must hold before the execution of an op. post-condition constraint that must hold after the execution of an op. guard constraint on the transition from one state to another. We studied only class constraints (invariants). Tomáš Černý : Object contraint language 48

Further Resources for OCL The Object Constraint Language ISBN 0-20-37940-6 OCL home page www.klasse.nl/ocl/index.htm Tomáš Černý : Object contraint language 49

Further Resources for OCL The Amsterdam Manifesto on OCL In Object Modeling with the OCL (LNCS2263) p5-49 The Object Constraint Language, Precise Modeling with UML, Addison-Wesley, 999. The Object Constraint Language, Precise Modeling with UML 2nd Response to the UML 2.0 OCL RfP (ad/2000-09-03) Revised Submission, Version.6 January 6, 2003 Some Shortcomings of OCL, the Object Constraint Language of UML Mandana Vaziri and Daniel Jackson,999 http://www.klasse.nl/english/uml/ UML CENTER Informal formality? The Object Constraint Language and its application in the UML metamodel Anneke Kleppe, Jos Warmer, Steve Cook A Pratical Application of the Object Constraint Language OCL Kjetil Moage The UML's Object Constraint Language: OCL Specifying Components, JAOO Tutorial September 2000 Jos Warmer & Anneke Kleppe Tomáš Černý : Object contraint language 50