OCL (object constraint language)

Object Constraint Language (OCL) ist eine deklarative Sprache für die Definition von Constraints (Einschränkungen) auf UML-Modellen, so dass Ausdrücke keine Nebeneffekte haben. Dabei wird den graphischen UML-Modellen präzisierende Information in textueller Notation hinzugefügt.


Die primäre Anwendung der OCL liegt in der Formulierung von Invarianten im Sinne von Einschränkungen der Gültigkeit von Objektmodellen. Eine Invariante ist dabei ein Constraint, das für ein Objekt während seiner ganzen Lebensdauer wahr sein sollte. Daneben dient die OCL auch zur Spezifikation von Well-Formedness Rules (WFR) für UML-Modelle auf Meta-Modell-Ebene.

Die entwicklung der Object Constraint Language (OCL)

Object Constraint Language (OCL) wurde ursprünglich von IBM bereits 1995 als Business Engineering Language entworfen. Später wurde OCL dann als formale Spezifikations-Sprache im Rahmen der UML-Spezifikation (Unified Modeling Language) von der Object Management Group (OMG) standardisiert. Eine entsprechende Spezifikation ist über den u.g. Link einsehbar.

Die OCL ist keine Programmiersprache, und sie stellt keinerlei Konstrukte für Kontrollflusssteuerung zur Verfügung. Mit Verwendung der OCL sind Anforderungen konkreter zu spezifizieren, und deren Umsetzung in Quellcode-Implementierungen ohne weitere Interpretations- und Reibungsverluste zu gewährleisten. Eine weitere Möglichkeit des Einsatzes von OCL ergibt sich im Rahmen von Model Driven Architecture (MDA) speziell im Zusammenhang mit Modelltransformationen und diesbezüglichen Sprachen wie QVT oder ATLAS Transformation Language (ATL).

OCL für die Beschreibung von Eigenschaften

Für die formale Beschreibung von Eigenschaften objektorientierter Systeme wird die Object Constraint Language (OCL) eingesetzt. Mit Hilfe von OCL können Klassen- und Komponenten-Invarianten sowie Vor- und Nachbedingungen von Operationen ( Methoden) spezifiziert werden. Auch Abfrageausdrücke und Ableitungsregeln für berechenbare Attribute sind darstellbar. Weiterhin sind Einschränkungen für Gruppen von Modellelementen beispielsweise im Zusammenhang mit Assoziationen möglich. Dabei ist die OCL ausgerichtet auf einfache Lesbarkeit und Handhabbarkeit, wenn gleich OCL auch auf Mengentheorie und Prädikatenlogik basiert.

OCL in seiner gesamten Mächtigkeit an dieser Stelle darzustellen, würde bei weitem den Umfang des vorliegenden Artikels überschreiten - hier sei auf die OCL-Spezifikation verwiesen. Dennoch sollen hier einige wichtige Charakteristika von OCL kurz zusammengefasst werden:

Beispiele für OCL-Ausdrücke

Beispiele für OCL-Ausdrücke

  • Ein OCL-Ausdruck wird immer im Rahmen eines bestimmten Kontexts definiert. Sofern die Zuordnung nicht graphisch ersichtlich ist, so wird diese durch das Schlüsselwort context explizit angegeben.
  • Die Art des Ausdruckes wird durch das dem Kontext folgende Schlüsselwort angegeben, wobei sieben unterschiedliche Arten unterschieden werden: Invarianten für Klassen und Typen in Klassendiagrammen, Invarianten für Stereotypen, Vor- und Nachbedingungen für Operationen, Wächterbedingungen (Guards) für Zustandsübergänge, Constraints von Operationen, Ableitungsregeln von Attributen und Ziele von Nachrichten und Aktionen.
  • Die OCL kennt einfache Vergleichstypen ähnlich denen in SQL.
  • Es existieren Sammlungstypen (Collections) und diesbezügliche Operationen (im Beispiel mit select() zu sehen). Dabei werden sehr mächtige Iterator-Operationen unterstützt, die sich stark an mathematischen Ausdrücken orientieren.
  • Ein OCL kann niemals den Zustand von Objekten während seiner Auswertung verändern - OCL ist frei von Seiteneffekten.
  • OCL ist eine typbasierte (auch typsichere) Sprache, daher müssen alle Ausdrücke immer typkonform sein.
  • Navigationen über Beziehungen sind mit dem Punkt-Operator (.) möglich.
  • Die OCL kann mit Vererbung und Polymorphie umgehen.
http://www.omg.org/spec/OCL/2.0/

Informationen zum Artikel
Deutsch:
Englisch: object constraint language - OCL
Veröffentlicht: 31.10.2013
Wörter: 536
Tags: #Programmiersprachen
Links: ATL (ATLAS transformation language), Attribut, Information, Klasse, Lebensdauer