# Scrum

#### 百科名片

]敏捷软件开发模型--SCRUM

Scrum是一种迭代式增量软件开发过程，通常用于敏捷软件开发。包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务，产品负责人代表利益所有者，开发团队包括了所有开发人员。

目录

  简介
  Scrum创始人简介
  1. Jeff Sutherland
  2. Ken Schwaber
  3. 合作经历
  历史
  Scrum的特性
  Scrum中的角色
  1. "猪"角色
  2. "鸡"角色
  Scrum会议
  文档
  1. 产品订单
  2. 冲刺订单
  3. 燃尽图
  自适应的项目管理
  Scrum术语
  1. 角色
  2. 工件
  3. 活动
  4. 其他
  Scrum其他领域的应用
  1. Scrum用于产品开发
  2. Scrum营销项目管理方法
  3. 基于Scrum的项目管理软件
  展开

## 简介

Scrum是一种迭代式增量软件开发过程，通常用于敏捷软件开发。Scrum在英语的意思是橄榄球里的争球。
虽然Scrum是为管理软件开发项目而开发的，它同样可以用于运行软件维护团队，或者作为计划管理方法：Scrum of Scrums.

## Scrum创始人简介

### Jeff Sutherland

Jeff Sutherland的第一份工作居然是美国空军战斗机飞行员，还曾于1967年获得了“壮志凌云”称号，完成过100次飞越北部越南的作战任务。服役后期，他到斯坦福大学拿下统计学硕士学位，并在美国空军学院教授数学统计

Jeff Sutherland

学和概率学。11年军旅生涯结束后，他成为了科罗拉多医学院的教师并获得了博士学位。在诺贝尔化学奖得主莱纳斯·鲍林的赞助下，他以放射学、生物学及预防医学助理教授的身份参与了维生素与癌症研究中心的创立，担任八年国家癌症中心的主要研究员，负责科罗拉多地区所有癌症患者的数据统计和IT方案与研究，整合了国家注册、临床试验、流行病学研究和癌变的超级计算机数学模型。1983年，他进入了一家遍及北美、经营着150家银行的公司，职务为先进系统副总裁及ATM业务部总经理。此后，Sutherland先后担任了11家软件公司的CEO、CTO或者工程副总裁，积累了丰富的软件开发经验。[1]

### Ken Schwaber

Ken Schwaber最初的职业也很特别——商船经理。在随后40多年开发生涯的前10年中，他曾经编写过操作系统，搞过嵌入式，为IBM大型机开发系统软件；先后在芝加哥大学、伊利诺伊理工学院、王安公司实验室工作，

Ken Schwaber

并逐渐展现出在软件开发方法上的天赋。在CASE工具和结构化方法热门的时候，他自己创办了ADM公司，从事软件开发方法培训服务。期间，公司开发了软件方法自动化工具MATE，用来生成各种软件流程所需的模板、计划等，生意很好。[2]

### 合作经历

Sutherland和Schwaber相识于1980年代早期。1987年，两人开始合作。一天，Sutherland问Schwaber：“你们开发MATE工具都用了现在流行的哪一种方法？”“当然什么都没用，”Schwaber回答，“要不然公司早就完蛋了。”他们意识到问题的严重性，开始与开发者交谈，研究新方法。
1993年，Sutherland读到了两位日本管理教授竹内弘高和野中郁次郎介绍制造业里出现的新的产品开发方法Rugby（橄榄球）的文章。这种方法的特点是整个流程都由一个高性能、跨功能的团队执行到底。他受到启发，结合自己多年的经验，与Easel公司的John Scumniotales和Jeff McKenna一起开发了一套方法，取名为Scrum（来源于橄榄球术语，不是缩写）。
而Schwaber则从杜邦公司一位化工过程控制专家那里取经，意识到项目分为两种：确定性项目，一切都已经确定，可以自动化生产流程；实验性项目，充满不确定性，哪怕一点微小的变化也会牵一发而动全身，因此只能用各种仪表不断监控，随时做出调整——这就是每日站会的由来。
两人在一个IBM项目合作，并做了更详尽的研究，Scrum诞生了。1995年OOPSLA大会上他们第一次向世人介绍了Scrum。可当时，两个人的公司都还在做千年虫和各种重型开发方法咨询方面的业务呢。
进入新世纪，互联网带来的巨变使敏捷方法受到了更多开发团队的青睐，而其中Scrum以其扩展性、门槛低、名字和术语更容易被项目经理接受等因素，逐渐成为最受欢迎的敏捷流派。而推出CSM等系列认证，虽然争议颇大，但客观上对Scrum扩大影响力起到了重要作用。
今天，Scrum的影响已经远远超出软件开发，成为零售、军事、风险投资甚至学校里完成各种任务的创新方法，正在改变着世界。

