任何程序员最苛刻的任务之一,架构师都在理解其他代码。
例如,我是承包商,雇用来快速救出一些项目。修复错误,计划全局重构,因此我需要最有效的方式来理解代码。什么是概念列表,它们的优先级和最佳工具?
我所知道的:反向代码工程来创建对象模型(创建每个包的图表不那么方便),创建序列图(该工具以调试模式连接到系统并从运行时生成图表)。一些可视化技术,使用一些工具不仅可以使用.java
,还可以使用例如JPA
。 Hibernate
等{{1}}个实施者。为所有代码库生成图表,但添加一些类,然后添加它使用的类。
Sparx Enterprise Architect是逆向工程还是最先进的技术?还有其他更好的工具?理想情况下,该工具会让我理解代码,就好像我自己编写代码一样:)
答案 0 :(得分:11)
这本书Object-Oriented Reengineering Patterns详细论述了这一点。不幸的是,附上没有银弹: - )
但是,它列出了许多用于接管遗留代码的有用技术。简而言之
答案 1 :(得分:6)
到目前为止,最重要的工具是你的耳朵,舌头和喉头。询问熟悉代码的人 - 他们将能够比任何软件工具更好地帮助您理解其通用架构。
自动反向工程的完整UML模型通常几乎无用,因为它们无法区分重要的抽象和实现细节 - 这就是这些模型的重点。
在调查详细信息时,软件工具对于回答非常具体的问题更有用,例如“调用此方法的位置在哪里?”或“什么类实现此接口” - 任何好的IDE都能够做到这一点。调试器也可以提供帮助 - 在代码的关键点放置断点并在命中时查看调用堆栈通常非常有启发性。
答案 2 :(得分:2)
只是详细说明Michaels提到可以帮助你的好IDE:
我经常使用以下Eclipse工具:
答案 3 :(得分:1)
EclipseUML Omondo是最好的Java逆向工程工具。如果不在同一个包中,它会反转所有java代码,所有包甚至是与接口的类交互。太棒了。 你也可以逆转: - .class - 休眠注释 - JPA注释
我喜欢这个工具的是我的代码是干净的,因为所有模型信息都保存为xmi格式而不是代码中的标记。您还可以使用图表作为模型视图在每个现有包中创建小文档。非常了不起并尊重官方的uml 2.2规范。 唯一的问题是它真的太贵了所以价格对我来说是个停止!!
答案 4 :(得分:1)
不提取高级体系结构,但确实可以更容易地遍历Java代码:我们的Java Source Code Browser。这将读取源代码(和支持类文件)并生成Javadoc样式文档以及双向超链接到Javadoc信息的源文本。 (我是其中的主要负责人之一)。
答案 5 :(得分:0)
我使用Enterprise Architect进行整个UML(包括使用Java进行逆向工程),它运行良好。