Связь между диаграммами классов и OCL

Мне известно следующее:

  • OCL — это язык ограничений, который указывает ограничения на мои модели диаграмм классов.
  • Я знаю, что в мире OMG для диаграмм классов есть 3 уровня моделей: M1 (модель), M2 (мета-мода), M3 (мета-мета-модель)
  • M3: определяет, что такое диаграмма классов и из чего она состоит.
  • M2: метамодель моей проблемы/области (например, метамодель полки с книгами)
  • M3: экземпляр модели (например, полка с двумя определенными книгами)

Что я хотел бы знать:

  • Существует ли общая метамодель для диаграмм классов и OCL; в основном то, что определяет отношения между элементами модели и ограничениями
  • Я полагаю, это должно быть как-то определено на уровне M1

Я спрашиваю, потому что:

  • Я хотел бы определить метамодель для языка ограничений (облегченного OCL), которая позволила бы мне рассуждать об элементах моей модели (книги на полке).
  • Как мне связать метамодели моей области и моего языка ограничений?

person JennyDong    schedule 17.09.2019    source источник
comment
Ваши мета-уровни неверны: en.wikipedia.org/wiki/Meta-Object_Facility   -  person qwerty_so    schedule 18.09.2019


Ответы (1)


Спецификация OCL [1] определяет метамодель для OCL, однако существует множество проблем, которые означают, что практические инструменты должны «улучшать» ее собственными способами. Новый Pivot-вариант Eclipse OCL создает прототипы решений проблем спецификации OMG и производит сериализацию XMI, которая вызывает доверие. Он использует грамматику Xtext [2], которую вы можете использовать в качестве отправной точки. Это покажет, какое семантическое разрешение необходимо для разрешения частей «a.b.c.d». Нелегко.

Общая метамодель [3] для Pivot OCL создается автоматически путем слияния вкладов UML и OCL.

Поскольку OCL может использоваться для ограничения стереотипов или метамоделей или даже во время выполнения, OCL может находиться между и парой уровней Mn/Mn+1.

Если вам удастся создать точный полный облегченный синтаксический анализатор, поделитесь им.

[1] https://www.omg.org/spec/OCL/2.4

[2] https://git.eclipse.org/c/ocl/org.eclipse.ocl.git/tree/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/EssentialOCL.xtext

[3] https://git.eclipse.org/c/ocl/org.eclipse.ocl.git/tree/plugins/org.eclipse.ocl.pivot/model/Pivot.ecore

person Ed Willink    schedule 19.09.2019