Язык объектных ограничений - Object Constraint Language
Эта статья должна быть обновлено.Апрель 2018 г.) ( |
В Язык объектных ограничений (OCL) это декларативный язык описание правил, применимых к Единый язык моделирования (UML) модели, разработанные в IBM и теперь является частью стандарта UML. Первоначально OCL был просто расширением формального языка спецификаций для UML.[1] OCL теперь можно использовать с любым Мета-объектный объект (MOF) Группа управления объектами (О, МОЙ БОГ) метамодель, включая UML.[2] Язык объектных ограничений - это точный текстовый язык, который обеспечивает выражения ограничений и объектных запросов для любой модели MOF или метамодели, которые иначе не могут быть выражены в схематической нотации. OCL - ключевой компонент новой стандартной рекомендации OMG по преобразованию моделей, запросов / представлений / преобразований (QVT ) Технические характеристики.
Описание
OCL является потомком Синтропия, объектно-ориентированный метод анализа и проектирования второго поколения. В определении OCL 1.4 указан язык ограничений. В OCL 2.0 определение было расширено за счет включения общих определений языка объектных запросов.
Операторы OCL состоят из четырех частей:
- контекст, который определяет ограниченную ситуацию, в которой утверждение действительно
- свойство, которое представляет некоторые характеристики контекста (например, если контекст является классом, свойство может быть атрибутом)
- операция (например, арифметическая, ориентированная на набор), которая манипулирует или квалифицирует свойство, и
- ключевые слова (например, if, then, else и, or, not, подразумевает), которые используются для определения условных выражений.
Связь
OCL и UML
Добавки OCL UML путем предоставления выражений, в которых нет ни двусмысленностей естественного языка, ни трудностей, присущих использованию сложной математики. OCL также является языком навигации для моделей на основе графов.
OCL и MOF
OCL делает Мета-объектный объект модель более точна, связывая утверждения с ее метаэлементами.
OCL и QVT
Особое значение имеет Модельно-ориентированная инженерия (MDE) или управляемая моделями архитектура это понятие Преобразование модели. В О, мой бог определил конкретный стандарт преобразования модели, называемый MOF / QVT или короче QVT. Несколько языков преобразования моделей, например Отличный, ВИАТРА, или Тефкат в настоящее время доступны с различными уровнями соответствия стандарту QVT. Многие из этих языков построены на основе OCL, который является основной частью QVT -соблюдение.
Альтернативы
Будучи языком проверки, основанным на правилах, Схематрон можно рассматривать как альтернативу OCL. Однако Schematron работает с Extensible Markup Language. (XML) деревья в то время как OCL позволяет перемещаться Минфин модели и метамодели (например, обмен метаданными XML (XMI ) деревья). Другими словами, OCL относится к UML или MOF аналогично тому, как Schematron относится к XML. (Обратите внимание, что Schematron использует XPath для навигации по деревьям XML.)
Будучи языком спецификации модели, позволяющим дизайнерам украшать модель или метамодель аннотациями без побочных эффектов, OCL можно заменить такими языками, как Сплав. Автоматическая генерация OCL в принципе возможна из естественного языка.[3]
Ограничение | Эквивалент OCL |
---|---|
Возраст человека не отрицательный. | контекст Человек inv: self.age> = 0 |
Человек моложе своих родителей. | контекст Человек inv: self.parents-> forAll (p | p.age> self.age) |
После дня рождения человек становится старше на год. | контекст Человек :: hasBirthday () сообщение: self.age=self.age@pre+1 |
У человека не более 2 родителей. | контекст Человек inv: self.parents-> size () <= 2 |
После того, как у кого-то родился ребенок, его детский набор не пустой, и он больше, чем раньше. | контекст Person :: getsChild () сообщение: self.childs-> notEmpty () и self.childs-> size ()> self.childs@pre-> size () |
Владельцем автомобиля может быть только взрослый человек. | контекст Человек inv: self.age <18 подразумевает self.cars-> isEmpty () |
Первая регистрация автомобиля невозможна до момента постройки. | контекст Авто inv: self.registration> = self.constructionГод |
У каждого человека, у которого есть машина, есть хотя бы одна машина моложе этого человека. | контекст Человек inv: self.cars-> notEmpty () подразумевает self.cars-> существует (c | Календарный год - c.constructionYear |
Никто не может быть самим себе родителем. | контекст Человек inv: self.parents-> исключает (сам) |
Есть по крайней мере один человек, у которого есть машина. | контекст Человек inv: Person.allInstances () -> существует (p | p.cars-> size ()> 0) |
Смотрите также
- Компьютерная модель
- Отображение данных
- Специфический для домена язык (DSL)
- Доменно-ориентированное моделирование (DSM)
- Затмение Проект GMT
- Язык выражений Gello
- Глоссарий терминов единого языка моделирования
- Преднамеренное программирование (IP)
- Список инструментов UML
- Мета-моделирование
- Техника мета-моделирования
- Мета-объектный объект (MOF)
- Метаданные
- Тестирование на основе модели (ОБТ)
- Модельно-управляемая архитектура (MDA)
- Модельно-ориентированная инженерия (MDE)
- Язык преобразования модели (MTL)
- Язык моделирования
- Перспективы моделирования
- MOFM2T
- Объектно-ориентированный анализ и дизайн (OOAD)
- MOF запросы / представления / преобразования (QVT)
- Семантический перевод
- Язык трансформации (TL)
- Инструмент UML
- Преобразование на основе словарного запаса
- XMI
- Язык преобразования XML (XTL)
использованная литература
- ^ Группа управления объектами (OMG); Спецификация языка объектных ограничений, Глава 7 Спецификация унифицированного языка моделирования OMG, Версия 1.3, март 2000 г. (первое издание)
- ^ Группа управления объектами (OMG); Язык объектных ограничений Доступная спецификация OMG Версия 2.0, Май 2006 г.
- ^ Имран Сарвар Баджва (октябрь 2010 г.). «Генерация ограничений OCL из спецификации естественного языка, 2010». IEEE. Дои:10.1109 / EDOC.2010.33. S2CID 7495256. Цитировать журнал требует
| журнал =
(Помогите)
внешние ссылки
- Спецификация OMG OCL
- Портал OCL - центр информации, связанной с OCL
- Страница OCL Департамента компьютерных наук CSUSB (краткий синтаксис OCL 2.0)
- Octopus: инструмент OCL для точных спецификаций Uml (Проверка OCL)
- Набор инструментов Dresden OCL (OCL Toolkit, различные публикации, связанные с OCL)
- HOL-OCL (Интерактивная среда доказательства теорем для OCL, различные публикации, связанные с OCL)
- Учебник OCL для Java на ParlezUML
- Статья об использовании EMF OCL в Java-коде
- Страница ссылок UML на cetus-links.org
- ИСПОЛЬЗОВАНИЕ (среда спецификации на основе UML) (Инструмент OCL для проверки модели, различные публикации, связанные с OCL)
- OCL учебник
- NL2OCL (Инструмент OCL для генерации инвариантов из NL)
Статья основана на материалах, взятых из Бесплатный онлайн-словарь по вычислительной технике до 1 ноября 2008 г. и зарегистрированы в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.