我想了解一些关于如何计算两个UML模型之间(集合?)差异的参考和想法。基本上,我有一个系统(用UML / xmi表示),对于这个系统,可以应用几个模式(也用UML / xmi表示)。
例如,我们可以将模式a应用于将模式b应用于系统的结果 - Pa(Pb(S))
。我希望然后计算dif(Pb, S)
然后dif(Pa, S)
,因为在应用模式之后,合并的系统可以被视为原始系统。
我正在寻找参考文献(在文献中没有)和算法,因为我不想重新发明轮子。我最终会用Java编写代码。
提前致谢,
佩德罗
答案 0 :(得分:2)
使用Eclipse EMF Compare,您可以比较两个不同的EMF模型实例。由于UML在Eclipse中表示为EMF模型实例,因此您可以使用它来比较UML模型。只需安装EMF Compare,在包浏览器(或您使用的任何视图)中标记您的UML模型,然后选择Compare - >彼此...从上下文菜单中。比较编辑器允许您将差异保存为.emfdiff文件。
答案 1 :(得分:2)
我不能指出你的确切文献,但如果你不能/不能参加上面的EMF解决方案,请考虑一下: UML模型是图形(我需要考虑一下边缘和顶点是什么,但无论如何)。为了获得差异,您需要顶点和边集的symmetric difference。这样,您只能获得其中一个图表中的所有内容。如果使用应用的模式计算原始模型与模型之间的对称差异,则可以准确地获得模型对模型所做的操作。