序列图

5
我正在查看一个大型开源应用程序的代码,并希望了解它的设计和工作原理。是否有一种工具可以将C和C++代码逆向工程成序列图?
也许这有点牵强,但是有没有一种工具可以给我提供调用函数列表(在各种模块中,并按正确顺序调用),例如当应用程序处理输入时?或者帮助我快速分析给定的应用程序(特别是一个有大量代码库的应用程序)?
期待答案,因为我认为这必定是一个热门话题。

我在放弃之前尝试了很多工具,最终创建了http://www.zenuml.com。我发现将代码反向工程成序列图并不是一个好主意。我知道有一些工具做得很好,但结果仍然不太可读。使用ZenUML,您可以大声而清晰地思考。 - Devs love ZenUML
3个回答

3
有一些工具,但它们价格昂贵。在被IBM收购之前,Rational Rose是最知名的工具。
C++语言的特性使得进行静态分析非常困难。这就是为什么能够做到这一点的工具如此少的原因。随着使用支持反射/内省的语言进行非C++开发的激增,这种类型的工具已经远远落后于C++。并不是说完全没有这样的工具,只是很难找到,并且通常是昂贵的类似于4GL的包的一部分。 Rational Rose主要是一种工具,可以让您绘制系统图,并帮助跟踪组件,并最终生成各种语言的源代码。它还可以将源代码反向工程成一定程度的图形。
Rational Rose产品基本上被Rational Requisite Pro取代了,其中大部分功能(专注于Java)被整合到IBM的WebSphere应用程序开发平台中,现在称为RAD。
Rational工具以涵盖全面而闻名,因此它们真正针对的是拥有同等规模工作人员的大型开发商店,通常从50个以上的开发人员开始,在单个项目中工作。
由于C++语言的复杂性(从工具的角度看),以及像Java和C#这样的语言的流行,供应商已经大大削弱了对C++的重视。
我对Visual Studio不是很了解,它仍然支持C++,但我愿意猜测,仅在昂贵的专业版(如Pro或Ultimate)中才支持C++ UML。

我可以了解更多关于这些工具的信息吗?我原以为这个主题已经被充分涵盖,但现在我开始怀疑了。 - John Qualis

0

Sparx Systems的Enterprise Architect可以记录应用程序的执行并从此跟踪生成序列图,除了从源代码进行常规静态反向工程。执行分析器支持(在EA 9.2中):

  • Microsoft Windows本机C
  • Microsoft Windows本机C++
  • Microsoft Windows Visual Basic
  • Microsoft .NET Family(C#,J#,VB)
  • Sun Microsystems Java
  • PHP

您至少需要EA的专业版,目前售价为199美元(一个九)。

网站上提供了一个非常老的演示视频(来自三个主要版本之前)。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接