从瀑布到敏捷——漫画解读软件开发模式变迁史


前言

1913 年,美利坚工业之神——亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的时代。丰田公司提出的丰田生产系统(Toyota Production System)又为汽车工业带来了很多先进的生产和管理理念。
先进的生产和管理理念是一个行业从小作坊走向规模化的必经之路,软件工业虽然诞生较晚,但是发展却非常迅速,这也同样得益于软件工业开发和管理理念的发展。这其中就从汽车工业吸收了很多成熟的理念。


总览

下面,就让我们通过这张出自 Toggle 的漫画,来了解软件开发模式的变迁史。

在这里插入图片描述
这张图片从上向下,五个房间,分别是瀑布模型(waterfall)、敏捷开发(agile)、看板(KANBAN)、SCRUM 和精益软件开发(lean)!
除了瀑布模型这间小屋和其他小屋有着明显的界限之外,其他几种模型就像一个四合院,有着不可分割的关系,这也恰好表明,瀑布模式和敏捷开发模式是软件工业先后经历的两个阶段,而 KANBAN,SCRUM 和 LEAN 则是敏捷运动的产物。
接下来,让我们依次来熟悉这五个板块吧!(对此,对软件工程方法论方面有疑问的还可以查询小编之前写的一篇文章——软件工程方法论对我们经软件开发有多大用处?)

1.瀑布模型:


所谓瀑布模型,就是说,软件开发是按照一定顺序展开的(传统线性生产流程 : Traditional,linear production flow)。就像汽车生产的流水线一样,每个部门各司其责,工作按照顺序展开,交付件单通道线性流动。你看这幅图,总体上就分为:需求 → 设计 → 制造 → 测试,四个阶段。在这个系统中,客户被排除在生产系统之外,它们只能从需求的接口人那里向系统输入需求。正因如此,客户无法理解生产所需的费用以及为什么交付总是会延期,也就会出现一种情况:甲方催我们交付,我们催甲方交尾款。
在这里插入图片描述
不仅如此,由于瀑布模型是采用线性的方式工作的,也就会出现各个阶段的员工闲置,无事可干的情况,这也是对时间的一种浪费。
不过瀑布模型还是有一定的优点,例如有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。

2.敏捷开发:


敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态
在这里插入图片描述
这个模型就解决了瀑布模型把客户排斥在开发系统外的问题,在敏捷开发中,客户会参与到软件开发的整个流程中。整个开发过程不再是一堵不透风的墙,透明是关键。利用敏捷模式开发出的产品,相较于传统的软件交付方式,一个显著的特点是能够及时响应客户需求的变更,不断适应新的趋势。但是,随着越来越多的用户参与进来,越来越多的问题也暴露出来了,越来越多不着调的需求也会被提出。
敏捷开发的另一个重要概念就是迭代,所谓迭代,就是不断对产品进行细微的、渐进式的改进。 在敏捷开发中,生产不再是单一线性的,开发的同时还会进行测试工作,所有人都在同时工作,提高效率。相较于传统的软件交付方式,敏捷开发有一个显著的特点是能够及时响应客户需求的变更,不断适应新的趋势。

3.看板:


看板管理,常作“Kanban管理”,是丰田生产模式中的重要概念,指为了达到及时生产(JIT)方式控制现场生产流程的工具。及时生产方式中的拉式(Pull)生产系统可以使信息的流程缩短,并配合定量、固定装货容器等方式,而使生产过程中的物料流动顺畅。KANBAN要求把开发中的任务,以 TODO List 的方式表现出来:形式可以是即时贴,也可以是可视化软件等等。在制造业中,看板也是非常重要的管理方法。也有将其称为目视化管理的。
在这里插入图片描述

4.Scrum:


Scrum原始含义是指英式橄榄球次要犯规时在犯规地点对阵争球,在软件开发领域中,SCRUM是一种迭代式增量软件开发过程,它包括了一些预定义的角色:
产品负责人 Product Owner:产品负责人负责维护订单
Scrum主管Scrum Master:SCURM Master 对整个SCRUM 过程负责,不惜一切代价(AT ANY COST),保证团队的工作时间和计划。
在这里插入图片描述
开发团队Team:在 SCRUM 过程中,开发团队通常会进行冲刺 (Sprint),一个冲刺周期的长度通常是2-4周。
对于KANBAN 和 SCRUM,有人说 KANBAN vs SCRUM,也有人说KANBAN+SCRUM,究竟谁是谁非,我看只有适合自己团队的才是最好的,毕竟方法和流程是为业务服务的。就这篇漫画来看,SCRUM + KANBAN 是两个避免混乱的好方法。

4.精益软件开发:


精益软件开发不再像传统的软件开发一样,耗时几年才向客户交付完整的软件。取而代之的是,优先建立一个最简可用的原型产品投放市场或交付到客户手中。

在这里插入图片描述
但是真正实现起来的时候并没有这么容易,因为设计师们往往无法真正做到只把最必要的功能留在初级版本,为什么呢?
因为在设计产品原型的过程中,很多设计师是这么做的:把他们认为的产品应当具备的功能罗列出来,然后一一排除,排定优先级,决定哪个功能要在最初的版本中出现,而哪个可以靠后一些。但设计师们往往无法真的只把最必要的功能留在初级版本中——因为诱惑太多。设计师们总希望把很cool、很有惊喜的小细节带给用户来博取赞叹,但从全局来看,其实把某些功能刻意强加进产品,是会削弱产品整体流畅性的。Mr Jamie曾把这种心理称为艺术家心结。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南风如意

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值