5

我正在浏览一个大型开源应用程序的代码,并想了解它是如何设计的以及它是如何工作的。是否有可以将 C 和 C++ 代码逆向工程为序列图的工具?

可能这可能有点牵强,但是当说应用程序正在处理输入时,可以给我调用函数列表(在各种模块中并按正确顺序)的工具呢?或者帮助我快速分析给定的应用程序(尤其是具有大量代码库的应用程序)?

期待答案,因为我认为这一定是一个很好的话题。

4

3 回答 3

3

有一些,但它们很贵。Rational Rose 在被 IBM 收购之前是最知名的。

C++ 语言的特性使得进行静态分析非常困难。这就是为什么很少有工具可以做到这一点。由于使用支持反射/自省的语言的非 C++ 开发激增,这种类型的工具确实让 C++ 落后了。这并不是说没有,只是它们更难找到,并且通常是昂贵的类似 4GL 的软件包的一部分。Rational Rose 主要是一个让您绘制系统图表的工具,它有助于跟踪组件并最终生成各种语言的源代码。它还可以在一定程度上将源代码逆向工程成图表。

Rational Rose 产品几乎被 Rational Requisite Pro 取代,大部分功能(专注于 Java)被合并到 IBM 的 WebSphere Application Development 平台中,我相信现在称为 RAD。

Rational 工具以如此全面而闻名,以至于它们真正的目标对象是大型开发团队,这些开发团队在单个项目中拥有同样庞大的员工,通常从 50 多名开发人员开始。

由于 C++ 语言的复杂性(从工具的角度来看),以及 Java 和 C# 等语言的流行,供应商确实不再强调 C++。

我对仍支持 C++ 的 Visual Studio 了解不多,但我愿意猜测 C++ UML 支持仅在 Pro 或 Ultimate 等昂贵的专业版本中。

于 2012-01-06T18:13:36.603 回答
0

在C++ 到 UML(逆向工程/往返工程)之前问过。奇怪的是,Altova 没有。似乎做大部分其他事情。

于 2012-01-10T02:38:56.810 回答
0

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

  • Microsoft Windows 原生 C
  • Microsoft Windows 原生 C++
  • 微软视窗 Visual Basic
  • Microsoft .NET 系列(C#、J#、VB)
  • Sun 微系统 Java
  • PHP

您至少需要 EA 的专业版,在撰写本文时,单座许可证的价格为 199 美元(一九九)。

网站上有一个非常古老的演示视频(来自三个主要版本)。

于 2012-01-11T18:30:02.813 回答