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:

  1. Ein Kontext, der die begrenzte Situation definiert, in der die Aussage gültig ist
  2. Eine Eigenschaft, die einige Merkmale des Kontexts darstellt (z. B. wenn der Kontext eine Klasse ist, kann eine Eigenschaft ein Attribut sein)
  3. eine Operation (z. B. arithmetische, setzorientierte), die eine Eigenschaft manipuliert oder qualifiziert, und
  4. 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]

Beispiele
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

Verweise

  1. ^ Objektverwaltungsgruppe (OMG); Sprachspezifikation von Objektbeschränkungen, Kapitel 7 von OMG Unified Modeling Sprachspezifikation, Version 1.3, März 2000 (Erstausgabe)
  2. ^ Objektverwaltungsgruppe (OMG); Objektbeschränkungssprache OMG verfügbare Spezifikation Version 2.0, Mai 2006
  3. ^ 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