这就是迭代的开发模式。
比起增量的开发模式,这种迭代开发模式有着明显的优势。
在增量的开发模式下,前三个迭代里的交付物都达不到客户的需求,客户的预期只有在迭代四才有可能实现。
而在迭代的开发模式下,虽然第一个迭代中的滑板车达不到客户的预期,但客户能看到他在第二次迭代中有了一辆自行车;进一步到了第三个迭代有了速度更快的摩托车,就已经可以大大满足用户的需求了。
所以从客户满意度的角度以及更早交付的角度来看,迭代模式显然比增量模式更能达到客户预期。
在实际的软件开发过程当中,第二种模式其实并不常用。
因为迭代一生产出来的产品和迭代二生产出来的产品,在本质上有所不同。
甚至迭代一的设计在迭代二根本无法使用,同样,迭代二里做的工作在迭代三里可能也完全不适用。在这种情况下,我们进一步选用第三种开发模式。
模式三
在第三种模式下,第一个迭代直接就造出汽车,但是这个汽车可能是没有引擎,还需要有个人在后面推。
在第二个迭代里, 因为客户需要汽车能装东西,所以加了一个货箱。
第三个迭代,客户的需求是要乘坐舒适,所以底盘可以不变,只需再改造出一个比较舒适的驾驶舱。
在第四个迭代里,客户进一步需要更加美观的设计,所以在第四个迭代里又进一步做了流线型的设计。
模式三就是我们在日常软件开发过程当中常用的模式。
大家最好能以这种方式进行版本的发布。
这样,交付物能够更加及时地达到客户的预期,并且迭代之间的跨度并没有那么大,不会出现像模式二这样几乎每个迭代设计全部发生变化的情况。
但这并不是说模式二没有任何可取之处。
很多项目在长期的开发过程中,的确在底层发生了大规模的重构。
比较典型的就是互联网产品 。
为了及时的把app推向市场,我们很可能只花一两个月做一个简易版本的app,这个app既不美观,也不能支持高流量、高并发。
但是我的产品在早期用户确实并不多,随着产品的发展,用户数不断增加,对用户体验、并发的要求也不断增高。
那么我们很可能在一个较长的时间,比如一年之后,对整个产品进行从头到尾的重构。这就类似于从一辆自行车变成一台摩托车的升级迭代 。
2.迭代开发的好处
理解了迭代开发以及它为什么能够及早向客户交付价值,同样是敏捷思维非常重要的一点。
下面我们来看看迭代开发具体有哪些好处~
好处一 :及早交付
有这样一个计划:我们需要在40周的时间里去修十栋房子。
# 瀑布模式
按照传统的瀑布模式,第1-10周全部都是做地基,第11-20周周都是在修墙,第21-30周做屋顶,如果计划不变,第31-40周就可以做完所有的房子。
但一旦计划有变,比如在第30周的时候整个项目停止了,可想而知这十栋房子的交付产生的价值是零。
这就是传统的计划驱动的瀑布式交付模式。
# 迭代模式
如果是迭代的开发模式,迭代一的第一周就做第一栋房子的地基,第二周做第一栋房子的墙,第三周做第一栋房子的屋顶,第四周就可以完成第一栋房子。
到了迭代二,很显然就是去做第二栋房子。迭代三就是第三栋。一直到迭代五,完成第五栋房子。
如果按照计划的话,整个迭代跑完,40周的时间就可以把十套房子完成。
这个时候一旦计划有变,比如在第32周的时候,外部环境发生了变化,整个项目停止掉.我们依旧可以交付五栋房子,可以完成整体交付价值的一半。
这就是用迭代开发进行早期交付的一个好处。
好处二 :降低风险