## 历史

1986年，竹内弘高和 野中郁次郎阐述了一种新的整体性的方法 ，该方法能够提高商业新产品开发的速度和灵活性：他们将这种新的'整体性方法与橄榄球相比较，前者各阶段相互重叠，并且由一个跨职能团队在不同的阶段完成整个过程，而后者整个团队"tries to go to the distance as a unit, passing the ball back and forth"。他们对来自汽车，照片机器，计算机和打印机等产业的案例进行了研究。1991年，DeGrace和Stahl在《Wicked Problems, Righteous Solutions》一书中将这种方法称为 Scrum，在竹内弘高和 野中郁次郎的文章中提到的橄榄球术语。1990年代初，肯·施瓦伯在其公司使用了一种方法Advanced Development Methods（先进开发方法），这种方法后来发展为Scrum。同时，杰夫·萨瑟兰在Easel公司开发了一种类似的方法，并首次称之为Scrum。1995年，在奥斯汀举办的OOPSLA '95上，萨瑟兰和施瓦伯联合发表了论文首次提出了Scrum概念。施瓦伯和萨瑟兰在接下的几年里合作，将上述的文章，他们的经验，以及业界的最佳实践融合起来，形成我们现在所知的Scrum。2001年，施瓦伯与 麦克·比窦（Mike Beedle）合著了《敏捷软件开发-使用Scrum过程》一书，介绍了Scrum方法。

## Scrum的特性

Scrum过程
Scrum是一个包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务，产品负责人代表利益所有者，开发团队包括了所有开发人员。
在每一次冲刺（一个15到30 天周期 ，长度由开发团队决定），开发团队创建可用的（可以随时推出）软件的一个增量。每一个冲刺所要实现的特性来自产品订单（product backlog）， 产品订单是按照优先级排列的要完成的工作的概要的需求。哪些订单项会被加入一次冲刺由冲刺计划会议决定。 在会议中，产品负责人告诉开发团队他需要完成产品订单中的哪些订单项。开发团队决定在下一次冲刺中他们能够承诺完成多少订单项。 在冲刺的过程中，没有人能够变更冲刺订单（sprint backlog），这意味着在一个冲刺中需求是被冻结的。
管理Scrum过程有很多实施方法，从白板上的即时贴到软件包。Scrum最大的好处是它非常容易学习，而且应用Scrum不需要太多的投入。

## Scrum中的角色

Scrum定义了许多角色，根据猪和鸡的笑话分为两组，猪和鸡
一天，一头猪和一只鸡在路上散步，鸡看了一下猪说，“嗨，我们合伙开一家餐馆怎么样？”，猪回头看了一下鸡说，“好主意，那你准备给餐馆卖什么呢？”，鸡想了想说“餐馆卖火腿和鸡蛋怎么样？”，“我不这么认为”，猪说，“我全身投入，而你只是参与而已”

### "猪"角色

猪 是全身投入项目和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分钟。所有出席者都应站立。（有助于保持会议简短）会议应在固定地点和每天的同一时间举行。在会议上，每个团队成员需要回答三个问题：
今天你完成了哪些工作？明天你打算做什么？完成你的目标是否存在什么障碍？（Scrum主管需要记下这些障碍）
每一个冲刺完成后，都会举行一次冲刺回顾会议，在会议上所有团队成员都要反思这个冲刺。举行冲刺回顾会议是为了进行持续过程改进。会议的时间限制在4小时。
Scrum提倡所有团队成员坐在一起工作，进行口头交流，以及强调项目有关的规范（disciplines），这些有助于创造自我组织的团队。
Scrum的一个关键原则是承认客户可以在项目过程中改变主意，变更他们的需求，而预测式和计划式的方法并不能轻易地解决这种不可预见的需求变化。同样，Scrum采用了经验方法– 承认问题无法完全理解或定义，而是关注于如何使得开发团队快速推出和响应不断出现的需求的能力最大化。

## 文档

### 产品订单

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

