将UML模型保存为XMI歧义

时间:2018-05-03 19:42:05

标签: uml xmi

我在维基百科上的XMI文章中找到了这句话:

  

目前不同之间存在着几种不兼容性   XMI的建模工具供应商实现,甚至在交换之间   抽象模型数据。

我想知道尽管使用了一个记录良好的标准,但工具是不兼容的。在查看了UML和XMI的文档以及其他人的问题之后,我发现没有XML Scheama或DTD用于保存为XMI的UML模型。

根据这个问题的最佳答案 - https://stackoverflow.com/a/36885550/9329778 - 检查XMI是否格式正确的正确方法应该是通过一致的UML模型来验证/处理它。

我在XMI 2.5.1文档的“7.3.2模型类表示”一节中也发现了这一点:

  

默认情况下,XMI允许您使用XML序列化功能   元素或XML属性;但是,XMI允许您指定如何操作   如果你愿意,可以序列化它们。

这让我觉得这就是问题的根源。

我的问题是:

  1. 是否有官方指南严格描述如何使用XMI保存UML模型?我表示UML语法meatamodel(可以从OMG网站下载)。

  2. 如果第一个问题的答案是“否” - 是否意味着不同的建模工具可以不同地执行相同UML模型的序列化,即使它们使用相同版本的XMI?

1 个答案:

答案 0 :(得分:2)

  1. 参考是current document by OMG
  2. 虽然有一个“标准”,但定义它的人来自OMG帽子下的不同供应商。当然,每个供应商都试图让他的绵羊保持干燥和温暖(如果可能的话,可能会让其他人在雨中留下 - 好吧)。这简单地导致了对任何人开放的标准。虽然OMG(“试图”坚持这些标准)允许添加供应商个人扩展通过,但每个供应商都利用了这个附录并对自己有利。这就是我们在不同论坛中看到的:为什么我不能将我的模型(完全/完全)从供应商A的工具导入到供应商B的工具中。这是一个十字架。
  3. 注意:关于1:否。您无法获取此文档并从模型创建XMI。它不是那样写的。我所做的是创建一个简单的模型,导出它(从我最喜欢的工具),看看已经创建了什么。然后我尝试将其导入另一个工具(找到它失败的地方)。甚至可以在同一工具中导出和导入,以查找之后遗漏的内容。