我是一名系统工程师,最近的大学毕业生,我刚刚获得了一个异常艰巨的项目。
我们有一个遗留系统,我们合法拥有整个代码及其所有权利。问题是代码记录很少,文档不完整,有时错误,原始开发人员不可用。
它使用自定义Perl构建脚本需要CPAN的一千个模块才能工作,我不知道Perl。除了Doxygen之外,反向工程到UML失败了,仅限于继承图和调用图。
我已经获得了一个巨大的黑板,我正在慢慢浏览代码,建模包,然后是嵌套包。
我的问题是我是否正在从正确的方向接近这种逆向工程。我正在从底部工作,试图弄清楚在开发UML和编写设计文档时会发生什么。我做了一个包图,但很难弄清楚在那个高水平上发生了什么。
我提出的学术论文表明,我还制作了一份新的“需求文档”,这会让我的速度更慢,我不知道这是不是一个好主意,因为其他开发人员总是忙于保持遗留系统。
那里有没有可以帮助我的书籍,我是从正确的角度接近这个吗?我是否应聘请了解Perl和JMX的合同工来帮助我?
答案 0 :(得分:7)
Michael Feathers撰写的“有效使用遗产代码”一书可能会对您提供更多帮助。
然而,你需要为自己澄清最重要的事情(从你的问题来看,这听起来并不完全清楚)是:你的目标是什么?您希望通过此代码库实现什么目标?
如果答案是(因为它听起来)“能够有效地维护现有项目”,那么尝试直接构建系统的完整高级模型可能不是最有效的途径。记住它可能只是太多了。
在这种情况下,我会尝试仅了解您当前需要修改的系统的用例;按照方法调用代码(在运行的系统上使用调试器)来查看涉及的部分。为几个不同的用例执行此操作,您将开始查看模式,然后记录这些模式并逐渐将它们组合到系统的高级图像中。
答案 1 :(得分:0)
This tool 可能会帮助您。
或者如果遗留系统写得不好,它可能会造成一个巨大的难以理解的混乱,但我希望它有所帮助。
答案 2 :(得分:0)
如果是java代码,那么深度逆向工程将非常有用。 请参阅以下文档:http://www.ejb3.org/jar_file_reverse/jar_file_reverse.html