Scrum简介
2019-02-01 12:39 橙橙Coder 阅读(658) 评论(0) 收藏 举报1.1什么是Scrum?
Scrum (英式橄榄球争球队), 软件开发模型是敏捷开发的一种,在最近的一两年内逐渐流行起来。Scrum是一种灵活的软件管理过程。这一过程是迅速、有适应性、自组织的,它发现了软件工程的社会意义,使得团队成员能够独立地集中在创造性的协作环境下工作。Scrum才用了经验方法,承认问题无法完全理解或定义,关注于如何使得开发团队快速推出和响应需求能力的最大化。因此,Scrum的一个关键原则就是承认客户可以在项目过程中改变主意,变更他们的需求,而预测式和计划式的方法并不能轻易解决这些不可预见的需求变化。
1.2 Scrum的基本假设
开发软件就像开发新产品,无法一开始就能定义软件产品最终的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证专案成功。Scrum 将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进。
Scrum 开发流程通常以 30 天(或者更短的一段时间)为一个阶段,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部分,开发团队必须尽力于 30 天后交付成果,团队每天用 15 分钟开会检查每个成员的进度与计划,了解所遭遇的困难并设法排除。
1.3 Scrum的基本思想是:
迭代式软件开发:通过将整个软件交付过程分成多个迭代周期,帮助团队更好地应对变更、风险,实现增量交付、快速反馈。
两层项目规划:基于远粗近细、渐进明细的特点,通过将概要的项目整体规划和详细的近期迭代计划有机结合,帮助团队有效提高计划的准确度、资源管理能力和项目的按时交付能力。
整体团队协作:通过关注保持整个团队可持续发展的工作节奏、每日站立会议和自组织的工作分配,实现团队的高效协作和工作,实现提高整个团队生产力的目的。
持续集成:通过进行更频繁的软件集成,实现更早的发现和反馈错误,降低风险,并使整个软件交付过程变得更加可预测和可控,以交付更高质量的软件。
1.4 Scrum较传统开发模型的优点
Scrum模型的一个显著特点就是响应变化,它能够尽快地响应变化。
下面的图片使用传统的软件开发模型(瀑布模型、螺旋模型或迭代模型)。随着系统因素(内部和外部因素)的复杂度增加,项目成功的可能性就迅速降低。
下图是Scrum模型和传统模型的对比:


2 Scrum模型
2.1 有关Scrum的几个名词
l Backlog(订单): 可以预知的所有任务, 包括功能性的和非功能性的所有任务。
l Sprint:一次跌代开发的时间周期,一般最多以30天为一个周期.在这段时间内,开发团队需要完成一个制定的backlog,并且最终成果是一个增量的,可以交付的产品。
l sprint backlog:一个sprint周期内所需要完成的任务。
l scrumMaster: 负责监督整个Scrum进程,修订计划的一个团队成员。
l time-box: 一个用于开会时间段。比如每个daily scrum meeting的time-box为15分钟。
l sprint planning meeting: 在启动每个sprint前召开。一般为一天时间(8小时)。该会议需要制定的任务是:产品Owner和团队成员将backlog分解成小的功能模块, 决定在即将进行的sprint里需要完成多少小功能模块,确定好这个Product Backlog的任务优先级。另外,该会议还需详细地讨论如何能够按照需求完成这些小功能模块。制定的这些模块的工作量以小时计算。
l Daily Scrum meeting:开发团队成员召开,一般为15分钟。每个开发成员需要向ScrumMaster汇报三个项目:今天完成了什么? 是否遇到了障碍? 即将要做什么?通过该会议,团队成员可以相互了解项目进度。
l Sprint review meeting:在每个Sprint结束后,这个Team将这个Sprint的工作成果演示给Product Owner和其他相关的人员。一般该会议为4小时。
l Sprint retrospective meeting:对刚结束的Sprint进行总结。会议的参与人员为团队开发的内部人员。一般该会议为3小时。
2.2 实施Scrum的过程简单介绍
1) 将整个产品的backlog分解成Sprint Backlog,这个Sprint Backlog是按照目前的人力物力条件可以完成的。
2) 召开sprint planning meeting,划分,确定这个Sprint内需要完成的任务,标注任务的优先级并分配给每个成员。注意这里的任务是以小时计算的,并不是按人天计算。
3) 进入sprint开发周期,在这个周期内,每天需要召开Daily Scrum meeting。
4) 整个sprint周期结束,召开Sprint review meeting,将成果演示给Product Owner.
5) 团队成员最后召开Sprint retrospective meeting,总结问题和经验。
6) 这样周而复始,按照同样的步骤进行下一次Sprint.
整个过程如下图所示:

