Object Constraint LanguageDie Object Constraint Language (OCL) ist eine Sprache, mit der Softwarearchitekten notwendige Randbedingungen bei der Modellierung von Computerprogrammen formal festlegen können. Die OCL ist Bestandteil der weltweit etablierten Modellierungssprache Unified Modeling Language (UML) und dient unter anderem der textuellen Spezifikation von Invarianten in Klassendiagrammen, von Bedingungen in Sequenzdiagrammen oder der Formulierung von Vor- und Nachbedingungen für Methoden. Die OCL-Syntax ist an die Programmiersprache Smalltalk angelehnt. OCL ist seit der UML-Version 1.1 Bestandteil der UML. Ein wesentliches Einsatzgebiet der OCL besteht auch in der Modelltransformation. Hier ist OCL ein zentraler Bestandteil vieler Transformationssprachen, wie QVT oder ATL. Die aktuelle Version der OCL ist 2.4.[1] Constraints in der OCLEs werden sieben Arten von Constraints (Zusicherungen) unterschieden:
Ein Constraint ist immer definiert im Rahmen eines Kontexts. Dies ist ein beliebiges Model Entity, wie beispielsweise eine Klasse, ein Typ, ein Interface oder eine Komponente. Man unterscheidet den Kontexttyp und die Kontextinstanz. Auf letztere beziehen sich die Angaben eines Constraints. Beispielsweise kann er festlegen, dass für eine Instanz der Klasse Banane der Wert des Attributs Krümmung nicht größer als X sein darf. Object steht hier für eine Komponente eines beliebigen Systems, diese soll genauer spezifiziert, definiert oder beschrieben werden. Constraint steht für eine Begrenzung oder Einschränkung; diese kann maximale oder minimale Werte annehmen, beispielsweise die maximale Anzahl gleichzeitiger Zugriffe auf eine Datenbank, oder die maximale Höhe eines Bauobjektes. Language steht hier nicht für eine formale Computersprache, sondern vielmehr für eine auf jede Implementierung anwendbare weniger formale Sprache. OCL und UMLDie OCL ist als Ergänzung zu UML konzipiert und soll die Modellierung von Software noch präziser gestalten. Während in UML Strukturen, Abläufe und Beziehungen zwischen Objekten modelliert werden, werden in OCL zusätzlich die Randbedingungen eines Modells spezifiziert. Dabei kann es sich beispielsweise um die Beschränkung eines Attributs auf einen Wertebereich handeln, oder um einzuhaltende Restriktionen zwischen Objekten. OCL-Ausdrücke sind widerspruchsfrei und können von Programmen verarbeitet werden. Sie tragen somit zur Code-Generierung bei, wobei sie jedoch nicht das Modell verändern, sondern überwachen. UML eignet sich besser für die Entwicklung eines Modells, weil Diagramme leichter zu verstehen sind als eine textuelle Repräsentation des Modells. OCL alleine ist ungeeignet für die Modellierung von Software. BeispielDas folgende UML-Klassendiagramm verdeutlicht die OCL und lässt verschiedene Bedingungen in OCL formulieren:
Literatur
WeblinksEinzelnachweise |
Portal di Ensiklopedia Dunia