【发布时间】:2011-09-14 18:15:07
【问题描述】:
我是一名系统工程师,应届大学毕业生,我刚刚接到了一个异常艰巨的项目。
我们有一个遗留系统,我们合法拥有整个代码及其所有权利。问题是代码的文档记录很差,很少的文档不完整,有时是错误的,并且原始开发人员不可用。
它使用自定义 Perl 构建脚本,需要来自 CPAN 的一千个模块才能工作,而我不知道 Perl。 UML 的逆向工程失败了,除了 Doxygen 并且仅限于继承图和调用图。
我得到了一块巨大的黑板,我正在慢慢地浏览代码、建模包,然后是其中的嵌套包。
我的问题是我是否正在从正确的方向进行逆向工程。在开发 UML 和编写设计文档时,我正在从最底层开始努力弄清楚什么叫做什么。我做了一个封装图,但很难弄清楚在这么高的水平上发生了什么。
我查阅的一篇学术论文建议我还制作了一个新的需求文档,这会使我的速度更加慢,而且我不知道这是否是个好主意,因为其他开发人员总是忙于保持遗留系统的正常运行。
有没有什么书可以帮助我,我是否从正确的角度来解决这个问题?我应该聘请了解 Perl 和 JMX 的合同工来帮助我吗?
【问题讨论】:
-
您可能会发现另一个用于了解 Java 代码的工具是 Google 的 Code Analytix,它包括对依赖性分析的支持。 code.google.com/javadevtools/codepro/doc/index.html
-
如果我是你,如果我有选择的话,我根本不会为 UML 烦恼。这并不是说 UML 不好,只是仅仅强调 UML 不会让您对代码库有更深入的了解。如果可以的话,坚持使用简单的类图和调用图和 DFD。您的目标是了解代码库,而不是获得漂亮的图片。
-
@Vineet:当您绘制图表以帮助您理解代码时,您不妨让它们成为有效的 UML,以确保它们对其他人的意义与对您的意义相同。跨度>
-
@Michael,是的,这在一定程度上会有所帮助。但是在做过类似的事情后,我想我会在那里借我的经验。当设计良好时,UML 会有所帮助。但是,当所有的设计都不好时,逆向工程图几乎没有作用,因为必须重构代码以使图表看起来更好。
-
@Vineet:我同意逆向工程图大多没用,尽管我想说问题在于图表的价值在于显示重要结构而忽略了其余部分,这是你做不到的自动(尽管查看哪些类最依赖可能有一些价值,因为它们可能很重要)。
标签: java uml reverse-engineering