一、Scrum开发流程介绍SCRUM 方法是由Ken Schwaber 和Jeff Sutherland 提出,旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进,名称来自英式橄榄球(在比赛中每个队员都应时刻保持对场上全局的判断,然后通过集体行动,奋力实现同一目标──胜利)。
SCRUM 方法最初实践于Easel 公司(1993 年) ,现已被数十家公司数百个项目开发中应用,适用于需求难以预测的复杂商务应用产品的开发。
SCRUM 提出的SCRUM Meeting、Sprint、Backlog、SCRUM Master 、SCRUM Team 、Demo 等模式已被PLOP 作为组织和过程模式(Organizational and Process Pattern)的标准。
SCRUM 的基本假设是:开发软件就像开发新产品,无法一开始就能定义Final Product 的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证项目成功。
Scrum 有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进,因此,SCRUM 非常适用于产品开发项目。
SCRUM 开发流程通常以1-6 周为一个迭代周期,每个迭代周期叫做一个Sprint,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部份,开发团队必须尽力于每个周期后交付成果,团队每天用15 分钟开会检视每个成员的进度与计划,了解所遭遇的困难并设法排除,决定第二天的任务安排,这样的短会就叫做scrum meeting。
SCRUM 较为有特色的,是它特别强调开发队伍和管理层的交流协作。
每天,开发队伍都会向管理层汇报进度,如果有问题,也会向管理层要求帮助解决。
SCRUM方法的开发过程包括三个过程:(1) 计划和体系结构设计(确定性过程)Backlog;(2) Sprint(经验性过程)(3) 交付和巩固(确定性过程)SCRUM 过程认为一个产品的开发将一直持续下去,除非经风险评估后认为应停止。
产品交付后的巩固活动类似于传统方法中的维护和改善,目的在于整理Sprint 期压力下忽略的工作,为下一阶段的开发做准备,以便轻装上阵。
SCRUM 对过程的管理有很多独特的方法。
SCRUM 在实践中大大提高了生产率(据软件生产率组织的Capers Jones 称可提高 6 倍)。
名词解释:1、SCRUM Meeting:团队每天用15 分钟开会检视每个成员的进度与计划,了解所遭遇的困难并设法排除,决定第二天的任务安排,这样的短会就叫做scrum meeting。
2、Sprint:SCRUM 开发流程通常以1-6 周为一个迭代周期,每个迭代周期叫做一个Sprint,由客户提供新产品的需求规格开始,发团队必须尽力于每个周期后交付成果。
3、Product backlog:这份文件主要记录被区分先后次序的客户要求列表。
Product owner 要经常更新它。
与软件项目有关的任何人都可以就里面的需求提出建议,但是只能由Product owner 来更改和分出优先级。
此文档还应该包含对所有功能的总体概括。
二、Scrum中的角色分配Scrum 中只有三个角色:Scrum master,Scrum team 和Product Owner1. Scrum masterScrum master 有别于项目经理一职,他的职责是帮助Scrum team 来处理除开发任务之外的其他事务,例如安排和主持与客户、管理层人员和股东开会。
Scrummaster 帮助开发团队进行一些重要的团队本身无法做出的决策,并且充当开发团队和外部世界之间的防火墙。
Scrum master 只是引导团队,而非控制他们。
最终,Scrum master 必须处理和项目有关的所有问题,包括团队内部问题,与管理层的接触,或者团队能力不足等。
2. Scrum teamScrum team 是可以进行自我组织的,即此团队内部自己决定哪个开发任务由谁来完成,每个成员具有相同的责任和权威。
同时,每个成员都有一定的应付开发任务的知识和经验。
团队内部具体是什么结构并没有被定义,而是有实际的项目来决定团队的规模和结构的复杂程度。
Scrum team 的规模介于5~9 人。
对于查过此规模的团队,可以将它划分为较小规模的拥有5~9 人的小组。
这样,小组内部构成一个Scrum team,而小组的Scrum master 们又构成上一层次的Scrum team。
3. Product ownerProduct owner 对所有的需求、投资回报率(Return Of Investment)、项目目标及整个项目负责。
他负责更新product backlog 并将其中的需求区分先后次序。
三、沟通和信息交流3.1 每天召开Scrum meeting在scrum meeting 中,每个人需要回到以下问题:从上次Scrum meeting 到今天做了什么?接下去的计划是什么?有什么障碍和困难?如果一个成员的问题涉及到其他成员,由他们会后自己安排临时小会讨论。
Scrum meeting 是为了帮助成员同步他们的工作,能够知道彼此地进度;同时让与会者了解遇到的障碍,这样大家可以互相帮助解决问题。
3.2 Sprint 计划会议Sprint 计划会议由2 个4 小时的分会组成,召开的时间是每个Sprint 的开始阶段。
在第一个 4 小时会议中,Scrum master, Scrum team, 管理层,Product owner 和stakeholder(如果有可能的话)讨论在接下去的Sprint 中将完成什么任务:product backlog 中优先级最高的需要实现的功能或完成的测试任务应该被选中;本Sprint 的目标也被确定下来。
(确定Sprint 目标)。
第二个 4 小时会议由Scrum master 和Scrum team 参加。
与会者把选定的任务再细化成若干小的步骤,写入Sprint Backlog。
每个小步骤应该能够在大约4~16个小时内完成。
如果一开始无法细化,可以在接下来的日子里逐步细化。
另一个很重要的会议任务是必须完成对所要完成的工作有一个总体的设计。
3. 3 Sprint-30 天迭代一个Sprint 以30 天为周期,在期间进行产品的开发和测试工作。
一个Sprint 结束之后,另一个Sprint 接下去进行,直到所有的任务完成或者资金用完为止。
这个过程称为迭代。
在每一个Sprint 结束之际,应该可以展示可工作的产品。
Sprint 的结束如期不能改变。
如果在Sprint 结束时,有些工作没有完成,那么它们应该被写回Product Backlog 中,以便在下一次Sprint 计划会议中讨论执行它们。
如果在Sprint 结束之前所有预设任务完成,可以在product owner 的帮助下,从product backlog 里选出一些任务加入Sprint backlog。
除开发团队外的任何人都不可以修改Sprint backlog。
管理层人员,product owner,Scrum team 和Scrum master 如果觉得当前的Sprint 已经没有用出或者不可能完成,可以终止一个Sprint。
当一个Sprint 结束时,测试和文档应该已经完成,并且可以提交产品了。
3. 4 回顾会议(Review meeting)在每一个Sprit 结束时,需要为product owner 和stakeholder 召开一个 4 小时的回顾会议。
会上,Scrum team 简单地展示在这个Sprint 里完成的工作(他们对会议的准备不能超过 1 小时)。
同时,关于解决方案的优劣也应在会上进行阐述和分析。
演示的结果会和计划会议中确定的Sprint 目标相比较,以决定开发团队是否完成了他们自己设定的任务。
在会上,客户可以有机会改变未来产品开发的方向,从而使开发团队能够应对不断变化的客户需求或外部环境。
3.5. Sprint 总结会议(retrospective meeting)在回顾会议后,需要召开 3 小时的总结会议,目的是总结经验教训,改进下一个Sprint 的工作。
总结会议由Scrum master, Scrum team 和,作为可选,Product owner。
每个与会者应该回答以下两个问题:在过去的一个Sprint 什么方面进行的很好?在下一个Sprint 里,那些方面可以改进?在会议上,Scrum master 的工作不是给出这两个问题的答案,而是记录下会议的结论。
经过讨论好,问题的答案和解决方案可以作为非功能性需求写入Sprint backlog 里。
这样,就可以改进下一个Sprint 的工作方法,提高工作效率,并且去除可能的障碍。
四、项目中的相关文档1. Product backlog这份文件主要记录被区分先后次序的客户要求列表。
Product owner 要经常更新它。
与软件项目有关的任何人都可以就里面的需求提出建议,但是只能由Product owner 来更改和分出优先级。
此文档还应该包含对所有功能的总体概括。
2. Sprint backlog主要记录包含优先级的在当前Sprint 里需要完成的活动或步骤。
只有Scrum team 才可以更改。
在Sprint 期间,此文档应该不断更新。
文档里应该描述每项活动,责任人和完成时间。
开发人员在每天工作完毕时更新时间信息。
此文档由Scrum master 负责管理和协调。
3. Burndown chart(剩余任务图)有两种剩余任务图。
产品任务图显示还有几天的剩余工作和已经完成了多少。
Sprint 剩余任务图则显示要完成所有在Sprint 中定义的工作,还有多少小时的工作量。
4. Sprint 目标在计划会议中,当前Sprint 所要完成的目标应该写在Sprint 目标文档中。
这样,有了参考目标,就可以组建团队并且指导团队向正确的方向开展工作。