重新设计以从源和二进制创建 UML 图

逆向工程 工具 静态分析 动态分析 进程黑客
2021-06-16 07:14:50

是否有工具可以创建:

  • 来自源代码的 UML 结构图。
  • 在 arm / x86 系统上执行的二进制的 UML 行为图。
    来源将在 C &/ C++ &/ Python 中。

这些工具将在 Linux 平台上重新设计(理解现有软件并修改它)的同时提高生产力。

3个回答
  • 面向 Java 或 .NET 的 Sparx Systems Enterprise Architect
  • 用于 C++ 编译二进制文件的 IDA Pro RTTI 插件
  • 用于 C、Java 和其他语言源代码的 doxygen

我有时在建模 C 程序方面做了一些工作,我以这篇文章为起点,

http://www.drdobbs.com/uml-for-c-programmers/184401948

然后评估了几个ide,发现EA最合适,IBM RSA对建模C程序有很好的支持。

但是,您需要做的是,制定一种在 UML 中建模 C 程序的方法,然后遵循它,这是因为 C 不是面向对象的语言,而 UML 本质上是面向对象的,我们需要设计如何表示 C 构造在 UML 中。

希望这对 C 有帮助,因为 C++ EA 和RSA的逆向工程工作良好,并且不需要像 C 那样做太多努力。

几乎所有主要工具都会获取源文件/目录并生成命名空间(一个包)、类和接口定义、属性、属性和操作签名。适用于多种语言。

然而,并不是所有的依赖关系或类之间的所有关系都会被发现,因为操作定义体没有被解析,因此操作的活动模型不能被派生(或其活动图)。

Microsoft 在 Visual Studio 2010(我相信,直到 2015 年)中为编辑器中选择的任何操作包含了一个操作到序列图生成器。它已被删除,可能是因为它仅限于托管语言。

要导出状态机模型/图表,还需要了解源中最初采用的编码约定是有意义的。也许这是机器学习可能会产生影响的领域。

协作图已从 UML 中删除。

我很惊讶供应商、EA、MagicDraw,甚至 Java 的 Eclipse Papyrus 都没有采用解析操作体。

希望有帮助,问候