审核大型java/j2ee Web应用程序的最佳方法是什么?

Bil*_*lly 14 java audit java-ee

我必须审核一个已经发展了几年的大型Web Java/J2ee应用程序.它是由其他公司编写的,而不是我正在为之工作的公司.在目前的状态下,它变得难以发展和维护,新的功能很难添加,并且经常导致生产中出现的错误.似乎有一些复制/粘贴代码导致代码重复.当前的应用程序是某种在线购物,其中包含一些类似cms的内容.它主要是代码的新部分中的Struts和一些Spring,也许有些ejbs可以用来衡量.有一些单元测试可用,但不是很多.这些是我被告知的事情,我还没有看到实际的代码.

我的公司将提出重写此应用程序部分的建议,以降低复杂性,提高质量和模块性,并且可以在没有回归的情况下添加更简单的新功能.在进行任何通信之前,他们希望对现有代码的质量有所了解并评估其中有多少可以重复使用,以便不必猜测将要做什么 - 完整重写或部分重写.

问题是,我必须在很短的时间内(几天)做到这一点,所以我正在努力制定一个计划,以便在如此短的时间内完成任务.我的意思是:

  • 检查"基本"的东西 - 例外处理,记录
  • 检查分层的级别(视图,控制器,dao层)
  • 衡量单元测试的实际覆盖范围
  • 也许在项目上运行一些Checkstyle,Findbugs和PMD
  • ...

那么实际的问题是我应该考虑/检查/衡量/等其他什么?

我不确定我可以从中得到什么样的数字,如果它真的意味着什么,我觉得管理层所要求的是一种错误的方法,所以第二个问题是:有没有人有一个更好的主意?

我会感激任何想法,建议,评论.

编辑:我将添加两个死代码检测器:UCDDCD

aka*_*okd 8

我有两个与您具有类似设置的Web应用程序.我停止使用FindBugs和Checkstyle,因为他们显示了超过10.000个问题点.应用程序使用JDBC级别数据访问,JSP用于表示,以及用于请求分派的自定义框架.幸运的是,这些低级设置允许我在中等难度下进行扩展和修复.在为期3年的项目中,只有大约20%的原始代码保持不变.其他一切都需要更改,替换或删除(最后我能够使用FindBugs和Checkstyle).

我们也面临完全重写的困境.但是,有几个因素反对它:

  • 不确定客户是否会支付全部重写费用.
  • 缺乏功能和技术文档会导致完全重写风险.
  • Manhours完全理解完整的应用程序太高了.客户希望更快地获得所请求的更改.
  • 用户可以自定义演示文稿和页面行为.似乎很难说服用户使用新接口来处理旧功能.
  • 如果我们进行完全重写,我们需要提供完整的文档.为了更新,我们只需要记录我们的部分.
  • 如果程序有效(或多或少),很难说服管理层(自己和客户)重写
  • 该公司有自己的PMD规则,代码没有通过.认为新部件通过测试就足够了,这更简单.

它归结为你想要做的事情.

尽管有复杂性,你想重写吗?

  • 强调代码错误.有大量红色的大饼图令人信服.
  • 解释程序属性以及它们如何不符合企业愿景.
  • 显示超出当前要求的增强选项,并描述当前版本如何应对挑战.
  • 采访真实用户.他们可能会指出当前版本的重要问题.
  • 便宜但是很好的估算.您可能会延迟一些成本,直到维护阶段.

你不想改写?

  • 强调成本,特别是客户要求重新测试一切所需的工时.
  • 指出破坏功能的潜在麻烦.
  • 要求一名全职文件撰稿人.

如果您想品尝代码,请尝试添加Hello World!功能/屏幕到应用程序.这说明了你能够实现新事物的难度和速度.

  • +1很好显示两个选项,以及如何向管理层解释事情:-) (2认同)