3 Scrum最佳实践
Scrum是一个包含了一系列实践和预定义角色的过程框架。包括了:角色、活动及输入输出的工件。主要包含以下内容:
角色:
产品负责人 Product Owner
Scrum主管 Scrum Master
团队成员
活动:
冲刺规划会议 Sprint Plan Meeting
每日站立会议 Scrum Daily Meeting
冲刺复审会议 Sprint Review Meeting
冲刺回顾会议 Sprint Retrospective Meeting
工件:
产品订单 Product Backlog
冲刺订单 Sprint Backlog
燃尽图 Burndown Chart
新的功能增量
3.1 Scrum中的角色
可以将Scrum中的角色分为两类:
一、全身投入项目和Scrum过程的人,主要包括代表利益干系人的产品负责人,同项目经理类似的Scrum主管和开发团队。
产品负责人(Product Owner):代表了客户的意愿,这保证Scrum团队在做从业务角度来说正确的事情。同时他又代表项目的全体利益干系人,负责编写用户需求(用户故事),排出优先级,并放入产品订单(Product Backlog),从而使项目价值最大化的人。他利用产品订单,督促团队优先开发最具价值的功能,并在其基础上继续开发,将最具价值的开发需求安排在下一个冲刺迭代(Sprint)中完成。他对项目产出的软件系统负责,规划项目初始总体要求、ROI目标和发布计划,并为项目赢得驱动及后续资金。
Scrum主管(Scrum Master):负责Scrum过程正确实施和利益最大化的人,确保它既符合企业文化,又能交付预期利益。Scrum主管的职责是向所有项目参与者讲授Scrum方法,正确的执行规则,确保所有项目相关人员遵守Scrum规则,这些规则形成了Scrum过程。Scrum主管并非团队的领导(由于他们是自我组织的),他的主要工作是去除那些影响团队交付冲刺目标的障碍,屏蔽外界对开发团队的干扰。"Scrum主管是保证Scrum成功的牧羊犬"。
开发团队:负责找出可在一个迭代中将产品待开发事项(冲刺订单)转化为功能增量的方法。他们对每一次迭代和整个项目共同负责,在每个冲刺中通过实行自管理、自组织,和跨职能的开发协作,实现冲刺目标和最终交付产品。一般由5~9名具有跨职能技能的人(设计者,开发者等)组成。
二、不是实际Scrum过程的一部分,但是必须考虑他们。 敏捷方法的一个重要方面是使得用户和利益所有者参与每一个冲刺的评审和计划并提供反馈。
用户:软件是为了某些人而创建!就像"假如森林里有一棵树倒下了,但没有人听到,那么它算发出了声音吗","假如软件没有被使用,那么它算是被开发出来了么?"。
利益所有者(客户,提供商):影响项目成功的人,但只直接参与冲刺评审过程。
经理:为产品开发团体架起环境的那个人。
3.2 Scrum活动
Scrum的活动主要由冲刺规划会议(Sprint Plan Meeting)、每日站立会议(Sprint Daily Meeting)、冲刺复审会议(Sprint Review Meeting)和冲刺回顾会议(Retrospective Meeting)组成。Scrum提倡所有团队成员坐在一起工作,进行口头交流,以及强调项目有关的规范(Disciplines),这些有助于创造自我组织的团队。
冲刺规划会议:冲刺开始时,均需召开冲刺规划会议,产品负责人和团队共同探讨该冲刺的工作内容。产品负责人从最优先的待开发事项中进行筛选,告知团队其预期目标;团队则提出在接下来的冲刺内,评估预期目标可实现的程度。冲刺规划会议一般不超过8小时。在前4个小时中,产品负责人向团队展示最高优先级的产品,团队则向他询问产品订单的内容、目的、含义及意图。而在后4小时,团队则计划本冲刺的具体安排。
每日站立会议:在冲刺中,每一天都会举行项目状况会议,被称为Scrum或"每日站立会议"。每日站立会议有一些具体的指导原则:
会议准时开始。对于迟到者团队常常会制定惩罚措施(例如罚款、做俯卧撑、在脖子上挂橡胶鸡玩具等)。
l 欢迎所有人参加,但只有第一类人员可以发言。
l 不论团队规模大小,会议被限制在15分钟。
l 所有出席者都应站立(有助于保持会议简短)。
l 会议应在固定地点和每天的同一时间举行。
l 在会议上,每个团队成员需要回答三个问题:
l 今天你完成了那些工作?
l 明天你打算做什么?
l 完成你的目标是否存在什么障碍?(Scrum主管需要记下这些障碍)
冲刺复审会议:一般4个小时,由团队成员向产品负责人向其他利益相关人展示Sprint周期内的产品开发情况,并决定下一次Sprint的内容。
冲刺回顾会议(Retrospective Meeting):每一个冲刺完成后,都会举行一次冲刺回顾会议,在会议上所有团队成员都要反思这个冲刺。举行冲刺回顾会议是为了进行持续过程改进。会议的时间限制在4小时。
下图所示表示Scrum方法中的主要活动和交付件。

