Zum Inhalt springen

Object Constraint Language

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 29. Januar 2007 um 19:34 Uhr durch 84.63.37.33 (Diskussion) (Links). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Object Constraint Language (OCL) ist Bestandteil der 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. Ihre Syntax ist an die Programmiersprache Smalltalk angelehnt. OCL ist seit der UML-Version 1.1 Bestandteil der UML.

Es werden 6 Arten von Constraints (Zusicherungen) unterschieden:

  • Invariants müssen zu jeder Zeit für eine Instanz oder Assoziation gelten.
  • Preconditions/Postconditions müssen zu dem Zeitpunkt gelten, an dem die Ausführung der zugehörigen Operation beginnt/endet.
  • Initial & derived Values stellen Bedingungen für Ausgangs- und abgeleitete Werte dar
  • Body Definition von Operationen mit isQuery = true.
  • Guards müssen gelten, wenn ein Zustandsübergang beginnt.

Ein Constraint ist immer definiert im Rahmen eines Kontexts. Dies ist ein beliebiges Modell Entity, wie z.B. eine Klasse, ein Typ, ein Interface oder eine Komponente. Man unterscheidet den Kontext Typ und die Kontext Instanz. Auf letzteren beziehen sich die Angaben eines Constraints. Z.B. 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.

Ein wesentliches Einsatzgebiet der OCL besteht auch in der Modelltransformation. Hier ist OCL ein zentraler Bestandteil vieler Transformationssprachen, wie QVT oder ATL.

OCL und UML

OCL versteht sich als Ergänzung zu UML 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 z.B. um die Beschränkung eines Atttibuts auf einen Wertebereich handeln, oder um einzuhaltende Restriktionen zwischen Objekten. OCL Ausdrücke sind wiederspruchsfrei und können von Programmen verarbeitet werden und tragen somit zur Code-Generierung bei, wobei sie nicht das Modell verändern, sondern mehr ü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.