Object Constraint Language
OCL の元となったのは、第二世代のオブジェクト指向分析・設計手法 Syntropy である。OCL 1.4 で制約言語の仕様が追加された。OCL 2.0 では、汎用のオブジェクト・クエリ言語の定義を含むよう拡張された。
OCL 言語の構文は以下の4つに分けられる:
コンテキスト - 文が正しいといえる状況の制限を定義する
プロパティ - コンテキストの特性を表現する(例えば、コンテキストがクラスである場合、プロパティはその属性となる)
オペレーション - プロパティを操作・修正する演算(算術演算や集合的演算)
キーワード - 条件などを表現する(if、then、else、and、or、not、implies など)