我正在浏览大型开源应用程序的代码,并希望了解它是如何设计的以及它是如何工作的。是否有工具可以将C和C ++代码反向工程为序列图?
可能这可能有点牵强但是当一个应用程序正在处理输入时,可以给我一个被调用的函数列表(在各种模块中和正确的顺序)的工具呢?或者帮我快速分析一个给定的应用程序(特别是一个代码库很大的代码)?
期待我的答案,因为我认为这必须是一个很好的主题。
答案 0 :(得分:3)
有一些,但它们很贵。在被IBM收购之前,Rational Rose是最知名的。
C ++语言的本质使得静态分析变得非常困难。这就是为什么有这么少的工具可以做到这一点。自从使用支持反射/内省的语言的非C ++开发激增以来,这种类型的工具确实让C ++落后了。这并不是说没有,只是它们更难找到并且通常是昂贵的4GL类包装的一部分。 Rational Rose主要是一个工具,可以让您绘制系统图,它可以帮助跟踪组件并最终生成各种语言的源代码。它还可以在一定程度上将源代码反向工程化为图表。
Rational Rose产品几乎被Rational Requisite Pro取代,其中很大一部分功能(专注于Java)被整合到IBM的WebSphere Application Development平台中,现在我称之为RAD。
Rational工具因其如此全面而闻名,因此它们非常适合大型开发工作室,这些开发工作室的工作人员也相同,通常从50多名开发人员开始,用于单个项目。
由于C ++语言的复杂性(从工具的角度来看)以及Java和C#等语言的流行,供应商真的不再强调C ++。
我不了解Visual Studio,它仍然支持C ++,但我愿意猜测C ++ UML支持仅适用于Pro或Ultimate等昂贵的专业版本。
答案 1 :(得分:0)
在C++ to UML ( Reverse engineer / Round-trip engineering )之前被问到。奇怪的是,Altova没有。似乎做了大多数其他事情。
答案 2 :(得分:0)
您至少需要EA的专业版,在撰写本文时,单笔座位许可证的费用为199美元(一九九九)。
网站上有一个very old demo video(从三个主要版本开始)。