文章目录

  • 前言
  • 总览
    • 1.瀑布模型:
    • 2.敏捷开发:
    • 3.看板:
    • 4.Scrum:
    • 4.精益软件开发:

前言

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. 从瀑布到敏捷----漫画解读软件开发模式变迁史

    从瀑布到敏捷----漫画解读软件开发模式变迁史 漫画中有五个房间,分别是瀑布模型,敏捷开发,看板,SCRUM 和精益软件开发. 1.瀑布模型为软件开发按照一定顺序展开的,阶段间具有顺序性和依赖性,就像 ...

  2. 1 从瀑布到敏捷——漫画解读软件开发模式变迁史(转载)

    1913 年,美利坚工业之神--亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的时代.丰田公司提出的丰田生产系统(Toyota Production System)又为汽车工业带来了 ...

  3. 个人见解:从瀑布到敏捷——漫画解读软件开发模式变迁史

    引言:1913 年,美利坚工业之神--亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的时代.丰田公司提出的丰田生产系统(Toyota Production System)又为汽车工业 ...

  4. 软件过程模型:从瀑布到敏捷——漫画解读软件开发模式变迁史

    目录: 软件过程: 软件开发模型的内在特征: 瀑布模型: 快速原型模型: 增量模型: 螺旋模型: 喷泉模型: 基于组件的开发模型: 统一软件开发过程模型: 敏捷过程:​​​​​​​ 这张图片从上向下, ...

  5. 从瀑布到敏捷一漫画解读软件开发模式变迁史(逐层刨析)

    从瀑布到敏捷一漫画解读软件开发模式变迁史(逐层刨析) 照片总览 内容概述 图片构造 In the end 照片总览 内容概述 自上世纪由福特之父-亨利福特在汽车生产上创建第一天流水线式生产线,使得汽车 ...

  6. 客户想要的 vs 客户实际预算:漫画解读软件开发模式 ​​​​

    转自:http://blog.jobbole.com/113230/ 1913 年,美利坚工业之神--亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的时代.丰田公司提出的丰田生产系统 ...

  7. 漫画解读:通过造汽车了解软件开发模式 ​​​

    (点击上方公众号,可快速关注) 作者:伯乐在线 - 艾凌风 // 本文这也是今天的趣图.如果大家喜欢这种形式,欢迎用力点 zan. 1913 年,美利坚工业之神--亨利福特,发明了世界上第一条流水线, ...

  8. 软件开发模式对比(瀑布、迭代、螺旋、敏捷)

    软件开发模式对比(瀑布.迭代.螺旋.敏捷) 1.瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法. 瀑布模型式是最典型的预见性的方法,严格遵 ...

  9. 软件开发模式之瀑布式 | 迭代式 | 螺旋式 | 敏捷式

    软件开发模式有瀑布.迭代.螺旋以及敏捷模式等等. (1)瀑布开发模式 瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法.瀑布模型式是最典型的 ...

最新文章

  1. latex中的引用命令\citep{}和\citet{}
  2. 直接路径读取对于延迟块清除的影响
  3. Django 中间件
  4. Java四大函数式接口
  5. Android RecyclerView(九)滑动监听综述
  6. php怎么实现发送给指定用户,微信小程序 实现模板消息群发、发送给指定用户...
  7. linux DHCP多作用域
  8. 软件测试之 app性能测试的指标
  9. oracle双机热备 rose,linux下使用RoseHa实现oracle双机热备.doc
  10. 基于Android的简单购物,基于Android的购物系统设计与实现
  11. 911 S5代理设置
  12. erlang httpc
  13. fdsafdsafdsafdsafdsa
  14. ABB机器人系统和出错信息
  15. js 占位符 正则_带占位符的正则表达式
  16. dxp全称_DXP企业标志logo设计,品牌vi设计策划
  17. JQUREY DOM 操作详解
  18. 补偿电容器串联电抗对无源LC滤波器性能的影响
  19. 生肖猪年运势全方位---07年12生肖运程提点
  20. 最大打开文件数(文件句柄数)

热门文章

  1. Python入门学习小记:100以内素数/质数之和
  2. mysql show-warnings_MySQL-show warnings
  3. 骁龙778gplus什么水平 骁龙778gplus什么级别 骁龙778gplus相当于什么档次
  4. UI自动化框架 基于selenium+pytest和PO分层思想
  5. php 一键登录插件,帝国CMS一键登录插件(带后台管理)
  6. 视频m4v怎么转换成mp4?
  7. 广告公司给客户做的视频如何避免被外泄?
  8. 高数 | 【无穷级数】证明:绝对收敛一定收敛
  9. 坐标转换(像素转换米)
  10. hover鼠标的悬停效果