Sparx Enterprise Architect 转换(从源代码到 UML)

9

我需要为一个项目制作UML类图。之前我用Sparx Enterprise Architect从图表中生成源代码,所以我现在也在使用它。

这个项目已经完成,所有的代码都已经写好了,我不想手动编写所有的类/函数,所以我试图从源代码中生成图表,但是似乎找不到方法来实现。我在网上和他们的网站上搜索了一下,但是没有找到什么有用的信息。

如果有任何帮助,将不胜感激。


你认为通过这样做你能添加什么价值?我会坚持使用模块中显示职责的包图,并使用类似doxygen的工具来记录项目构建过程。 - Pete Kirkham
我只是因为必须这样做(没有人事先告诉我)才这样做的。不过,我总是使用Doxygen记录项目。 - user228938
我不确定那是否有太多意义;Doxygen可以生成UML风格的类图。 - Clifford
3个回答

10

针对EA Corporate Edition的8版本,进行如下操作:

  • 打开或创建一个项目。
  • 创建一个空的类图。
  • 选择菜单:
    • 项目 -> 源代码工程 -> 导入文件
  • 会弹出目录对话框让你选择要导入的文件。

我已经“反向工程”了许多C++项目,无论大小。你需要花费相当长的时间去清理它,这将取决于项目的质量、结构和代码。

然后,你可以生成一份关于它的文档报告(项目->文档),我发现HTML报告非常有用,可以浏览代码。


6

将代码导入模型被称为“逆向工程”。导入后,您可以制作图表。


1
逆向工程的概念很好,但现实却不同!!如果你仔细查看模型,你会意识到真正映射到模型中的项目不到50%。我尝试了Java反向工程,但其他反向工程可能更好。 - UML GURU
即使值得,因为如果您从模型生成代码,然后从代码重新创建模型,则已经失去了70%的初始类图模型!!问题在于模型和代码生成之间没有可追溯性。只有EclipseUML Omondo才允许此功能,因为它们具有合并选项。 - UML GURU
1
@roko-sifredi -- 几年前我发现Sparx Enterprise Architect在使用C#进行往返工程方面表现良好。 - ChrisW
1
没关系,谢谢。它的效果不是很好,但我也没指望它会有多好。我只是不想再写所有的类/函数了,所以它还可以。我只是手动添加了连接并清理了出现的额外内容。 - user228938

1

为此,您应该首先使用反向工程选项,但正如其他用户指出的那样,这不是EA的强项。我曾经尝试过(我想是7.3版本)使用C、Python和Java项目来进行反向工程,结果并不总是令人满意。

我不知道您的代码是用哪种编程语言编写的,但对于C语言而言,如果您使用预处理器指令,将会在结果中遇到很多问题和不兼容性。


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