OCL

Object Constraint Language (OCL, объектный язык ограничений) - это текстовый язык, который служит для определения ограничений и запросов. Он не предназначен для написания действий или выполнимого кода. OCL предназначен для создания навигационных выражений, логических и прочих запросов. Его можно использовать для описания ограничений, сторожевых условий, действий, пред- и постусловий, формальных утверждений и прочих выражений, принятых в языке UML.

Любое выражение OCL возвращает некоторое значение, при этом средствами OCL невозможно изменять ни диаграммы классов UML, ни значения атрибутов классов. OCL не является языком программирования в обычном смысле и не предназначен для управления логикой функционирования модели.

UML диаграммы, такие как диаграммы классов, обычно не достаточно прозрачны для определения всех аспектов описания. Существует необходимость в описании дополнительных ограничений на объекты в данной модели. Такие ограничения часто определены на обычном языке. Практика показала, что это всегда даёт результат в случае двусмысленности. Формальные языки были созданы как раз для описания двусмысленных ограничений. Неудобство традиционных формальных языков в том, что они могут быть использованы только людьми хорошей математической базой, но сложны для обычных разработчиков приложений. OCL был разработан для избежания этого неудобства. Это формальный язык на котором легко писать и легко читать. Он был разработан, как язык для бизнес-моделирования отделении IBM Insurance, и имеет свои начала в методе Syntropy.

Функции

Язык OCL играет чрезвычайно важную роль, выполняя следующие основные функции:

  1. навигация по элементам модели (классам, атрибутам, ассоциациям);
  2. задание условий и ограничений на элементы модели.

Альтернативы

  • Schematron (но только для XML-деревьев, для MOF и XMI не подойдёт)
  • Alloy
  • NL2OCL