敏捷开发 Scrum
什么是Scrum
SCRUM是以迭代、增量的方式开发产品或项目的一种开发框架。
SCRUM框架中包含了三个角色,三个工件,四个仪式。其目的是为了有效完成每一次迭代周期的工作。
SCRUM强调在Sprint结尾产生真正“完成”了的可工作产品。在软件领域是指已经集成的、完全测试过的、已经为最终用户生成文档的、潜在可交付的系统。
什么是sprint?story?task?
Sprint:指的是一次迭代,每个迭代不超过4周(通常2周),也就是我们要把产品需求分布到各个周期完成,这个过程我们称它为Sprint。
Story:用户故事,也可以看做是用户需求点。
Task:story的进一步细分。为了能够及时,高效地完成每个 Story,Scrum 团队会把每个 Story 分解成若干个 Task。每个Task 的时间最好不要超过16小时,保证在2个工作日内完成,如果 Task 的时间超过了16个小时,就说明Task的划分有问题,需要特别注意。
在Sprint过程中不可以改变需求,在下一Sprint时才接受变化,当前这么短的一个Sprint周期里只注重于短小、清晰、相对固定的目标
【注意】Sprint是受时间盒限制的,无论工作完成与否都会在特定日期结束,并且不延长。
一个简单案例
我们需要开发电子商务网站,可以分为多个sprints或模块,如登录页面,支付页面,购物车页面等。
然后,每个模块单独开发并同时向客户展示。因此,我们可以说,在每个sprint完成后,将产品发送到客户端,但不是完整的产品,而是功能的一部分。
Scrum开发流程中的三大角色
(1)产品负责人PO(Product Owner)
主要指项目经理,当然也包括一些利益相关方
- 负责确定产品的功能和达到要求的标准
- 指定软件的发布日期和交付的内容
- 有权力接受或拒绝开发团队的迭代交付成果
(2)流程管理员SM(Scrum Master)
主要指项目总管
- 负责整个Scrum流程在项目中的顺利实施和进行
- 清除开发工作之间的沟通障碍
- 带领团队持续改进
(3)开发团队(Scrum Team)
主要负责软件产品在Scrum规定流程下进行开发工作
- 每个成员可能负责不同的技术方面
- 人数控制在5-9人左右
- 为迭代交付给出承诺
三者中项目经理PO听取客户的需求和建议并对项目开发提出要求;项目总管SM一方面与项目经理PO就任务增加与否或需求变更与否进行协调,另一方面在开发组内为项目开发成员设置目标,保证项目推进;而项目开发人员负责按质按量地完成自己的任务并进行周期性的总结。
Scrum三个工件
Backlog:Backlog是Scrum中的一个专用名词,意思是待办工作事项的集合。在开发中需要明确2个Backlog。
(1)工件一:产品待办项列表 (Pruduct Backlog)
产品负责人PO负责产品代表事项列表的内容、可用性和优先级。
产品 Backlog 包括了可以预知的所有任务,包括功能性的和非功能性的所有任务,所有需要交付的内容。其内容根据业务需求的价值顺序排列,每个 Backlog 的优先级是可以调整的,需求是可以增减的,因此产品 Backlog 将根据不断增长来持续驱动维护。
例如:我们需要创建登录页面,支付系统,购物车系统等以及这些多个活动。需要开发的软件称为产品待办事项。
(2)工件二:冲刺待办事项列表 (Sprint Backlog)
在一个scrum中,我们将scrum分解为多个sprint(迭代),而sprint的目标是将软件的小功能带到客户端进行演示。多个sprint待办事项等于1个产品待办事项。
通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出一个Story作为本次spring完成的目标,这个目标的时间周期是2-4个星期,然后把这个Story进行细化,形成一个Sprint Backlog。
每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);
- 来源于产品待办项列表Product Backlog。
- 由团队评估和选择Product Backlog中哪些放入Sprint Backlog
- 团队需要一起定义“完成”的标准
- 拥有足够细节的计划,任何进度的变化可以在每日 Scrum 站会中清晰地看到。
当新工作出现时,开发团队需要将其加入到 Sprint 待办列表中去。随着工作的执行或完成,剩余的工作量被估算并更新。当计划中的某个部分失去开发意义,就可以将其移除。
(3)工件三:产品增量(Increment)
可交付产品增量Increment即冲刺结束后可对外发布的产品功能增量部分。
需要要在Scrum Review会议上进行演示
增量是一个 Sprint 完成的所有产品待办列表项的总和,以及之前所有 Sprint 所产生的增量的价值总和。在 Sprint 的最后,新的增量必须是“完成”的,这意味着它必须可用并且达到了 Scrum 团队“完成”的定义的标准。
Scrum 5个会议
(1)产品代办列表梳理(Backlog Grooming)
时间:Spring开始前2-3天
从粗略估算的产品路线图中提取优先级高的进行估算,评估工作量
输入:业务需求等组合的粗略需求
输出:产品功能列表(Product Backlog),并按优先级排序。
由 PO将一批希望团队在下次迭代时实现的用户故事,按照实现顺序描述给在场的团队成员,SM与在场成员分析用户故事,明确指出团队认为需求不明确的地方,同时分析用户故事需要包含哪些技术任务。
(2)迭代计划会议(Sprint Planning)
时间:Spring开始当天
输出:代办事项列表 Spring backlog
Sprint 计划会议回答以下问题:
- 接下来的 Sprint 交付的增量中要包含什么内容?
- 要如何完成交付增量所需的工作?
- 通过产品负责人PO提供的产品功能列表(Product Backlog)【它必须从客户价值角度描述,并按优先级排序】流程管理员SM 从中选择本次迭代的需求和估算本次迭代的工作量。
产品负责人逐条讲解重要的产品功能,开发团队共同估算Backlog所需工作量,形成冲刺待办事项列表。
开发团队自主领取 Sprint 待办产品列表中的工作
(3)每日站会(Daily Scrum)
时间:每天
参会成员:开发团队
不超过15分钟来,检视完成 Sprint 目标的进度
通常的形式是如下三点:
- 昨天完成什么
- 今天准备做什么
- 是否有任何障碍在阻碍
(4)迭代评审会(Sprint Review)
时间: Sprint 快结束时举行
参会人员:全体
在每个 Sprint 结束后,将这个 Sprint 的工作成果演示给 PO、客户、老板和其他相关的人员。
Sprint 评审会议的结果是一份修订后的产品待办列表,阐明很可能进入下个 Sprint 的产品待办列表项。
(5)迭代回顾会(Sprint Retrospective)
时间:在 Sprint 评审会议结束之后,下个 Sprint 计划会议之前
对本次迭代的优点与改进点进行复盘的一个活动,总结经验,会议得出这样的结论:开始做什么、继续做什么、停止做什么,一般控制在15-30分钟。