Object Constraint Language
Az Object Specifikációs Nyelv egy deklaratív nyelv, amely az IBM-nél kifejlesztett Unified Modeling Language modellekre alkalmazandó szabályokat írja le, és most az UML szabvány része. Kezdetben az OCL csupán hivatalos specifikációs nyelvkiterjesztés volt az UML számára.
Kezdetben az OCL az UML formális specifikációs nyelvi kiterjesztése volt. Az OCL mostantól bármely Meta-Object Facility (MOF) Object Management Group (OMG) metamodelljével használható, beleértve az UML-t is. Az Object Constraint Language egy precíz szövegnyelv, amely olyan kényszer- és objektumlekérdezési kifejezéseket biztosít bármely MOF-modellhez vagy meta-modellhez, amelyet egyébként nem lehet diagramos jelöléssel kifejezni. Az OCL kulcsfontosságú eleme az új OMG szabványos modellek átalakítására vonatkozó ajánlásának, a Queries/Views/Transformations (QVT) specifikációnak..
Leírás
Az OCL a Syntropy leszármazottja, egy második generációs objektum-orientált elemzési és tervezési módszer. Az OCL 1.4 definíciója egy kényszernyelvet adott meg. Az OCL 2.0-ban a definíciót kiterjesztették az általános objektumlekérdezési nyelvi definíciókra.
Az OCL utasítások négy részből állnak:
- kontextus, amely meghatározza azt a korlátozott helyzetet, amelyben az állítás érvényes
- egy tulajdonság, amely a kontextus néhány jellemzőjét képviseli (pl. ha a kontextus egy osztály, akkor egy tulajdonság lehet attribútum)
- művelet (pl. aritmetikai, halmazorientált), amely manipulál vagy minősít egy tulajdonságot, és
- kulcsszavak (pl. if, then, else, és, or, not, implies), amelyek feltételes kifejezések megadására szolgálnak.
Kapcsolat
OCL és UML
Az OCL kiegészíti az UML -t azáltal, hogy olyan kifejezéseket biztosít, amelyek nem rendelkeznek sem a természetes nyelv kétértelműségeivel, sem az összetett matematika használatának velejáró nehézségeivel. Az OCL egy navigációs nyelv is a grafikon alapú modellekhez.
OCL és MOF
Az OCL precízebbé teszi a Meta-Object Facility modellt azáltal, hogy állításokat társít metaelemeihez.
OCL és QVT
A Model Driven Engineering (MDE) vagy a modellvezérelt architektúra szempontjából különösen fontos a modelltranszformáció fogalma. Az OMG meghatározott szabványt definiált a modelltranszformációhoz MOF/QVT vagy röviden QVT néven . Jelenleg számos modelltranszformációs nyelv érhető el, például a GReAT, a VIATRA vagy a Tefkat, a QVT-szabványnak való megfelelőség különböző szintjével. Ezen nyelvek közül sok az OCL-re épül, amely a QVT- kompatibilitás fő része.
Szabályalapú érvényesítési nyelvként a Schematron az OCL alternatívájának tekinthető. A Schematron azonban az Extensible Markup Language (XML) fákhoz működik, míg az OCL lehetővé teszi a MOF -alapú modellek és metamodellek (pl. XML metaadatcsere ( XMI ) fák). Más szavakkal, az OCL az UML -hez vagy a MOF-hoz hasonlóan kapcsolódik, mint a Schematron az XML -hez. (Ne feledje, hogy a Schematron XPath segítségével navigál az XML-fákon belül. )</br> Mivel egy modellspecifikációs nyelv, amely lehetővé teszi a tervezők számára, hogy egy modellt vagy metamodellt mellékhatás-mentes annotációkkal díszítsenek, az OCL helyettesíthető olyan nyelvekkel, mint az Alloy . Az automatikus OCL generálás elvileg lehetséges természetes nyelvből. [1]
Kényszer | OCL ekvivalens |
---|---|
Az ember életkora nem negatív. | context Person inv : self.age >=0
|
Az ember fiatalabb a szüleinél. | context Person inv : self.parents->forAll(p|p.age>self.age)
|
Egy születésnap után az ember egy évvel idősebb lesz. | context Person::hasBirthday() post : self.age=self.age@pre+1
|
Egy személynek maximum 2 szülője van. | context Person inv : self.parents->size()<=2
|
Miután valakinek gyereke van, a gyerekkészlete nem üres, és nagyobb, mint korábban. | context Person::getsChild() post : self.childs->notEmpty() and self.childs->size() > self.childs@pre->size()
|
Csak nagykorú lehet autó tulajdonosa. | context Person inv : self.age<18 implies self.cars->isEmpty()
|
Az autó első regisztrációja nem lehet megépítése előtt. | context Auto inv : self.registration>=self.constructionYear
|
Minden személynek, akinek van autója, van legalább egy autója, amely fiatalabb, mint a személy. | context Person inv : self.cars->notEmpty() implies self.cars->exists( c | Calendar. YEAR - c.constructionYear < self.age)
|
Senki sem lehet a saját szülője. | context Person inv : self.parents->excludes(self)
|
Legalább egy személynek van autója. | context Person inv : Person.allInstances()->exists(p | p.cars->size() > 0)
|
Lásd még
- Számítógépes modell
- Adatleképezés
- Domainspecifikus nyelv (DSL)
- Domain-specifikus modellezés (DSM)
- Eclipse GMT projekt
- Gello kifejezési nyelv
- Az egységes modellező nyelv kifejezéseinek szószedete
- Szándékos programozás (IP)
- Az UML-eszközök listája
- Meta-modellezés
- Meta-modellezés technika
- Meta-Object Facility (MOF)
- Metaadatok
- Modell-alapú tesztelés (MBT)
- Modellvezérelt architektúra (MDA)
- Model Driven Engineering (MDE)
- Model Transformation Language (MTL)
- Modellező nyelv
- Perspektívák modellezése
- MOFM2T
- Objektumorientált elemzés és tervezés (OOAD)
- MOF lekérdezések/nézetek/transzformációk (QVT)
- Szemantikus fordítás
- Transzformációs nyelv (TL)
- UML eszköz
- Szókincs alapú átalakítás
- XMI
- XML transzformációs nyelv (XTL)
Hivatkozások
- ↑ Imran Sarwar Bajwa (2010. október 1.). „OCL Constraints Generation from Natural Language Specification, 2010”, Kiadó: IEEE. DOI:10.1109/EDOC.2010.33.
Külső linkek
- OMG OCL specifikáció
- OCL portál – Az OCL-rel kapcsolatos információk központja
- A CSUSB Számítástechnikai Tanszékének OCL oldala (rövid OCL 2.0 szintaxis)
- Octopus: OCL eszköz a precíz Uml specifikációkhoz (OCL-ellenőrző)
- Dresden OCL Toolkit (OCL Toolkit, különféle OCL-hez kapcsolódó kiadványok)
- HOL-OCL (Interaktív tételellenőrző környezet OCL-hez, különféle OCL-hez kapcsolódó publikációk)
- OCL for Java oktatóanyag a ParlezUML-on
- Cikk az EMF OCL használatáról Java kódban
- UML hivatkozási oldal a cetus-links.org oldalon
- USE (UML-alapú specifikációs környezet) (OCL-eszköz a modellellenőrzéshez, különféle OCL-hez kapcsolódó kiadványok)
- OCL oktatóanyag
- NL2OCL (OCL eszköz invariáns generáláshoz NL-ből)