### 冲刺订单

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

### 燃尽图

燃尽图（burn down chart）是一个公开展示的图表，显示当前冲刺中未完成的任务数目，或在冲刺订单上未完成的订单项的数目。不要把燃尽图与挣值图相混淆。燃尽图可以使'冲刺(sprint)'平稳的覆盖大部分的迭代周期，且使项目仍然在计划周期内。

## 自适应的项目管理

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

## Scrum术语

下面是Scrum用到的术语:

### 角色

产品负责人 Product Owner： 负责维护产品订单的人，代表利益相关者的利益。
Scrum主管 Scrum Master： 为Scrum过程负责的人，确保scrum的正确使用并使得Scrum的收益最大化。一般不翻译。
开发团队 Team: 由负责自我管理开发产品的人组成的跨职能团队。

### 工件

产品订单 Product Backlog：按照优先级排序的高层需求。
冲刺订单 Sprint Backlog：要在冲刺中完成的任务的清单。
冲刺燃尽图 Burndown Chart：在冲刺长度上显示所有剩余工作时间逐日递减的图，因整体上总是递减而得名。

### 活动

计划会 Sprint Planning Meeting：在每个冲刺之初，由产品负责人讲解需求，并由开发团队进行估算的计划会议。
每日立会 Daily Standup Meeting：团队每天进行沟通的内部短会，因一般只有15分钟且站立进行而得名。
评审会 Review Meeting：在冲刺结束前给产品负责人演示并接受评价的会议。
反思会/回顾会 Retrospective Meeting：在冲刺结束后召开的关于自我持续改进的会议。

### 其他

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

## Scrum其他领域的应用

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

### Scrum用于产品开发

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

### Scrum营销项目管理方法

由于市场营销通常以项目的方式运作，许多一般项目管理的原则应用在市场营销上。市场营销也可以像项目管理技术那样进行优化。 以Scrum方法进行市场营销被认为有助于克服市场营销经理们所遇到的问题。短时和固定的会议对于小的市场营销团队来说很重要，这是因为团队的每一个成员都可以了解其他人在做些什么，以及整个团队在朝着什么方向前进。Scrum在市场营销中应用可以：
在早期发现可能的问题，可以更快地，最小损失地应对问题。 根据Scrum的主要原则 “没有问题被扫入地毯下”，Scrum鼓励每一个团队成员描述他所遇到的困难，而这个困难可能会对整个团队的工作造成影响。降低财务风险。 在每一个冲刺周期的开始，企业所有者可以不付出任何代价的改变任何市场营销的因素：包括增加投资以夸大顾客数量，减少投资直至未知风险被减轻，或用于支持其他活动。使得市场营销计划更灵活。采用冲刺的短期市场营销计划可以更加有效。如果一种促销方法在冲刺过程中显示无效，市场营销经理有机会将其换成另一种促销方法。向每一个团队成员说明每一个小的，但重要的任务的交付时间也变得更容易。使得客户以不同的方式参与。

### 基于Scrum的项目管理软件

禅道项目管理软件，也称ZenTaoPMS，是为了解决众多企业在管理过程中出现的混乱，无序的现象，开发出来的一套项目管理软件。它集产品管理、项目管理、测试管理于一身，同时包含事务管理、组织管理等诸多功能，是中小型企业项目管理的最佳选择！
ZenTaoPMS基于国际流行的敏捷项目管理方式——Scrum，同时也融合了PMP中的很多概念，完美地体现了Scrum中迭代开发的精髓，很好地融合了燃尽图的概念。ZenTaoPMS基于LGPL协议，企业或者个人都可以免费获取禅道项目管理软件的源代码并安装使用，并可以结合自己的实际需要进行修改。禅道在遵循SCRUM管理方式基础上，又融入了国内研发现状的很多需求，比如bug管理，测试用例管理，发布管理，文档管理等。因此禅道不仅仅是一款scrum敏捷项目管理工具，更是一款完备的项目管理软件。基于scrum，又不局限于scrum。

参考资料

  - 1． Jeff Sutherland ．linkedin [引用日期2012-08-21] ．

  - 2． Interview with Ken Schwaber, Part1 ．infoq [引用日期2012-08-21] ．

扩展阅读：
  - 1

    禅道SCRUM管理工具 http://www.zentao.net/

  - 2

    Scrum中文网http://www.scrumcn.com/