Wenbin's Blog

A Programmer's Blog

Scrum 简介

2013-04-09

Scrum简介

Scrum是Agile的一种方法,它是迭代的,增量型的开发流程。Scrum的开发迭代周期称为Sprint,一个Sprint一般为3-4周,并且相互衔接。Scrum有3种基本角色: Product Owner,Scrum Master,开发Team。Scrum有下面几个基本的活动: 准备product backlog, sprint 计划会议, 每日例会, sprint成果展示/评审,sprint 总结。然后开始一个sprint计划会议,准备下一个迭代。Scrum中的每项活动都有时间限制(time box),每项活动必须在规定的时间你完成。 scrum 通过不断地迭代的方式,产品功能不断地在每个sprint中被增加和完善。 每个sprint结束后,team可以提供一个可以发布的简易版的产品, 这个简易版产品包含了产品的核心功能和价值。这个简易版本会随着迭代的进行,功能不断地被增强和完善。

Scrum中的角色:

Product Owner 负责把从客户,市场得到的需求转化为一个根据重要性排列的需求列表--Product backlog。 Product Owner要求对产品的商业价值非常理解,能把最能体现这种价值的需求排在product backlog的最前面。这样能保证系统的核心功能被尽早地开发出来,可以尽早地进行测试,试用。 Product Owner可以是产品经理,或者最了解客户需求的人,他的工作成果是为产品开发提供product backlog,而且要给produc backlog中的每一项(每一个story)标记出重要性。 Scrum Master: Scrum Master的主要职责是为帮助scrum在团队顺利实施。Scrum Master 不是项目经理,他只是帮助team能顺利按照Scrum的流程运转, 协助team安排会议等。Scrum Master必须在一个sprint中防止team被外来的干扰或者突发的需求打扰, 这样开发团队可以在一个sprint的周期中集中精力完成sprint中的任务。 开发团队:就是具体做事,实现产品功能的人。Scrum 团队要求在每个sprint结束的时候提交他们在sprint开始的时候承诺的功能,这样就要求Scrum团队的成员有很强的责任心和自律性。

Scrum的开发流程和活动:

下面的这个图是Scrum中的流程图: Scrum Process

Scrum 启动: 准备product backlog

Scrum 启动的第一步是Product owner 展示产品的远景规划,然后把这些需求(story)列在product backlog中,然后按照这些需求的重要性对他们进行排序,把最重要的排在最前面。在Product Backlog列表中越底端的是更大和粗略的项目;当它们接近被开发时,产品所有者 (Product Owner)会添加更多的详细资料。 Product Backlog是由产品所有者 (Product Owner)随时更新,以反映客户需求的变化,新的想法和见识,竞争对手的发布,出现的技术障碍等等。团队提供给产品所有者 (Product Owner)在Product Backlog中每一项所需的相对工作的粗略估计,这可以帮助产品所有者 (Product Owner)作出优先权项的决策(一些项成为非优先权项,是当产品所有者 (Product Owner)了解到其交付需要花费大量的工作)。

product backlog

Sprint 计划会议:

Sprint计划会议在每一Sprint的启始阶段进行,时间限制:一般是4-8个小时 在Sprint计划会议的第一部分,产品所有者 (Product Owner)和Scrum开发团队(在Scrum Master的协助下)共同评审Product Backlog,讨论Backlog中各项目的目标和背景,并提供Scrum开发团队深入了解产品所有者(Product Owner)想法的机会。

在会议的第二部分,Scrum开发团队从Product Backlog中挑选项目并承诺在Sprint的末期完成任务,从Product Backlog的顶端开始(换而言之,从对产品所有者 (Product Owner)具有最高优先权的项目开始)并按列表顺序依次工作。这是Scrum的重要实践之一:开发团队决定承诺完成工作量的多少,而不是由产品所有者 (Product Owner)安排工作量。这就使任务的交付更可靠;第一,因为开发团队承诺工作量,而不是其他人代替其“承诺”工作量;第二,开发团队自己决定所需要的工作量,而不是其他人决定工作量“应该”是多少。产品的所有者对于开发团队承诺任务多少没有控制权,他或她只知道开发团队负责的项目是由Product Backlog中按顺序从上至下进行的——换而言之,是从他或她选择的最重要的项目开始。开发团队可以从列表底层选择项目提前完成,如果其对于整个开发具有意义(比如,提升和快速完成较低优先权的项目,作为完成较高优先权项目的一部分)。

Scrum的重要支柱之一是当Scrum开发团队确认承诺任务后,产品所有者 (Product Owner)在此Sprint期间不可以添加新的需求。这就意味着即使在Sprint中途,产品所有者(Product Owner)想要添加新要求,他在下一新的Sprint开始前不可能作出任何变更的决定。如果一个外部情况出现致使项目优先级的变化,意味着如果开发团队按原计划工作将会是浪费时间,产品所有者 (Product Owner)此时可以结束该Sprint;意味着开发团队停止一切工作,重新开始Sprint计划会议等等。此种决断会产生很大的影响, 除非在非常特别情况下,不会采用这种方式。

Sprint计划会议结束后的产物是sprint backlog。 Sprint backlog中的项目是从product backlog中复制来的,不过可能有些项目被进一步进行了分解和细化,下面是一个sprint backlog图:

sprint backlog

每日站立例会:

每当Sprint开始,Scrum开发团队将会实施另一个Scrum的重要实践方法:每日(站立)例会。这是在每个工作日特 定的时间(一般是早上)举行的短小(15分钟)的会议,Scrum开发团队的每一成员都将参与;每个与会者在发言是要回答下面3个问题: 1.我昨天做了什么 2.我今天打算做什么 3,我昨天碰到了什么问题 在每日站立例会中,不需要讨论,必要的讨论可以在会后进行。开会的时候,每个发言人是一个消息的广播者,而其他人则只是接受者。 Scrum Master 有必要把每个人发言时提到的问题记录下来,以便在会后协助碰到困难的人解决问题。每日例会之后的每个成员要更新它在sprint backlog中的每个任务的剩余工作时间。而Scrum Master则要帮助team 汇总每个人的更新后,更新整个team的工作进度到下面的一个图中:

sprint burndown

Sprint 成果展示/评审

在Sprint结束后,将进行Sprint评审,团队在此期间展示他们所构造的产品。出席此会议的有产 品所有者 (Product Owner),开发团队成员,ScrumMaster,加上客户,项目管理者,专家,高层人士和任何对此感 兴趣的人。这不是开发团队做成果“演讲”——会议上不会有PowerPoints图片文件,通常会议不会需要超过30分钟的准备时间——这只是简单的展示工作结果,所有与会人员可以提出问题和建议。会议可以持续10分钟,也可以是两个小时——会议目的只是对工作结果的展示和听取反馈。

Sprint 总结:

在Sprint评审之后,开发团队会进行Sprint回顾。有些开发团队会跳过此过程, 这是不合适的,因为它是Scrum使潜在的改进可视的重要技巧,并可以将其转化为结果。这是提供给开发团队的非常好的机会,来讨论什么方法能起作用而什么不起作用,并一致通过改进的方法。

更多资料:

http://zh.wikipedia.org/wiki/Scrum

http://www.controlchaos.com/

Comments