瀑布模型(waterfall)是将开发阶段描述为从一个阶段瀑布般的转化到另外一个阶段,一个开发阶段必须在另外一个开发阶段之前完成。它的特点是有里程碑+可交付产品。
瀑布模型中,软件开发分为如下的阶段:
需求分析->系统设计->程序设计-> 编码->单元测试->集成测试->系统测试->验收测试->运行和维护
瀑布模型最大的问题是,它无法反映实际的的代码开发方式,因为人们对于问题的理解是逐步深入的,所以大量的软件是通过大量的迭代进行开发的。因为瀑布模型来自于制造业,他们是重复的生产某一特定的产品,而软件开发并不是这样的,它随着人们对于问题的逐步理解和对各种候选方案的苹果而逐步让软件演化,所以软件开发是创造的过程而不是制造的过程。
原型:
为了对某些关键过程/活动有比较深的理解,经常软件开发中有POC (我在公司里面就经历过很多POC) ,所谓Proof-of-Concept,就是一个部分开发的产品,他一般用来实现一小部分关键需求,并且让行家来评估策略的可行性。但是它不是最后真正交付的软件产品,因为它的目的是证明而不是交付。