3.3 Scrum工件
产品订单:产品订单(Product Backlog)是整个项目的概要文档,它包含已划分优先等级的、项目要开发的系统或产品的需求清单,包括功能和非功能性需求及其他假设和约束条件。产品负责人和团队主要按业务和依赖性的重要程度划分优先等级,并作出预估。预估值的精确度取决于产品订单中条目的优先级和细致程度,入选下一个冲刺的最高优先等级条目的预估会非常精确。产品的需求清单是动态的,随着产品及其使用环境的变化而变化,并且只要产品存在,它就随之存在。而且,在整个产品生命周期中,管理层不断确定产品需求或对之做出改变,以保证产品适用性、实用性和竞争性。.
冲刺订单:冲刺订单(Sprint Backlog)是大大细化了的文档,用来界定工作或任务,定义团队在Sprint中的任务清单,这些任务会将当前冲刺选定的产品订单转化为完整的产品功能增量。冲刺订单在冲刺规划会议中形成,其包含的不会被分派,而是由团队成员签名认领他们喜爱的任务。任务被分解为以小时为单位,没有任务可以超过16个小时。如果一个任务超过16个小时,那么它就应该被进一步分解。每项任务信息将包括其负责人及其在冲刺中任一天时的剩余工作量,且仅团队有权改变其内容。
燃尽图:燃尽图(Burndown Chart)是一个公开展示的图表,纵轴代表剩余工作量,横轴代表时间,显示当前冲刺中随时间变化而变化的剩余工作量(可以是未完成的任务数目,或在冲刺订单上未完成的订单项的数目)。剩余工作量趋势线与横轴之间的交集表示在那个时间点最可能的工作完成量。我们可以借助它设想在增加或减少发布功能后项目的情况,我们可能缩短开发时间,或延长开发期限以获得更多功能。它可以展示项目实际进度与计划之间的矛盾。
新的功能增量:Scrum团队在每个冲刺周期内完成的、可交付的产品功能增量。
3.4 Scrum过程说明
在Scrum项目管理过程中,一般产品负责人获取项目投资,并对整个产品的成功负责。他会协调各种利益干系人,确定产品订单中初始的需求清单及其优先级,完成项目的商业价值分析和项目整体规划,并任命合适的Scrum主管开展项目工作。下图表示Scrum方法的全景图。

在Scrum软件开发项目中,每个冲刺就是一个为期30天的迭代。在每个冲刺开始时,产品负责人和Scrum主管通过召开冲刺规划会议和"两层项目规划"的最佳实践,制定冲刺订单(类似于迭代计划),明确将在本次冲刺中实现的需求清单,相应的工作任务和负责人。在每个冲刺迭代中,团队强调应用"整体团队协作"的最佳实践,通过保持可持续发展的工作节奏和每日站立会议,实现团队的自组织、自适应和自管理,高效完成冲刺工作。在每个冲刺结束时,团队都会召开冲刺复审会议,团队成员会在会上分别展示他们开发出的软件(或其他有价值的产品),并从产品负责人和其他利益干系人那里,得到反馈信息。
在冲刺复审会议之后,团队会自觉召开冲刺回顾会议,回顾整个项目过程,讨论那些方面做得好,哪些方面可以改进,实现软件交付过程的持续、自发的改进。
浙公网安备 33010602011771号