引言:1913 年,美利坚工业之神——亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的时代。丰田公司提出的丰田生产系统(Toyota Production System)又为汽车工业带来了很多先进的生产和管理理念。
下面,就让我们通过这张出自 Toggle 的漫画,来了解软件开发模式的变迁史。
总览
这张图片从上向下,五个房间,分别是瀑布模型(waterfall),敏捷开发(agile),看板(KANBAN),SCRUM 和精益软件开发(lean)。
一、瀑布模式
先以,汽车的生产对瀑布模型进行解读:
1、需求
生产商通过与客户沟通,了解客户的需求
客户希望生产一辆汽车,却只愿意支付一辆自行车的价格,造成了生产资金的不足无法生产出符合客户需求的产品。
2、设计
客户的需求被采纳之后就进行下一阶段——设计
工作人员通过客户的需求对产品进行设计,之后下发给下一阶段。
3、制造
设计定型后,进入制造阶段:
在线性的生产系统中,或者是瀑布开发模式中,需求和设计是不可以进行修改的,也就是说,软件开发方只负责制造软件,对于更改需求和设计都不管。
4、测试
在产品没能生产出来之前,测试工作是无法展开的,这也就造成了资源的浪费的情况。而这也是瀑布模型的最大弊端,下游的工作依赖于上游的工作完成情况,造成资源的严重浪费。
在产品生产完成之后,一次性交付到客户手中,完成交易。
该模型特点:
瀑布模型中每项开发活动具有以下特点。
(1)从上一项开发活动接受其成果作为本次活动的输入。
(2)利用这一输入,实施本次活动应完成的工作内容。
(3)给出本次活动的工作成果,作为输出传给下一项开发活动。
(4)对本次活动的实施工作成果进行评审。若其工作成果得到确认,则继续进行下一项开发活动;否则返回前一项,甚至更前项的活动。尽量减少多个阶段间的反复。以相对来说较小的费用来开发软件。
瀑布模型优点
有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
瀑布模型缺点
1.开发过程一般不能逆转,否则代价太大;
2.实际的项目开发很难严格按该模型进行;
3.客户往往很难清楚地给出所有的需求,而该模型却要求如此。
4.软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。
瀑布模型使用范围:
1.用户的需求非常清楚全面,且在开发过程中没有或很少变化;
2.开发人员对软件的应用领域很熟悉;
3.用户的使用环境非常稳定;
4.开发工作对用户参与的要求很低。
二、敏捷模式
敏捷开发模式:是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力,强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法、注重做为软件开发中人的作用。
客户可以随时更改自己的需求以求达到自己所希望的产品。但是,随着越来越多的客户参与进来,许多问题被暴露出来,因为许多客户并不了解行内的情况,提出了许多天马行空的需求出来。
“先给您上个小 的尾翼,用着好我再给您换个大的~”
敏捷开发的另一个重要概念就是迭代,所谓迭代,就是不断对产品进行细微的、渐进式的改进。
在敏捷开发中,生产不再是单一线性的,开发的同时还会进行测试工作,所有人都在同时工作,提高效率。
相较于传统的软件交付方式,敏捷开发有一个显著的特点是能够及时响应客户需求的变更,不断适应新的趋势。
这样就无忧了吗p>
但相对于瀑布模式的秩序井然,敏捷开发在灵活的同时,也带来了一定程度的混乱。解决这一问题的方法——看板。
把要求和问题粘贴在看板上问题就完美解决了。
敏捷模型优点:
1. 为项目提供了按阶段划分的检查点。
2. 当前一阶段完成后,您只需要去关注后续阶段。
3. 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
敏捷模型缺点:
1. 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
2. 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
3. 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
4. 瀑布模型的突出缺点是不适应用户需求的变化。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!