我看到了两种特别值得关注的情况:
(1)一个OTS系统在很少或没有修改的情况下满足了最初的一组要求,除了可能集成到现有系统中。然而,在几个开发迭代之后,这个系统再也不能满足需要,必须重写核心代码。开发人员必须选择花费额外的时间学习OTS软件背后的核心代码,或者放弃它,从头开始建立。无论哪种情况都会对开发时间和项目成本产生重大影响。
(2)最初的需求与任何现有的OTS系统都不一样,然而,最终当客户接受产品时,由于增加和减少需求,它最终变得像现有的解决方案一样。如果开发人员有更多的需求并花更多时间在前期工作上,就可以使用这个解决方案,而不是再次构建。项目被交付了,但时间和成本比必要的要高。
作为一名软件工程师,我的责任之一(根据我的学习)是按时以最低的成本向客户交付高质量的软件(还有其他事情)。敏捷开发允许高质量的软件,但在某些情况下,直到为时已晚并且已经花费了太多的钱才意识到有更好的选择可能是不明显的。
我的问题是:
- 现成的软件如何与敏捷开发相结合?
- 敏捷经理和敏捷开发人员如何处理这些情况?
- 敏捷范例对这些情况有什么说法?