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

标签 reverse-engineering uml roundtrip

具有无缝同步的 UML 往返工程工具?

理性 套件旨在做到这一点。但它在绘图方面如此昂贵和笨重(比玫瑰时代更糟糕),以至于大多数部门都无法做到。

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

这留下了昂贵的 MagicDraw ,功能强大但价格合理企业架构师 ,和光滑的外观视觉范式 .其中,只有 Visual Paradigm 在对我项目的 C++ 头文件进行逆向工程时遇到问题。

MagicDraw 有一种奇怪的、古老的感觉。它本身在逆向工程方面做得很好,尽管复杂 C++ 项目的往返工程是否无缝还有待观察。他们想要超过 1800 美元的多语言版本,所以它的价格与 相似。理性 工具。

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

视觉建筑师 (多语言 2 路 800 美元)是迄今为止我遇到的最好看的软件建模工具。尽管它可能存在一些往返问题,但很高兴使用它来手动构建模型。比还要好玫瑰在某些方面。它有一种直观的方式,可以在光标处调出您需要的工具。然而,正如我所提到的,它目前没有达到保持模型与源同步的目标。并且它通常甚至不会发出导入未完全工作或已创建重复类(具有相同名称)的通知。它还使使用对话框输入消息参数变得困难,而其他的则允许直接在图表上更改参数。 (免费的 Bouml 擅长于此,MagicDraw 和其他软件也是如此。)

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

并且所有格式和注释都在生成时完全保留。关闭真的不够好。如果这些工具弄乱了源代码格式,开发人员不会希望在他的源代码上运行该工具。

最佳答案

Peter Coad 的 Together-J 曾经在一个 IDE 中同时包含图表和编辑器(因此得名)。换一张图,代码就变了;其他方式也一样。

UML 工具和编辑器都有点慢。我认为当时的机器动力不足,并没有充分发挥其优势。

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

我认为 IntelliJ 是目前最好的 Java IDE。您可以使用它生成一些不错的 UML 图。

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

关于reverse-engineering - 是否有任何工具可以使 UML 模型与代码完全无缝地同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3340137/

相关文章:

c++ - 如何查找 C++ 可执行文件的所有对象(类对象/结构)

c - 逆向工程 "compiled"Perl vs. C?

oop - UML用例 "extends"和继承之间有什么区别吗?

sockets - 实现客户端服务器 GUI 应用程序的正确方法

histogram - 使用wireshark或其他工具绘制RTT直方图

c# - Entity Framework : Execute multiple commands in one round trip

c - 如何在 .data 节转储文件中找到 **type** 或 **length** 信息?

c# - 在没有源代码的情况下编辑 C# 程序集的 IL 不反射(reflect)执行时的更改

objective-c - 从 Xcode 导出快速模型?

http - 将自定义传输添加到第三方包