是否有任何工具可以使UML模型与代码完全无缝地保持同步?

时间:2010-07-27 01:24:01

标签: reverse-engineering uml roundtrip

具有无缝同步的UML Round-Trip Engineering工具?

Rational 套件声称可以做到这一点。但它的吸引力是如此昂贵和笨拙(比罗斯时代更糟糕),大多数部门都无法接触到它。

令人惊奇的是,免费的 Bouml 似乎做得非常出色。使用起来感觉太笨重了。它具有很多功能,免费(!),非常快,并且可以很好地逆向工程复杂的C ++。它还有一些很好的图表支持,包括一个非常好的序列图。虽然界面是未抛光的(并且不断在最右边的显示器上打开对话框),但它确实具有非常强大的产品的开端。令人遗憾的是界面非常简陋,需要花费很多精力。也许是因为作者把大部分时间都花在了实际的功能上。有没有人在整个产品生命周期中使用Bouml的经验?

这使得昂贵的 MagicDraw ,功能强大且价格合理的企业架构师,以及光滑的 Visual Paradigm 。其中,只有Visual Paradigm在对项目的C ++标题进行反向工程时遇到了问题。

MagicDraw 有一种古怪的感觉。虽然复杂C ++项目的往返工程是否是无缝的,但仍然有待观察,它本身在逆向工程方面做得很好。他们希望多语言版本超过1800美元,因此它的价格与 Rational 工具类似。

企业架构师虽然远比大多数便宜,但似乎它可能是最完整的功能。它完美地解析和生成C ++。甚至评论和格式都保持不变。有很棒的培训材料。但它不能处理Objective-C,因此对iOS和Mac OS X混合代码项目不太有用。自动序列图生成听起来很棒,但听起来它只适用于Windows .NET项目。

Visual Architect (多语言双向800美元)是我遇到过的最好看的软件建模工具。虽然它可能会有一些往返问题,但很高兴用手工制作模型。它在某种程度上比 Rose 更好。它具有直观的方式,可以在光标处显示您需要的工具。然而正如我所提到的,目前还没有达到让模型与源同步的目标。而且它通常甚至没有通知导入没有完全起作用,或者已经创建了重复的类(具有相同的名称)。它还使用对话框使消息参数的输入变得困难,而其他参数则允许在图上正确地更改参数。 (免费的Bouml擅长于此,MagicDraw和其他人也是如此。)

有没有人找到一种多语言(Java,C ++,C#,ObjC ++,Python,Ruby,SQL)往返工程工具,可以处理真实世界的项目,在这些项目中处理自定义(如消息上的自定义参数) ,但未被下一个源代码导入消灭?

所有格式和注释都在生成时完全保留。关闭不够好。如果工具搞乱了源代码格式化,那么开发人员不会希望该工具在其源代码上运行。

3 个答案:

答案 0 :(得分:3)

Peter Coad的Together-J过去常常在一个IDE中使用图表和编辑器(因此得名)。更改图表和代码更改;对于其他方式也一样。

UML工具和编辑器都有点慢。我认为当天的机器动力不足,并没有展现出最佳状态。

我相信Peter Coad把它卖给了Borland。看起来Borland已退出IDE业务。你仍然可以得到它here

我认为IntelliJ是最好的Java IDE。您可以使用它生成一些漂亮的UML图表。

真正的问题是:为什么UML如此重要?我宁愿有代码。我通常做足够的UML来实现这个想法,用单元测试编写代码,然后对其进行反向工程以获取文档。您无法调试或单元测试UML图。最好有工作代码。

答案 1 :(得分:2)

Bouml ...不断在最右边的显示器上打开对话框

在多显示器配置中,最好是向Bouml指示默认情况下必须使用哪个显示器,否则对于Bouml你只有一个非常大的显示器,包括你的所有显示器。当然,表示默认监视器并不意味着您不能使用其他监视器,并且可以将对话框/主窗口移动到所需的位置。要使用的默认监视器的定义是通过the environment dialog完成的。

答案 2 :(得分:0)

Enterprise Architect似乎在这方面做得很好。正如你所指出的那样,价格合理。它还将生成图表和文档,以及导入/导出源代码。