2012-04-24 2 views
2

у меня есть вопрос:UML XMI для Ecore

В пределах моего инструмента моделирования (Enterprise Architect) Я смоделировали мета-модель UML (на основе). Теперь я хочу преобразовать метамоду в Ecore. Но я не знаю, как это сделать.

Внутри Enterprise Architect я могу экспортировать мета-модель в UML XMI. Кто-нибудь знает, можно ли преобразовать сгенерированный XMI в Ecore XMI?!

Благодаря

ответ

4

Кто-нибудь знает, можно ли преобразовать сгенерированный XMI в Ecore XMI?!

Да, это возможно - по крайней мере, в плане. Вы можете подумать о проблеме в двух частях:

  1. Что такое семантическое сопоставление? Другими словами, как вы сопоставляете концепции в исходном XMI с концепциями целевой модели eCore?
  2. Как вы реализуете эти сопоставления на практике?

Semantic Mapping

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

Я не знаю EA специально, и какие версии XMI он поддерживает. Тем не менее, это будет какой-то вариант концепций ядра UML: класс, Атрибут, эксплуатация, Ассоциация, AssociationEnd и т.д. Ecore имеет similar (if smaller) set of concepts: EClass, EAttribute, EDataType, EReference, EOperation и т.д. Там есть довольно сильная корреляция между понятия типа; например:

  • классов UML -> EClass
  • Атрибут -> EAttribute
  • операции -> EOperation

Так что отображение должно быть straighforward. В основном создайте один экземпляр ECore-эквивалента для каждой концепции UML.

Отношения немного менее очевидны, но по-прежнему возможны. ECOR не поддерживает отношения напрямую; EReference - единственное аналогичное понятие. Однако это довольно легко синтезировать ассоциации, например:

  • Один из способов судоходного UML ассоциация становится одной EReference с мин & макс мощностей копировались
  • A UML двунаправленной ассоциации становится два EReferences, один в каждом направление.Вы также должны установить свойство EOtherEnd, которое фактически говорит, что два EReferences являются частью той же ассоциации.

Надеюсь, это даст вам эту идею.

Реализация

Определив ваше концептуальное отображение есть много вариантов о том, как это сделать. Все, как правило, будут следовать одной и той же базовой модели:

Parse Source -> Map Source Concepts to Target Concepts -> генерировать целевой текст.

Вы можете использовать xslt (поскольку это просто XML-> XML-преобразование). Вы также можете использовать один из доступных наборов инструментов Model-to-model (M2M) и/или Model-to-text (M2T). См. проект моделирования затмения (M2M, M2T). Вы также можете перейти непосредственно от EA, прочитав модель с использованием API-интерфейса EA вместо генерации & синтаксического анализа XMI. Который вы выберете, будет зависеть от вашей среды, набора навыков и т. Д.

Если вы хотите посмотреть, как это могло бы выглядеть на практике, вы можете взглянуть на MagicDraw. Он обеспечивает экспорт ECore из коробки. (Обратите внимание, что это платный инструмент, но eval доступен).

Возможно, также стоит попросить Sparx напрямую: я был бы немного удивлен, если для EA не будет добавлено дополнительное расширение ECO для экспорта.

hth.


Динамика

Если ваша модель имеет динамику (государственные модели и т.д.), то у вас есть больше проблем. ECore не охватывает эти концепции вообще. Можно расширить ECore, и это может быть вариант - но это потенциально больше работает, поскольку инструменты, которые работают с ECore, будут с меньшей вероятностью понимать ваши расширения.

+0

Удивительный комментарий! Большое спасибо! – matthias

+0

добро пожаловать. Подвижность будет неплохим способом продемонстрировать признательность ... :-) – sfinnie

-1

Вы можете легко пойти от Ecore в UML, но другим способом не представляется возможным. У вас мало плагинов, но когда вы пытаетесь их использовать, это не работает.

Смежные вопросы