Object Constraint Language (OCL)

Die OCL dient dazu, Bedingungen für Methoden/Klassen zu definieren.
Dieses Kapitel habe ich zusammengestellt mit Hilfe von:

Es gibt zwei Typen von Constraints



Ausdrücke/Operatoren



Constraints formulieren

Regeln für den Aufbau einer Constraint

Weitere Möglichkeiten



Collections

Die meisten Assoziationen führen zu Collections, da oft eine 0..*-Beziehung besteht.

OCL und Rational XDE

Rational XDE unterstützt OCL nur als Invarianten auf Klassenebene.
Um eine Constraint zuzufügen wählt man in der Toolbox zuerst "Constraint" und fügt sie ins Diagramm ein.
Constraint in Toolbox
Anschließend zieht man ein "Constraint Attachment" von der Klasse zur Constraint.
In den geschweiften Klammern trägt man die Constraint ein (ohne "context" oder "inv", nur die Bedingung). Über die Properties der Constraint kann man sie weiter konfigurieren. Ob es sich um eine "Invariant", "Precondition" oder "Postcondition" handelt kann man unter "Stereotype" einstellen. Im Screenshot ist das eine "Invariant", die sicherstellt dass eine Membervariable "iCount" immer einen positiven Wert hat. Auswirkungen dieser Stereotypen habe ich allerdings nicht gefunden ;-)
Stereotypes
Wichtig: in den Properties der Constraint bei "Body Language" den Wert "OCL" eintragen, damit eine Validierung möglich ist.
Im Menü "Modeling" kann man die Option "Validate" verwenden um die aktuell gewählte Constraint zu prüfen. Falls man das gesamte Diagramm validieren will, geht das über Menü "Diagram" -> "Validate Diagram". Eventuell muss man vorher die Datentypen der beteiligten Variablen noch dem Rational bekannt machen (falls sie nicht Standard sind).


Dresden OCL Toolkit

Von der TU Dresden gibt es (im Rahmen einer Diplomarbeit) ein OCL-Toolkit.
Projektseite: http://dresden-ocl.sourceforge.net/
Es bietet u.a. einen Parser und einen Together-Plugin. Dieser läuft zwar mit unserer Version, aber unterstützt nur OCL 1.5, also z.B. keine Methoden-Constraints und bei Collections nicht viel.
Den Together Plugin habe ich hier (ocl-together.jar) vorcompiliert als JAR-Datei bereitgestellt, eine Installationsansleitung gibt es hier: http://dresden-ocl.sourceforge.net/together_integration.html.
Des weiteren enthält das Projekt einen OCL 2.0-Parser, allerdings nicht als Together-Plugin. Ist wohl mehr als Grundlagenarbeit gedacht. Deshalb können wir nicht viel damit anfangen.

Version 1.0.2.0, Stand 08.06.2005
Historie:
1.0.0.0 (26.05.2005): Erstellt
1.0.0.1 (30.05.2005): Fipptehler behoben
1.0.1.0 (31.05.2005): OCL in Rational erweitert
1.0.2.0 (08.06.2005): Dresden OCL Toolkit