Sprache der Objektbeschränkung
Das Sprache der Objektbeschränkung (OCL) ist ein deklarative Sprache Beschreibung von Regeln, die sich bewerben an Einheitliche Modellierungssprache (UML) Modelle entwickelt bei IBM und ist jetzt Teil des UML -Standards. Anfangs war OCL lediglich eine formelle Spezifikationssprachweiterung für UML.[1] OCL kann jetzt mit jedem verwendet werden Meta-Objekt-Einrichtung (MOF) Objektverwaltungsgruppe (OMG) Meta-Modell, einschließlich Uml.[2] Die Sprache der Objektbeschränkung ist eine präzise Textsprache, die Einschränkungen und Objektabfrageausdrücke für ein MOF-Modell oder ein Meta-Modell bietet, das sonst nicht durch diagrammatische Notation ausgedrückt werden kann. OCL ist eine Schlüsselkomponente der neuen OMG -Standardempfehlung zum Transformieren von Modellen, den Abfragen/Ansichten/Transformationen (Qvt) Spezifikation.
Beschreibung
OCL ist ein Nachkomme von Syntropie, eine objektorientierte Analyse- und Entwurfsmethode der zweiten Generation. In der OCL 1.4 -Definition wurde eine Einschränkungssprache angegeben. In OCL 2.0 wurde die Definition so erweitert, dass die Definitionen für die Sprachabfrage im Allgemeinen Objektabfragen einbezogen werden.
OCL -Anweisungen werden in vier Teilen konstruiert:
- Ein Kontext, der die begrenzte Situation definiert, in der die Aussage gültig ist
- Eine Eigenschaft, die einige Merkmale des Kontexts darstellt (z. B. wenn der Kontext eine Klasse ist, kann eine Eigenschaft ein Attribut sein)
- eine Operation (z. B. arithmetische, setzorientierte), die eine Eigenschaft manipuliert oder qualifiziert, und
- Schlüsselwörter (z. B. wenn dann, sonst und oder, nicht, impliziert), die zur Angabe von bedingten Ausdrücken verwendet werden.
Beziehung
OCL und Uml
OCL -Ergänzungen Uml Durch die Bereitstellung von Ausdrücken, die weder die Unklarheiten der natürlichen Sprache noch die inhärente Schwierigkeit haben, komplexe Mathematik zu verwenden. OCL ist auch eine Navigationssprache für grafische Modelle.
OCL und MOF
OCL macht a Meta-Objekt-Einrichtung Modell genauer, indem Sie Behauptungen mit seinen Meta-Elementen assoziieren.
OCL und QVT
Von besonderer Bedeutung für Modellgetriebene Engineering (Mde) oder Modellgetriebene Architektur ist der Begriff von Modelltransformation. Das OMG hat einen bestimmten Standard für die Modelltransformation definiert genannt MOF/QVT oder kurz Qvt. Mehrere Modelltransformationssprachen mögen Großartig, Viatra, oder Tefkat sind derzeit verfügbar, mit unterschiedlichem Maßstab mit dem QVT -Standard. Viele dieser Sprachen sind auf OCL aufgebaut, was der Hauptteil der ist Qvt-Beachtung.
Alternativen
Eine regelbasierte Validierungssprache sein, Schematron kann als Alternative zu OCL angesehen werden. Schematron arbeitet jedoch für eine erweiterbare Markup -Sprache (XML) Bäume Während OCL es ermöglicht, zu navigieren MOF-basierte Modelle und Meta-Modelle (d. H. XML-Metadaten-Austausch (Interchange (Xmi) Bäume). Mit anderen Worten, OCL bezieht sich auf Uml oder MOF ähnlich wie sich Schematron bezieht Xml. (Beachten Sie, dass Schematron verwendet XPath in den XML -Bäumen navigieren.)
Als Modellspezifikationssprache, die es Designern ermöglicht, ein Modell oder ein Meta-Modell mit Nebeneffekt-freien Annotationen zu dekorieren, kann OCL durch Sprachen wie ersetzt werden Legierung. Die automatisierte OCL -Erzeugung ist im Prinzip aus der natürlichen Sprache möglich.[3]
Zwang | OCLäquivalent |
---|---|
Das Alter einer Person ist nicht negativ. | Kontextperson Inv: self.age> = 0 |
Eine Person ist jünger als ihre Eltern. | Kontextperson Inv: Self.Parents-> forall (p | P.age> self.age) |
Nach einem Geburtstag wird eine Person ein Jahr älter. | Kontext Person :: HasBirthday () Post: self.age=self.age@pre+1 |
Eine Person hat 2 Eltern bei Max. | Kontextperson Inv: self.Parents-> size () <= 2 |
Nachdem jemand ein Kind hat, ist sein/ihr Kindersatz nicht leer und es ist größer als zuvor. | Kontext Person :: getShild () post: self.childs-> notempy () und self.childs-> size ()> self.childs@pre-> size () |
Nur ein Erwachsener kann Besitzer eines Autos sein. | Kontextperson Inv: self.age <18 impliziert self.cars-> isempty () |
Die erste Registrierung eines Autos kann nicht vor dem Bau sein. | Kontext Auto inv: self.registration> = self.constructionyear |
Jeder Person mit einem Auto hat mindestens ein Auto, das jünger ist als die Person. | Kontextperson Inv: self.cars-> NotonMpty () impliziert self.cars-> existiert (c | calendar.year-C.Constructionyear <self.age) |
Niemand kann sein eigenes Elternteil sein. | Kontextperson Inv: Self.Parents-> Ausschließen (Selbst) |
Es gibt mindestens eine Person, die ein Auto besitzt. | context Person inv: Person.allInstances()->exists(p | p.cars->size() > 0) |
Siehe auch
- Computermodell
- Datenzuordnung
- Domänenspezifische Sprache (DSL)
- Domänenspezifische Modellierung (DSM)
- Finsternis GMT -Projekt
- Gello -Ausdruckssprache
- Glossar der einheitlichen Modellierungssprachenbegriffe
- Absichtliche Programmierung (IP)
- Liste der UML -Tools
- Meta-Modelling
- Meta-Modelling-Technik
- Meta-Objekt-Einrichtung (MOF)
- Metadaten
- Modellbasierte Tests (MBT)
- Modellgetriebene Architektur (MDA)
- Modellgetriebene Engineering (MDE)
- Modelltransformationssprache (MTL)
- Modellierungssprache
- Modellierung von Perspektiven
- MOFM2T
- Objektorientierte Analyse und Design (Ooad)
- MOF -Abfragen/Ansichten/Transformationen (Qvt)
- Semantische Übersetzung
- Transformationssprache (TL)
- UML -Werkzeug
- Vokabularbasierte Transformation
- Xmi
- XML -Transformationssprache (XTL)
Verweise
- ^ Objektverwaltungsgruppe (OMG); Sprachspezifikation von Objektbeschränkungen, Kapitel 7 von OMG Unified Modeling Sprachspezifikation, Version 1.3, März 2000 (Erstausgabe)
- ^ Objektverwaltungsgruppe (OMG); Objektbeschränkungssprache OMG verfügbare Spezifikation Version 2.0, Mai 2006
- ^ Imran Sarwar Bajwa (Oktober 2010). "OCL -Einschränkungen der Erzeugung aus der natürlichen Sprachspezifikation, 2010". IEEE. doi:10.1109/edoc.2010.33. S2CID 7495256.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe)
Externe Links
- OMG OCL -Spezifikation
- OCL -Portal - Das Zentrum für OCL -bezogene Informationen
- OCL -Seite der Informatikabteilung von CSUSB (kurze OCL 2.0 -Syntax)
- Oktopus: OCL -Tool für präzise UML -Spezifikationen (OCL Checker)
- Dresden OCL Toolkit (OCL Toolkit, verschiedene OCL -bezogene Veröffentlichungen)
- Holocl (Eine interaktive Theorem -Proof -Umgebung für OCL, verschiedene OCL -bezogene Veröffentlichungen)
- OCL für Java Tutorial über Parlezuml
- Artikel über die Verwendung von EMF -OCL im Java -Code
- UML-Linkseite auf Cetus-links.org
- Verwendung (UML-basierte Spezifikationsumgebung) (OCL -Tool zur Modellvalidierung, verschiedene OCL -bezogene Veröffentlichungen)
- OCL -Tutorial
- NL2ocl (OCL -Tool für die invariante Generation von NL)