瀑布方法无疑是可行的,并且在哲学上与其他方法一样合理。请记住,Waterfall比敏捷开发的时间长得多,但是请注意,这并不是要说明一种方法是否优于另一种方法的论点。
当您对整个问题域以及客户希望通过软件包实现的目标非常清楚时,可以使用Waterfall方法。签订合同时,您可能已经报价了固定价格,并且您的客户了解他们不能偏离任何商定的要求。严格来说,您的过程是在开发的各个阶段之间进行一系列签核的过程,通常情况下,每个阶段都是由不同的团队(有时甚至是不同的公司)完成的,每个团队不一定都在与其他人联系。当您将Waterfall招标给外部承包商时,通常会看到它们在军事和政府项目中发挥了良好的作用。当开发人员遇到问题时,Waterfall和其他类似方法获得不良声誉的地方是,例如估算不正确,计划的时间表没有应急时间,或者对问题域的理解不充分或不完整。这个问题从来都不是方法论的真正错,而在于它的应用。
敏捷与任何方法之间的比较都是错误的。敏捷不是一种方法论,它是一种哲学,或者也许最好说它是一个笼统的术语,代表了一种不同的方式来研究开发软件的方式。方法论仅仅是一种工具,因此它的价值将始终小于处于敏捷意义的核心的个人和互动。
真的有人认为对于希望交付有价值的软件的人来说,最小化软件更改是一个可行的选择吗?
最大限度地减少变更的每一个机会对于开发人员和客户都是宝贵的。更改可能导致进度表延误,或者为了满足进度表而忽略了某些功能。这是您管理变更影响项目价值的方式。
还是真正的问题是,哪种方式在我们的情况下最能应对不可避免的变化?
您的实践可能有助于变更管理,或者可能完全忽略变更。重要的是您的开发实践,与您的客户关系的管理以及这些事情对于所有相关方是否有效地结合在一起。
我们这些谁是对所有意图和目的敏捷明白,你选择一个适合自己的方法。如果您喜欢特定的方法,请遵循它。如果它不能完全满足您的需求,请进行更改。制作软件的方式实际上归结为尝试充分利用手头的资源,并最大限度地减少那些可能导致项目失败的做法,而且您经常发现需要更改方法以适合您的需求。即将进行的特定项目。
说“好吧,现在我们是敏捷的”是一回事,而按照敏捷的哲学实际生活和工作则完全是另一回事。无论您使用Waterfall,Incremental,Spiral,SCRUM,XP,FDD还是任何其他方法,您基本上都非常看重敏捷:
- 个人与流程和工具之间的互动
- 工作软件超过全面的文档
- 客户合作而非合同谈判
- 响应计划变更
以及将工具,方法和经验结合在一起的位置,以便成功应用这些价值。