我是一名系统工程师,应届大学毕业生,并且刚刚获得了一个非常艰巨的项目。

我们有一个遗留系统,我们合法拥有整个代码及其所有权利。问题在于代码的文档编写不充分,很少的文档不完整,有时是错误的,并且原始开发人员不可用。

它使用自定义的Perl构建脚本,需要CPAN的上千个模块才能工作,我不知道Perl。除了Doxygen之外,对UML进行逆向工程失败了,并且仅限于继承图和调用图。

我已经获得了一块巨大的黑板,然后慢慢地浏览代码,对程序包进行建模,然后对其中的嵌套程序包进行建模。

我的问题是我是否正在从正确的方向着手进行这种逆向工程。我正在从底部开始工作,试图弄清楚在开发UML和编写设计文档时调用什么。我做了一个包装图,但是很难弄清楚到底发生了什么。

我提出的一份学术论文建议我还要编写一个新的需求文档,这会使我更加放慢速度,而且我不知道这是否是一个好主意,因为其他开发人员总是忙于尝试保持旧系统的正常运行。

有没有书籍可以帮助我,我是否正在从正确的角度着手解决这个问题?我应该聘请了解Perl和JMX的契约(Contract)工来协助我吗?

最佳答案

迈克尔·费瑟斯(Michael Feathers)撰写的《有效地使用旧版代码》一书可能会给您带来比我们在此所能告诉您的更多的帮助。

但是,您需要为自己澄清的最重要的事情(从您的问题中听起来似乎还不太清楚)是:您的目标是什么?您想用此代码库实现什么?

如果答案是(听起来)“能够有效维护现有项目”,那么尝试直接构建系统的完整高级模型可能不是最有效的方法。请记住,一次可能太多了。

在这种情况下,我将尝试仅了解您当前需要修改的系统的用例。在代码中关注方法调用(可能使用正在运行的系统上的调试器)以查看涉及到哪些部分。针对几种不同的用例执行此操作,您将开始看到模式,然后记录这些模式并将它们逐渐整合到系统的高级镜像中。

10-08 09:34