为什么Scrum模式适合软件开发?

news/2024/7/5 1:37:27

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

摘自基于Visual Studio 2010 进行敏捷/Scrum模式开发

软件行业至今已经有超过40年的历史,很多在软件工程中的管理方法都是在不断摸索中改进而来的。早期的软件行业由于规模有限,绝大多数属于作坊型,几个人在一起靠着自己的聪明才智创造出软件产品;但是当团队规模不断扩大的时候,开发人员开始需要一种模型来组织越来越庞大的团队,满足越来越复杂的需求。因为没有经验可循,软件开发团队将很多传统工业工程的方法借鉴到软件行业,因而出现像“瀑布式”的模型。[1]“瀑布式”模型要求我们在实际的开发工作开始之前进行很多非常细致的设计和计划,力图将不可控的开发过程细化成可以控制的颗粒,以达到对复杂项目的总体控制目的。但是“瀑布式”模型忽视了软件项目的一个本质特点,那就是需求的不确定性;我们不可能像造汽车一样在上生产线之前把所有的零件都设计好,所有的流程都规定好,再进行装配;因为任何软件在实际进行编码之前都没有人知道这些代码应该如何实现,而且每一个开发人员的水平不同,习惯不同,写出的代码也是不同的;再加上客户对于软件的需求也是在不断变化的,一年之前的业务流程很可能在一年之后就产生的变化,如果还按照之前的需求进行开发,那么交付的时候肯定是无法满足要求的;更重要的事,在客户没有看到或者实际操作软件产品之前,他们永远也不能明确地告诉你他们要的到底是什么。因为这种种原因,造成了软件开发不可能采用传统的工程方法进行组织,因为其本身是一种需要依赖于开发人员智慧的探索性行为,也造成了我们的软件项目中有很大一部分是失败的。

Scrum模式的出现正是基于对于软件开发行为本质的认识,提供了一种松散的框架,让我们使用一种探索性的流程方法来组织本来就是探索性的开发过程;从根本上满足了软件开发本身对于流程的需求。这种方法论实际上是基于爱德华.戴明所提出的戴明环的管理方法;戴明环理论提出:人类在进行任何复杂活动时,获得成功的最有效过程要经过:Plan 计划– Do执行 – Check 检查– Act改进,四个子过程,并不停的迭代以便找到最佳的方法来解决问题。这个理论不是针对软件开发提出的,但是软件开发本身其实就是最典型的复杂活动。

这里我们再回头看看Scrum的流程,Scrum的流程主要包含以下内容:

(P) Release/Sprint Planning:发布/迭代计划

(C&P) Daily Scrum:每日回顾

(C&A) Sprint Review:迭代产品检查

(A) Sprint Retrospective :迭代流程检查

我们可以看到,Scrum模式的流程与戴明环仅仅相扣。有很多认为敏捷模式会弱化计划的作用,其实不然,敏捷模式更加强调计划,而且强调更加频繁的计划,比如:每日回顾这个流程就要求我们的团队每个成员每天早上用15分钟的时间来回答3个问题:

你昨天做了什么?

你今天计划做什么?

有什么问题阻碍你的开发进程?

其实这正是对于之前开发内容的检查,同时也是对后续开发内容的计划过程。


注1: 敏捷也与工业有关,比如说著名的《精益思想》一书。



转载于:https://my.oschina.net/shanlilaideyu/blog/486659


http://lihuaxi.xjx100.cn/news/244681.html

相关文章

Vue 中 CSS 动画原理

下面这段代码&#xff0c;是点击按钮实现hello world显示与隐藏 <div id"root"><div v-if"show">hello world</div><button click"handleClick">按钮</button> </div> let vm new Vue({el: #root,data: {s…

300道 Kafka最全面试题整理(持续更新)

最新Kafka面试题及答案【附答案解析】Kafka面试题大全带答案&#xff0c;Kafka面试题最新面试题&#xff0c;Kafka面试题新答案已经全部更新完了&#xff0c;有些答案是自己总结的&#xff0c;也有些Kafka面试题答案是在网上搜集整理的。这些答案难免会存在一些错误&#xff0c…

测试部门目标

提高开发质量制定单元测试结果验收标准&#xff0c;通过CI自动检查测试结果是否达标并跟踪解决通过CI自动检查开发代码质量&#xff0c;检查是否达标并跟踪解决通过CI自动检查代码覆盖率&#xff0c;检查是否达标并跟踪解决严格执行冒烟测试&#xff0c;不通过则打回直到通过为…

一句话的设计模式(转)

如题&#xff0c;实际上&#xff0c;我想这是很困难的。 除非——只是为了给自己做一个提醒&#xff0c;能够看一眼就快速回想起该设计模式的种种记忆。 下列是我之前在学习《大话设计模式》时做的笔记总结&#xff0c;当中有部分措辞来自其作者程杰。&#xff08;非常感谢他为…

使用PostMan测试文件上传接口

1.header,由于没有登录不能访问&#xff0c;要传一个token 2.body,见图 ApiOperation(value "上传身份图片返回上传后文件名") PostMapping(value "/uploadImgFile", headers "content-typemultipart/form-data") public ErrorObject u…

极限编程 (Extreme Programming) - 迭代计划 (Iterative Planning)

(Source: XP - Iteration Planning) 在每次迭代开始时调用迭代计划会议&#xff0c;以生成该迭代的编程任务计划。每次迭代为1到3周。 客户从发布计划中按照对客户最有价值的顺序选择用户故事进行此次迭代。还选择了要修复的失败验收测试。客户选择的用户故事的估计总计达到上次…

Jvm面试题总结及答案 300道(针对Jvm的面试题 )

Jvm面试题及答案&#xff08;Jvm面试题大全带答案&#xff09;发现网上很多Jvm面试题及答案整理都没有答案&#xff0c;所以花了很长时间搜集&#xff0c;本套Jvm面试题大全&#xff0c;有大量经典的Jvm面试题以及答案&#xff0c;包含Jvm语言常见面试题、面试经验技巧等&#…

【实用总结】DOM节点className操作

经常用到的小工具函数&#xff0c;每次用到都重写一遍&#xff0c;有点浪费体力&#xff0c;于是决定分阶段整理下&#xff0c;需要用到的时候就直接拷过来用了&#xff5e; 对于dom节点的className&#xff0c;常用操作不外乎增、删、查&#xff08;改可以用增删事先&#xff…