`

敏捷软件开发之Scrum

阅读更多

Source: http://www.brizo2.cn/2010/04/20/scrum/

Wiki: http://en.wikipedia.org/wiki/Scrum_(development)

 

Scrum 是一种迭代式增量软件开发过程,通常用于敏捷软件开发 。Scrum在英语的意思是橄榄球里的争球。

虽然Scrum是为管理软件开发项目而开发的,它同样可以用于运行软件维护团队,或者作为计划管理方法:Scrum of Scrums .


Scrum的特性

Scrum过程

Scrum是一个包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管 角色负责维护过程和任务,产品负责人 代表利益所有者,开发团队 包括了所有开发人员。

在每一次冲刺(一个15到30 天周期 ,长度由开发团队决定),开发团队创建可用的(可以随时推出)软件的一个增量。每一个冲刺所要实现的特性来自产品订单(product backlog), 产品订单是按照优先级排列的要完成的工作的概要的需求。那些订单项会被加入一次冲刺由冲刺计划会议决定。 在会议中,产品负责人告诉开发团队他需要完成产品订单中的哪些订单项。开发团队决定在下一次冲刺中他们能够承诺完成多少订单项。[4]   在冲刺的过程中,没有人能够变更冲刺订单(sprint backlog),这意味着在一个冲刺中需求是被冻结的。

管理Scrum过程有很多实施方法,从白板上的即时贴到软件包。Scrum最大的好处是它非常容易学习,而且应用Scrum不需要太多的投入。

Scrum中的角色

Scrum定义了许多角色,根据猪和鸡的笑话[4] 分为两组,

一天,一头猪和一只鸡在路上散步,鸡看了一下猪说,“嗨,我们合伙开一家餐馆怎么样?”,猪回头看了一下鸡说,“好主意,那你准备给餐馆起什么名字呢?”,鸡想了想说“餐馆名字叫火腿和鸡蛋怎么样?”,“我不这么认为”,猪说,“我全身投入,而你只是参与而已”

"猪"角色

  是全身投入项目和Scrum过程的人; they are the ones with "their bacon on the line."

产品负责人
产品负责人代表了客户的意愿。这保证了Scrum团队在做从业务角度来说正确的事情。产品负责人编写  用户故事 ,排出优先级,并放入产品订单。
Scrum主管(或促进者)
Scrum主管促进  Scrum 过程,他的主要工作是去除那些影响团队交付冲刺目标的障碍。Scrum主管并非团队的领导(由于他们是自我组织的),而是负责屏蔽外界对开发团队的干扰。Scrum主管确保Scrum过程按照初衷使用。Scrum主管是规则的执行者。
开发团队
负责交付产品的团队。由5至9名具有跨职能技能的人(设计者,开发者等)组成的小团队完成实际的开发工作。。

"鸡"角色

鸡角色并不是实际Scrum过程的一部分,但是必须考虑他们。  敏捷   方法的一个重要方面是使得用户和利益相关者参与到过程中的时间。参与每一个冲刺的评审和计划,并提供反馈对于这些人来说是非常重要的。

用户
软件是为了某些人而创建!就像“假如森林里有一棵树倒下了,但没有人听到,那么它算发出了声音吗”,“假如软件没有被使用,那么它算是被开发出来了么?”
利益所有者(客户,提供商)
影响项目成功的人,但只直接参与冲刺评审过程。
经理
为产品开发团体架起环境的那个人

Scrum会议

在冲刺中,每一天都会举行项目状况会议,被称为“scrum”或“每日站立会议”。每日站立会议有一些具体的指导原则:

  • 会议准时开始。对于迟到者团队常常会制定惩罚措施(例如罚款,做俯卧撑,在脖子上挂橡胶鸡玩具)
  • 欢迎所有人参加,但只有"猪"可以发言。
  • 不论团队规模大小,会议被限制在15分钟。
  • 所有出席者都应站立。(有助于保持会议简短)
  • 会议应在固定地点和每天的同一时间举行。

在会议上,每个团队成员需要回答三个问题:[4]

  • 今天你完成了那些工作?
  • 明天你打算做什么?
  • 完成你的目标是否存在什么障碍?(Scrum主管需要记下这些障碍)

每一个冲刺完成后,都会举行一次冲刺回顾会议,在会议上所有团队成员都要反思这个冲刺。举行冲刺回顾会议是为了进行持续过程改进。会议的时间限制在4小时。

Scrum提倡所有团队成员坐在一起工作,进行口头交流,以及强调项目有关的规范(disciplines),这些有助于创造自我组织的团队。

Scrum的一个关键原则是承认客户可以在项目过程中改变主意,变更他们的需求,而预测式和计划式的方法并不能轻易地解决这种不可预见的需求变化。 同样,Scrum采用了经验方法– 承认问题无法完全理解或定义,而是关注于如何使得开发团队快速推出和响应不断出现的需求的能力最大化。

文档

产品订单

产品订单(product backlog )是整个项目的概要文档。产品订单包括所有所需特性的粗略的描述。产品订单是关于将要创建 的什么产品。产品订单是开放的,每个人都可以编辑。产品订单包括粗略的估算,通常以天为单位。估算将帮助产品负责人衡量时间表和优先级(例如,如果"增加 拼写检查"特性的估计需要花3天或3个月,将影响产品负责人对该特性的渴望).

冲刺订单

冲刺订单(sprint backlog )是大大细化了的文档,包含团队如何实现下一个冲刺的需求的信息。任务被分解为以小时为单位,没有任务可以超过16个小时。如果一个任务超过16个小时,那么它就应该被进一步分解。冲刺订单上的任务不会被分派,而是由团队成员签名认领他们喜爱的任务。

燃尽图

燃尽图 (burn down chart)是一个公开展示的图表,显示当前冲刺中未完成的任务数目,或在冲刺订单上未完成的订单项的数目。不要把燃尽图与挣值图 相混淆。A burn down chart could be flat for most of the period covered by a sprint and yet the project could still be on schedule.

自适应的项目管理

以下是一些Scrum的通用实践:

  • 客户成为开发团队中的一部分。(例如客户肯定对开发的结果真正感兴趣。)
  • 和所有其他形式的敏捷软件过程一样,Scrum有频繁的包含可以工作的功能的中间可交付成果。这使得客户可以更早的得到可以工作的软件,同时使得项目可以变更项目需求以适应不断变化的需求。
  • 频繁的风险和缓解计划是由开发团队自己制定。– 在每一个阶段根据承诺进行风险缓解,监测和管理(风险分析)。
  • 计划和模块开发的透明 – 让每一个人知道谁负责什么,以及什么时候完成。
  • 频繁的利益所有人会议,以跟踪项目进展 – 平衡的(发布,客户,员工,过程)仪表板更新 – 利益所有者更新 – 你必须拥有预警机制,例如提前了解可能的延迟或偏差。
  • 没有问题会被藏在地毯下。认识到或说出任何没有预见到的问题并不会受到惩罚。
  • 在工作场所和工作时间内必须全身心投入。– 完成更多的工作并不意味着需要工作更长时间。

Scrum术语

下面是Scrum用到的术语:

角色

产品负责人 
负责维护产品订单的人,代表利益相关者的利益。
Scrum主管 
为Scrum过程负责的人,确保scrum的正确使用并使得Scrum的收益最大化。
开发团队 
由负责自我管理开发产品的人组成的跨职能团队。
Scrum团队
产品负责人,Scrum主管和开发团队。

工件

冲刺燃尽图 
在冲刺长度上显示每天进展的图。
产品订单 
按照优先级排序的高层需求。
冲刺订单
要在冲刺中完成的任务的清单。

其他

冲刺 
一个时间周期(通常在2周到1个月之间),开发团队会在此期间内完成所承诺的一组订单项的开发。

Scrum在其他领域的应用

虽然Scrum最初只应用于软件开发,它也可以被成功地应用于其他产业。现在Scrum通常被认为是一种用于开发任何产品或管理人和工作的迭代式的,增量的过程。

Scrum用于产品开发

将Scrum应用于产品开发是在《"T新新产品开发游戏 "》(哈佛商业评论 86116:137-146, 1986年)第一次提出,之后野中郁次郎 竹内弘高 合著的《"创造知识的企业 "》(牛津大学出版社,1995年)进行了详细的阐述。今天Scrum被用于开发金融产品,互联网产品,以及医药产品。

Scrum用作营销项目管理方法

由于市场营销 通常以项目的方式运作,许多一般项目管理的原则应用在市场营销上。市场营销也可以像项目管理 技术那样进行优化。  以Scrum方法进行市场营销 被认为有助于克服市场营销经理们所遇到的问题。短时和固定的会议对于小的市场营销团队来说很重要,这是因为团队的每一个成员都可以了解其他人在做些什么,以及整个团队在朝着什么方向前进。Scrum在市场营销中应用可以:

  • 在早期发现可能的问题,可以更快地,最小损失地应对问题。 根据Scrum的主要原则 “没有问题被扫入地毯下”,Scrum鼓励每一个团队成员描述他所遇到的困难,而这个困难可能会对整个团队的工作造成影响。
  • 降低财务风险。 在每一个冲刺周期的开始,企业所有者可以不付出任何代价的改变任何市场营销的因素:包括增加投资以夸大顾客数量,减少投资直至未知风险被减轻,或用于支持其他活动。
  • 使得市场营销计划更灵活。采用冲刺的短期市场营销计划可以更加有效。如果一种促销方法在冲刺过程中显示无效,市场营销经理有机会将其换成另一种促销方法。向每一个团队成员说明每一个小的,但重要的任务的交付时间也变得更容易。
  • 使得客户以不同的方式参与。
Scrum 中,产品要完成的功能清单叫做产品Backlog
每一个Backlog 项通常也叫Story ,因为它是由User Story 来描述的,一个Story 是由一个完整的User Story 来描述的。有时候一个比较复杂的Story 也可以分解成更小的Story

Task
是任务,在具体实现每个Story 的时候都要将其分解成具体的任务,比如编码,测试,调研,Code Review 等等,这些都是Task 而不能叫Story

2
4
分享到:
评论
1 楼 zerostar88 2010-04-26  
scrum内容来自:
scrum
(=scrummage) 扭打,混乱,<美>[橄]两队并列争球



scrum 软件开发模型是敏捷开发的一种

Scrum的基本假设是:

开发软件就像开发新产品,无法一开始就能定义软件产品最终的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证专案成功。Scrum将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进。

Scrum开发流程通常以30天(或者更短的一段时间)为一个阶段,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部分,开发团队必须尽力于30天后交付成果,团队每天用15分钟开会检查每个成员的进度与计划,了解所遭遇的困难并设法排除。




二Scrum较传统开发模型的优点

Scrum模型的一个显著特点就是响应变化,它能够尽快地响应变化。下面的图片使用传统的软件开发模型(瀑布模型、螺旋模型或迭代模型)。随着系统因素(内部和外部因素)的复杂度增加,项目成功的可能性就迅速降低。


三Scrum模型

一)有关Scrum的几个名词



backlog:可以预知的所有任务,包括功能性的和非功能性的所有任务。

sprint:一次跌代开发的时间周期,一般最多以30天为一个周期.在这段时间内,开发团队需要完成一个制定的backlog,并且最终成果是一个增量的,可以交付的产品。

sprintbacklog:一个sprint周期内所需要完成的任务。

scrumMaster:负责监督整个Scrum进程,修订计划的一个团队成员。

time-box:一个用于开会时间段。比如每个dailyscrummeeting的time-box为15分钟。

sprintplanningmeeting:在启动每个sprint前召开。一般为一天时间(8小时)。该会议需要制定的任务是:产品Owner和团队成员将backlog分解成小的功能模块,决定在即将进行的sprint里需要完成多少小功能模块,确定好这个ProductBacklog的任务优先级。另外,该会议还需详细地讨论如何能够按照需求完成这些小功能模块。制定的这些模块的工作量以小时计算。



DailyScrummeeting:开发团队成员召开,一般为15分钟。每个开发成员需要向ScrumMaster汇报三个项目:今天完成了什么? 是否遇到了障碍? 即将要做什么?通过该会议,团队成员可以相互了解项目进度。


Sprintreviewmeeting:在每个Sprint结束后,这个Team将这个Sprint的工作成果演示给ProductOwner和其他相关的人员。一般该会议为4小时。

Sprintretrospectivemeeting:对刚结束的Sprint进行总结。会议的参与人员为团队开发的内部人员。一般该会议为3小时。



二)实施Scrum的过程简单介绍

1)将整个产品的backlog分解成SprintBacklog,这个SprintBacklog是按照目前的人力物力条件可以完成的。
2)召开sprintplanningmeeting,划分,确定这个Sprint内需要完成的任务,标注任务的优先级并分配给每个成员。注意这里的任务是以小时计算的,并不是按人天计算。
3)进入sprint开发周期,在这个周期内,每天需要召开DailyScrummeeting。
4)整个sprint周期结束,召开Sprintreviewmeeting,将成果演示给ProductOwner.
5)团队成员最后召开Sprintretrospectivemeeting,总结问题和经验。
6)这样周而复始,按照同样的步骤进行下一次Sprint.

相关推荐

    敏捷软件开发之Scrum实践

    敏捷软件开发之Scrum实践敏捷软件开发之Scrum实践敏捷软件开发之Scrum实践

    Scrum敏捷软件开发过程.pdf

    Scrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程....

    .NET敏捷软件开发(scrum精髓)

    敏捷软件开发(scrum精髓)敏捷软件开发(scrum精髓)敏捷软件开发(scrum精髓)敏捷软件开发(scrum精髓)敏捷软件开发(scrum精髓)敏捷软件开发(scrum精髓)敏捷软件开发(scrum精髓)敏捷软件开发(scrum精髓)...

    Scrum敏捷软件开发

    《Scrum敏捷软件开发》是敏捷联盟及Scrum联盟创始人之一、敏捷估算及计划的鼻祖Mike Cohn三大经典著作中影响最为深厚的扛鼎之作,也是全球敏捷社区中获得广泛肯定的企业敏捷转型权威参考。作者花四年时间,把自己近...

    Scrum敏捷软件开发+Scrum精髓_敏捷转型指南_带书签目录 高清完整版

    Scrum敏捷软件开发+Scrum精髓_敏捷转型指南 两本书都是高清并带目录的,自己找过来看的,分享下。

    最完整的Scrum敏捷软件开发过程.ppt

    什么是敏捷软件开发? 敏捷方法的项目计划 敏捷项目管理和传统项目管理 为什么使用敏捷? Scrum概述 Scrum的角色 Scrum实践和工作产品 敏捷开发中的估计方法 测试驱动开发 Scrum应用 支持工具和模版 一些常见的...

    Scrum敏捷软件开发方法

    Scrum敏捷软件开发方法

    最完整的Scrum敏捷软件开发过程

    最完整的Scrum敏捷软件开发过程最完整的Scrum敏捷软件开发过程最完整的Scrum敏捷软件开发过程最完整的Scrum敏捷软件开发过程

    敏捷软件开发模型SCRUM介绍.doc

    介绍敏捷开发中的一个典型模型SCRUM,SCRUM 同极限编程一样越来越广泛地应用到日常软件开发实践中。

    [免费PDF高清]Scrum敏捷软件开发

    [免费PDF高清]Scrum敏捷软件开发 [免费PDF高清]Scrum敏捷软件开发[免费PDF高清]Scrum敏捷软件开发

    Scrum 敏捷软件开发

    Scrum 敏捷软件开发

    Scrum敏捷软件开发_original.pdf

    Scrum敏捷软件开发_original.pdf

    Scrum敏捷软件开发中文版

    这本书是Scrum敏捷软件开发的中文译版英文书名为 Succeeding with Agile:Software Development Using Scrum 作者Mike Cohn 是软件开发项目管理的经典书籍

    敏捷软件开发模型-Scrum

    敏捷软件开发模型—Scrum

    Scrum敏捷开发软件过程ppt

    图文并茂的介绍了敏捷开发及Scrum过程

    Scrum实战 敏捷软件项目管理与开发

     Andrew在大、中、小型公司中的项目管理、企业架构和软件开发等领域担任高级职务。作为经验丰富的敏捷和精益教练,Andrew帮助许多公司在实际项目中成功地实施了敏捷(Scrum)和精益(Kanban),培训美国和其他国家...

    Scrum敏捷软件开发过程

    Scrum敏捷软件开发过程 敏捷软件开发是软件项目的一个概念框架. 有许多建立在敏捷概念上的方法,如 Scrum 和 Extreme Programming (XP). 与僵化的、重量级的、官僚式的方法形成对照,比如瀑布模型(指纯粹形式的) ...

Global site tag (gtag.js) - Google Analytics