Scrum

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

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

Scrum
历史

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

Scrum的特性

Scrum是一个包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括:

  1. 'Scrum Master' 是Scrum教练和团队带头人,确保团队合理的运作Scrum,并帮助团队移除实施中的障碍;
  2. 产品负责人(Product Owner),确定产品的方向和愿景,定义产品发布的内容、优先级及交付时间,为产品ROI负责;
  3. 开发团队(Team),一个跨职能的小团队,人数5-9人,团队拥有交付可用软件需要的各种技能。

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

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

介绍来自:http://zh.wikipedia.org/wiki/Scrum