logo search
Учебное пособие по циклу лабораторных работ Технологии разработки программного обеспечения

Язык объектных ограничений ocl

Архитектура MDAставит на первое место модель приложения и поэтому непосредственно связана с языком, на котором такие модели создаются, – язык унифицированного моделированияUML. Один из самых серьезных и справедливо критикуемых недостатков языка моделированияUML– предоставление разработчику только визуальных средств моделирования. Эти средства абстрактны и поэтому далеко не всегда способны точно и формально отразить тот или иной нюанс функционирования проектируемой системы. Именно необходимость формализации описания условий и ограничений, накладываемых на элементы диаграмм классов, вызвало появлениеOCL(ObjectConstraintLanguage). Конечно, такие условия могут быть сформулированы и на естественном языке, однако, он не будет являться строгим, и может допускать неоднозначные трактовки.

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

Язык OCLсодержит развитые средства манипуляции над множествами объектов, поэтому он хорошо подходит для решения задач, где обычно применяется язык запросов к реляционным базам данныхSQL. ЯзыкOCLпозволяет организовывать запросы с большей эффективностью и на более высоком, модельном уровне абстракции, нежели языкSQL.

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

При этом средствами языка OCLневозможно изменить сами элементы модели (классы, атрибуты, отношения). Среда, вычисляющая выражениеOCL, просто определяет результирующее значение, которое может впоследствии использоваться (хотя это и не обязательно).

OCLбыл разработан в корпорацииIBM, в 1997 году вышла спецификация языка версии 1.1, в разработке и согласовании которой приняли участие такие компании, какRational,Microsoft,Oracle,Hewlett-Packardи ряд других. Сильной стороной языкаOCLоказалась независимость от платформы реализации и легкая адаптация к разным средствам программирования.