Object Constraint Language
L'Object Constraint Language o OCL è un linguaggio dichiarativo formale inizialmente proposto come estensione del linguaggio di modellazione object-oriented UML e in seguito integrato come parte di UML standard. Secondo le indicazioni di OMG, OCL può essere in effetti impiegato nel contesto di qualsiasi metamodello basato su MOF, incluso UML.
L'OCL è un linguaggio testuale attraverso il quale si possono esprimere vincoli (in inglese constraint) e interrogazioni (query) che arricchiscono un modello a oggetti con informazione non esprimibile con la notazione diagrammatica prevista dal metamodello in uso. OCL è oggi inteso da OMG come un elemento chiave del nuovo standard per la trasformazione di modelli noto come QVT.
Descrizione
OCL deriva storicamente da Syntropy, un metodo di analisi e progetto object-oriented di seconda generazione. La prima versione ampiamente diffusa, OCL 1.4, consentiva di esprimere solo vincoli; in OCL 2.0 sono stati aggiunti nuovi elementi sintattici e semantici per definire interrogazioni.
Gli statement del linguaggio OCL sono costruiti a partire da quattro categorie di elementi:
- il contesto indica in quali situazioni lo statement è valido; per esempio, uno statement potrebbe applicarsi a una determinata classe;
- una proprietà rappresenta qualche caratteristica del contesto (per esempio, un attributo di una classe)
- una operazione (per esempio aritmetica o insiemistica manipola o qualifica proprietà;
- parole chiave (come
if
,then
,else
,and
,or
,not
,implies
) che vengono usate per costruire espressioni condizionali
OCL e UML
OCL estende la sintassi e la semantica base di UML consentendo di esprimere vincoli che descrivono relazioni fra diversi elementi di modello non esprimibili per via diagrammatica. Come alternativa formale alla tradizionale descrizione di tali relazioni in testo libero, garantisce una minore ambiguità e consente alcuni tipi di verifiche automatiche da parte dei tool di modellazione.
Collegamenti esterni
- The Specifica di UML (include la specifica di OCL)
- Tutorial su OCL per [[Java (linguaggio)|Java