研发管理方法论之SCRUM

2011-08-15

Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。包括了一系列实践和预定义角色的过程骨架。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最先在一些国内的软件公司推行,最近2年,国内的一些主流通讯设备企业也开始实施SCRUM模式,包括诺西、华为、阿朗、爱立信、UT等大公司都在研发团队中引入了SCRUM开发模式。一个最主要的原因是由传统的瀑布开发模式向敏捷转变带来客户响应效率的提升。

理念

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

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

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

关键知识点

1. Scrum中的角色

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

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

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

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

2. Scrum会议

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

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

今天你完成了那些工作?明天你打算做什么?完成你的目标是否存在什么障碍?(Scrum主管需要记下这些障碍)每一个冲刺完成后,都会举行一次冲刺回顾会议,在会议上所有团队成员都要反思这个冲刺。举行冲刺回顾会议是为了进行持续过程改进。会议的时间限制在4小时。

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

3.文档

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

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

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

Topo研发管理系统对SCRUM的支持

Topo 研发管理系统的Scrum模块为项目的多团队Scrum模式开发提供平台支持。Topo系统的Scrum模块提供团队管理、版本管理、Build管理、Sprint管理、故事管理、任务管理及缺陷管理等功能,可以全面支持团队成员按Scrum模式进行项目开发。

免费试用
产品咨询
置顶