瀑布模型: 瀑布模型核⼼思想是按⼯序将问题化简,将功能的实现与设计分开,便于分⼯协作,即采⽤结构化的分析与设计⽅法将逻辑实现与物理实现分开。将软件⽣命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运⾏维护等六个基本活动,并且规定了它们⾃上⽽下、相互衔接的固定次序,如同瀑布流⽔,逐级下落。 简单的说就是先定好需求和相关⽂档,然后构建框架,然后写代码,然后测试,最后发布个产品 ⼀旦⽂档需求确定,开发⼈员就按⽂档开发,直到产品开发完后,才会拿出来给客户。不过这种⽅式基本不适应现今快速发展的市场现状了。 迭代模型: 迭代的⽅式就有所不同,假如这个产品要求6个⽉交货,我在第⼀个⽉就会拿出⼀个产品来,当然,这个产品会很不完善,会有很多功能还没有添加进去,bug很多,还不稳定,但客户看了以后,会提出更详细的修改意见,这样,你就知道⾃⼰距离客户的需求有多远,我回家以后,再花⼀个⽉,在上个⽉所作的需求分析、框架设计、代码、测试等等的基础上,进⼀步改进,⼜拿出⼀个更完善的产品来,给客户看,让他们提意见。
就这样,我的产品在功能上、质量上都能够逐渐逼近客户的要求,不会出现我花了⼤量⼼⾎后,直到最后发布之时才发现根本不是客户要的东西的情况。
两种⽅法的⽐较:
瀑布模型:假如我们对⽤户的需求判断的不是很准确时——这是很常见的问题,⼀点也不少见——你开发了⼏个⽉甚⾄是⼏年,当你把产品拿给客户看时,可能与客户原先想要的相差很远。
迭代模型:相较瀑布较好,但也有⾃⼰的缺陷,那就是周期长、成本很⾼。适合⼤项⽬、⾼风险项⽬,⽐如是航天飞机的控制系统时,迭代的成本⽐项⽬失败的风险成本低得多,⽤这种⽅式明显有优势。
敏捷开发和迭代不是⼀回事
敏捷开发与迭代式开发是整体与局部的关系。打个⽐⽅,前者就像地球,⽽后者像欧亚⼤陆。
敏捷开发是⼀个总体概念,⽽迭代式开发只是⼏乎所有敏捷开发所采⽤的⼀个主要的基础实践。敏捷开发除迭代式开发外,还包含了其他许多管理与⼯程技术实践,如演进式架构设计、敏捷建模、重构、⾃动回归测试(ART)等等。