2

我有个问题:

在我的建模工具(Enterprise Architect)中,我建模了一个元模型(基于 UML)。现在我想将元模型转换为 Ecore。但我不知道该怎么做。

在 Enterprise Architect 中,我可以将元模型导出到 UML XMI。有谁知道是否可以将生成的 XMI 转换为 Ecore XMI?!

谢谢

4

2 回答 2

4

有谁知道是否可以将生成的 XMI 转换为 Ecore XMI?!

是的,这是可能的——至少在大纲上是这样。您可以将问题分为两部分:

  1. 什么是语义映射?换句话说,您如何将源 XMI 中的概念映射到目标 eCore 模型中的概念?
  2. 您将如何在实践中实现这些映射?

语义映射

我在这里假设您的元模型专注于静态结构。ECore 不支持声明 EOperations 之外的动态概念。如果相关,请在下面详细了解动态。

我不知道具体的 EA,也不知道它支持哪个版本的 XMI。但是,它将是核心 UML 概念的一些变体:Class、Attribute、Operation、Association、AssociationEnd 等。eCore 具有类似(如果更小)的一组概念: 、、、、、、等。 “类型”概念;例如:EClassEAttributeEDataTypeEReferenceEOperation

  • UML 类 --> EClass
  • 属性 --> EAttribute
  • 操作 --> E操作

所以那里的映射应该是直截了当的。基本上为每个 UML 概念创建一个等效的 ECore 实例。

关系不太明显,但仍然可行。ECore 不直接支持关系;EReference是唯一类似的概念。然而,合成关联非常容易,例如:

  • 单向可导航的 UML 关联变成单一EReference的,复制了最小和最大基数
  • UML 双向关联变为两个EReferences,每个方向一个。您还应该设置EOtherEnd属性,这实际上表示两者EReferences是同一关联的一部分。

希望这能给你这个想法。

执行

在定义了你的概念映射之后,有很多关于如何去做的选择。所有人通常都遵循相同的基本模型:

解析源 --> 将源概念映射到目标概念 --> 生成目标文本。

您可以使用 xslt(因为它只是一个 XML->XML 转换)。您还可以使用众多可用的模型到模型 (M2M) 和/或模型到文本 (M2T) 工具包之一。参见例如日食建模项目(M2MM2T)。您也可以通过使用 EA API 读取模型而不是生成和解析 XMI 来直接从 EA 获取。你选择哪一个取决于你的环境、技能等。

如果你想看看它在实践中会是什么样子,你可以看看MagicDraw。它提供开箱即用的 ECore 导出。(请注意,这是一个付费工具 - 但 eval 可用)。

直接询问 Sparx 可能也值得:如果 EA 没有可用的 ECore 导出插件/插件,我会有点惊讶。

hth。


动力学

如果您的模型具有动力学(状态模型等),那么您将遇到更多问题。ECore 根本不涵盖这些概念。扩展 ECore 是可能的,这可能是一种选择 - 但它可能需要更多的工作,因为与 ECore 一起使用的工具不太可能理解您的扩展。

于 2012-04-25T21:23:36.040 回答
-1

您可以轻松地从 Ecore 转到 UML,但另一种方式实际上是不可能的。您的插件很少,但是当您尝试使用它们时,它不起作用。

于 2012-04-24T22:39:06.750 回答