Ugrás a tartalomhoz

Object Constraint Language

A Wikipédiából, a szabad enciklopédiából
A lap korábbi változatát látod, amilyen Ardogina (vitalap | szerkesztései) 2022. június 22., 10:27-kor történt szerkesztése után volt. Ez a változat jelentősen eltérhet az aktuális változattól. (Készült a(z) „Object Constraint Language” oldal lefordításával)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

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:

  1. kontextus, amely meghatározza azt a korlátozott helyzetet, amelyben az állítás érvényes
  2. 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)
  3. művelet (pl. aritmetikai, halmazorientált), amely manipulál vagy minősít egy tulajdonságot, és
  4. 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]

Példák
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

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

Sablon:Query languages