在尝试确定系统是否应该重新开发时,我应该问什么问题?

时间:2009-03-17 22:15:58

标签: architecture

我参与评估我们的系统是否需要从头开始重写,或者是否应该进行部分重写,或者是否应该继续使用补丁。

为了更好地评估情况,我想知道我应该问自己和其他人有什么问题来帮助确定采取的适当行动?

6 个答案:

答案 0 :(得分:8)

我建议你阅读Things You Should Never Do, Part I。他强调不再发展。

钱报价:

  

重要的是要记住,当你从头开始时,绝对没有理由相信你会比第一次做得更好。首先,你可能甚至没有相同的编程团队在第一版上工作,所以你实际上并没有“更多经验”。你只是想再次犯下大部分旧错误,并介绍一些原始版本中没有的新问题。

也许你应该问问自己,你是否能够很好地了解系统,以便在不重写问题的情况下解决问题。如果不这样做,可以说你不了解系统,从头开始重新开发它。

答案 1 :(得分:3)

总的来说,我发现重写代码往往会有麻烦(它既昂贵又耗时,并且涉及使第一个系统看起来更好的发现阶段)。

那就是说,这里有几个问题要问:

  1. 核心重构是否足够?通过评估系统,您将了解中心问题是否比代码更深入。如果问题出在代码库中(而不是技术本身),我更喜欢重构。

  2. 当前系统在多大程度上可测试?可测试性在延长任何系统模块的使用寿命方面都有很长的路要走,因为可测试代码通常更容易扩展和维护。这也与#1有关。

  3. 最后,重写所提供的价值是否可以证明这一努力。当然,这是一个商业问题,但开发人员可以而且应该帮助制作这个问题。

  4. 在我遇到的大多数情况下,答案是否定的。

答案 2 :(得分:1)

最后,无论何时从头开始重写系统,您都希望实现某些目标。你应该问问自己,你想达到什么目的?你想要:

  • 降低使用旧技术构建系统的风险
  • 降低成本:维护成本太高

您可以进行收支平衡分析,以了解新系统何时开始支付。在我看来,你应该能够减少重写系统成本,并能够看到一个新的成本低于旧的。

答案 3 :(得分:1)

  1. 您将无法交付多长时间? 你花了多少时间你曾低估过以前的项目?在最糟糕的情况下你能负担多少时间?

  2. 维护现有系统目前有多少人力? 您是否有另外为开发新系统的人提供此人力资源?

  3. 如何确保不重新创建具有相同问题的相同系统?避免明显的架构故障通常是不够的。

  4. 如果您没有资源来改善现有系统,您是否能够竞争/生存?


  5. 即使“重构和修复”意味着,从长远来看,取代大部分现有系统,这意味着将所有资源放入一个系统,而不是两个。

答案 4 :(得分:1)

我建议你需要一个讨论的背景,我熟悉的最好的一个是在Martin Fowler的“重构”一书中找到的。对我来说问题确实是“这个应用程序是否可重构?”

第一个具体指导方针是“它是否采用良好的OO设计原则编写?”如果没有,通常你需要把它放在生命支持上,和/或重新开始。如果是,那么这本书将提供很多帮助;根据我的经验,我们有充分的希望。

答案 5 :(得分:0)

按以下顺序:

  • 它能正确完成工作吗?
  • 快吗?
  • 易于维护吗?
  • 是否容易扩展?