我必须审核一个已经发展过几个的大型Web Java / J2ee应用程序 年份。它是由其他公司编写的,而不是我正在为之工作的公司。在 它现在的状态变得难以发展和维持,新的 功能很难添加,并经常导致有时出现的错误 生产。似乎有一些复制/粘贴代码导致代码重复。 当前的应用程序是某种在线购物,其中包含一些类似cms的内容。 它主要是Struts和一些Spring代码的新部分,也许是一些ejbs 好的措施。有一些单元测试可用,但不是很多。 这些是我被告知的事情,我还没有看到实际的代码。
我的公司将提出重写此应用程序部分的建议,以减少 复杂性,提高质量和模块化,并使添加更容易 没有回归的新功能。 在做任何交流之前,他们希望得到一些赞赏 现有代码的质量,并按顺序评估其中有多少可以重复使用 不仅要猜测将要做什么 - 完全重写或部分 重写。
问题是,我必须在很短的时间内(几天)这样做,所以我 试图制定一个可以在如此短的时间内完成的计划。我的意思是:
所以实际的问题是我应该考虑其他什么/检查/测量/等等?
我不确定我可以从中得到什么样的数字,如果它真的意味着什么 有些事情,我觉得管理层提出的问题是错误的 方法,所以第二个问题是:有没有人有更好的想法?
我会感激任何想法,建议,评论。
答案 0 :(得分:8)
我有两个与你有类似设置的网络应用程序。我停止使用FindBugs和Checkstyle,因为他们显示了超过10.000个问题点。应用程序使用JDBC级别数据访问,JSP用于表示,以及用于请求分派的自定义框架。幸运的是,这些低级设置允许我在中等难度下进行扩展和修复。在为期3年的项目中,只有大约20%的原始代码保持不变。其他所有东西都需要更改,替换或删除(最后我能够使用FindBugs和Checkstyle)。
我们也面临完全重写的困境。但是,有几个因素反对它:
归结为你想要做的事情。
你想重写,尽管很复杂吗?
您不想重写?
如果您想品尝代码,请尝试添加Hello World!功能/屏幕到应用程序。这说明你可以用多少努力和多快的速度来实现新事物。
答案 1 :(得分:3)
事实上,他们不会支付全部重写费用,因为:
这是经济衰退,你从头开始重写的成本会很高
他们可能会尽快出售公司
我首先会谈到一些简单的事实:
尝试绘制应用程序架构的快速图表,如果它们没有为您提供相关文档。
收集一些统计数据和一些事实,撰写报告并将其发送给公司。他们希望最大限度地降低成本,他们会要求您避免修复未破坏的代码。您可以从统计数据开始,然后查看事实和具有时间/大致代码影响/定价百分比的命题。
通常,传统的Struts应用程序是必须维护的。如果它不是你工作的一部分,我会说放手吧。如果您遇到“独立”页面,这些页面不涉及许多模板并且需要进行许多更改,建议使用其他一些技术重写它们。
答案 2 :(得分:2)
我非常喜欢你的名单。我认为你有一个很好的攻击计划。
我着眼于标准化Spring或EJB 3.0,但不是两者都标准化。
我自己没看过,但我想知道Michael Feathers的书"Working Effectively With Legacy Code"是否有任何好主意?
更新:
也许您可以通过将它们置于自动构建和持续集成(Cruise Control,Hudson或Team City)来提供帮助。如果你必须做任何重构,它会有所帮助。
答案 3 :(得分:2)
您正专注于可维护性和可扩展性,这是现场的。
我想补充看重启项目需要多长时间。他们使用源代码控制吗?他们是否有单独的环境进行集成和用户验收测试?是否有构建服务器?
当您需要花费两个月才能实现第一次改进时,有人需要提前管理客户的期望。