逆向工程从源代码中记录了Java

sqn*_*sqn 7 java uml reverse-engineering re-engineering

我是一名系统工程师,最近大学毕业,我刚刚获得了一个非常令人生畏的项目.

我们有一个遗留系统,我们合法拥有整个代码及其所有权利.问题是代码记录不完整,文档不完整,有时错误,原始开发人员不可用.

它使用自定义Perl构建脚本需要CPAN的一千个模块才能工作,我不知道Perl.除了Doxygen之外,反向工程到UML失败了,仅限于继承图和调用图.

我已经获得了一个巨大的黑板,我正在慢慢地浏览代码,建模包,然后在其中嵌套包.

我的问题是我是否正在从正确的方向接近这种逆向工程.我正在从底部工作,试图弄清楚在开发UML和编写设计文档时会发生什么.我做了一个包图,但很难弄清楚在那个高水平上发生了什么.

我提出的一篇学术论文表明,我还制作了一份新的需求文档,这将使我的速度更慢,我不知道这是不是一个好主意,因为其他开发人员总是忙于保持遗留系统.

有没有可以帮助我的书籍,我是从正确的角度接近这个吗?我是否应该聘请了解Perl和JMX的合同工来帮助我?

Mic*_*rdt 7

Michael Feathers撰写的"有效使用遗产代码"一书可能会对您提供更多帮助.

但是,你需要为自己澄清最重要的事情(从你的问题来看,这听起来并不完全清楚)是:你的目标是什么?您希望通过此代码库实现什么目标?

如果答案是(听起来)"能够有效地维护现有项目",那么尝试直接构建系统的完整高级模型可能不是最有效的途径.记住这个可能只是太多了.

在这种情况下,我会尝试仅了解您当前需要修改的系统的用例; 按照方法调用代码(在运行的系统上使用调试器)来查看涉及的部分.对几个不同的用例执行此操作,您将开始查看模式,然后记录这些模式并逐渐将它们组合到系统的高级图像中.


Sim*_*eon 0

这个工具 可能会帮助你。

或者,如果遗留系统写得不好,它可能会造成巨大的难以阅读的混乱,但我希望它有所帮助。