在敏捷软件开发中,Scrum是个相当简单、容易上手的框架。说Scrum是个框架而不是方法,是因为Scrum只提供了进行敏捷开发的指导方针,但没有提供详细的实践方法和工具。今天我们就来了解一下Scrum最基本的框架,简单地讲,就是Scrum的“3355”。
一、3个角色
这三个角色,在Scrum框架图的左上角区域。
1.1.Product Owner
产品所有人,简称PO,主要职责是负责Product Backlog和Sprint Backlog。PO不仅要决定选择做什么,还要能从商业价值的角度解释为什么做这些。PO的日常工作主要有:
- 在产品团队中扮演业务的发言人,是项目的客户或者代表
- 有充足的知识和授权
- 定义业务需求,定义产品的最高优先级的特征和功能
- 根据需求的商业价值对其进行优先级排序
- 确定发布日期和发布内容
- 根据需要调整每个Sprint的需求和优先级
- 在Sprint交界处可以变更功能和优先级
- 定义验收标准
- 接受或者推翻工作成果
- 对于每个敏捷团队做的所有工作的价值、优先级和细节拥有最终的权威
- 对于业务目标和期望的最终结果的深层的了解使得其拥有此权威
- 与团队一起更紧密地工作
1.2.Scrum Master
Scrum教练或者Scrum大师,简称SM,主要职责是传播敏捷的思想,保证Scrum的流程。日常工作主要有:
- 促进团队的工作
- 精心组织Scrum的各种仪式
- 负责设定Scrum的价值和实践
- 确保团队的组件完整性且保证效率高产
- 促成所有角色和职能之间的紧密协作
- 排除障碍
- 保护团队不受外界干扰
1.3.The Team
研发团队,是任务执行团队,一般是一个跨职能团队(一般包括前后台研发、测试等),能够切实提供一个可用产品的团队。团队主要有以下特征:
- 典型团队通常为5-9个人
- 跨职能团队,囊括了开发人员、测试人员、业务分析师等开发最终软件所必需的角色
- 团队成员应该是全职的。也可能有特殊情况 (例如, 数据库管理员DBA等兼职)
- 保持纪律,遵守承诺,按时交付软件成果
- 自组织、自管理的团队
二、3个工件
2.1.Product Backlog
产品待办事项集合,整个产品的用户故事集合,这些用户故事可以来自甲方客户、终端用户、PO自己对产品的理解、研发团队等。它具有以下特点:
- 是项目的需求列表
- 以用户故事的形式表示
- 包含功能性以及非功能性需求
- 每项需求应该描述其商业价值
- PO负责进行对Product Backlog Item(产品待办事项)优先级排序
- 每个Sprint开始之前要重新进行排序,以确定最重要的事项
- 随着项目的进行,可能新增、变更或减少条目
2.2.Sprint Backlog
冲刺待办事项列表,一个冲刺目标阶段内的用户故事列表。
这些用户故事来自Product Backlog,每次冲刺前,PO根据交付价值,将优先级最高的用户故事放入迭代。它具有如下特点:
- 从产品Backlog中取出前面若干项,在当前Sprint中被实现
- 每个用户故事应该能够在当前Sprint中被实现
- 每一个用户故事都会被分解并关联到若干个子任务(Task)
- 团队成员自愿挑选任务
- 每日更新任务剩余时间
- 团队成员均可按需在Sprint Backlog中增加、修改、删除任务
- 如果Sprint工作不清晰,创建Sprint Backlog时先估算一个比较大的时间段,在后续阶段再做进一步的缩短
- 伴随着任务的逐步清晰化,及时更新剩余时间
- 对于用户故事的完成,团队一起定义“完成”的标准(DoD)
- DoD代表了各种用于确保sprint backlog中质量、准确性、业务关联性活动
2.3.Burndown chart
燃尽图,冲刺过程中显示剩余故事点数的完成情况的折线图,纵轴表示故事数
,横轴表示日期
。
最终的燃尽图类似这样:
三、5个价值观
价值观是任何一种方法学都应当具备的核心,它也是把认同相同价值观的人群聚拢在一起的精神力量。Scrum的五大价值观,从敏捷实践中来,应用于敏捷实践中去,真实、生动而又准确地反应了敏捷运动中重视人的因素。
3.1.Focus
专注,将故事拆解为冲刺阶段,目标细化,同时也是集中绝对的团队能力,解决既定目标,体现当前的专注,也排除其他插入时间的消耗。
通过在一段时间内只专注于少数几件事情,团队可以很好地进行合作并交付出优质的成果,也能够更快地交付有价值的事项。
专心成就专注,专注造就专业,专业铸就成功!
3.2.Courage
勇气,Scrum团队中的成员,既要有勇气接受看似不可能的挑战,又要有勇气拼尽全力去完成个人承诺要交付的成果,更要有勇气对不合理的要求说“不”。Scrum团队不是单打独斗,大家能够相互支持,因而应当具备足够的勇气去接受更大的挑战。
为了接受并负责任的交付产品,团队成员必须有足够的勇气来对大家说“不”,比如不能承诺时,对纳入Sprint的故事说“不”等,做这些决定其实是需要很大的勇气的,因为前面并不一定是平坦之路,但对自己要绝对自信。
3.3.Openness
开放,在Scrum团队中,每个人都会遇到障碍,每个人都会有长于别人、弱于别人之处。保持开放的心态,公开透明地展示自己的强项、弱点,明确地展示自己的工作进展、遇到的障碍等状态,有助于构建更加团结、凝聚的团队氛围,构建更加稳固的自组织、自管理、跨职能的Scrum团队。
当团队成员遇到障碍,或对某些事项表示担忧,明确无误地表达出来,有助于团队及时采取措施解决问题,预防风险的发生,按时完成团队承诺的交付成果。
开放是体现敏捷可视化、透明性的重要保证。
3.4.Respect
尊重,跨职能团队的成员具有不同的技能、经历背景,在技术上各有所长,因而才具备交付客户价值所需要的各种技能。保持对别人的尊重,既是最基本的个人涵养,也是团队保持团结、凝聚所必需的人际技巧。
就个人而言,三人行必有我师,常怀空杯心态,尊重每一个人,向不同人的学习,自己才能真正不断成长。就团队而言,彼此尊重,才能凝聚更大力量,才能塑造团队成员之间的信任,在工作中彼此支持、相互帮助,协同工作,分享成功和失败。
3.5.Commitment
承诺,自组织、自管理团队成员主动认领开发任务,既是对团队的承诺,也是对自己个人能力的自信,更是对交付客户价值的渴望。中国人向来讲究“一诺千金”,每个人都恪守对团队的承诺,不遗余力、竭尽全力去交付自己的承诺,团队才能前进、客户价值才能实现。
由于对自己的命运有更大的掌控,团队会有更坚定的信念去创造成功。
四、5个仪式/事件
4.1.Sprint Planning Meeting
Sprint计划会,在每个Spring开始之时召开,由Product Owner、Scrum Master和Scrum Team全体人员参加。这个会议主要有两件事情要确定:
- 要确定当前Sprint的目标
- 选定当前Sprint要处理的最具价值的用户故事,创建Sprint Backlog
Sprint backlog的创建是团队协作的结果,而不是由Scrum Master单独完成。必要时候,技术分析和设计任务也可以被添加到Sprint Backlog。
Sprint计划会上,团队要:
- 确定当前Sprint的目标(Goal)
- 从产品Backlog中选择他们承诺可以完成的工作项
- 对选定的用户故事进行估算
- 创建Sprint Backlog
- 识别任务,且每个任务都完成了估算
- 可以考虑概括设计
- 对每个选定的用户故事,如有问题,当场向PO进行咨询,请求进行澄清。
4.2.Sprint
Sprint,中文译为冲刺、短跑等,在Scrum之外,被称为迭代(Iteration)。Sprint是Scrum的专有术语,是Scrum中最具代表性的事件之一,也是敏捷软件开发的核心特征之一。
简单来讲,Sprint就是Scrum里面的迭代时间盒,是一个固定时间长度的软件开发、交付周期。Sprint 具有如下特点:
- Scrum通过一系列Sprint落实开发任务,实现项目进展
- 典型Sprint时长2-4周,最长一个自然月
- 固定Sprint时长有助于保持好的团队节奏
- 在每个Sprint中团队对产品进行设计、开发以及测试
- Sprint具有固定时间段,按时结束,每次Sprint成果则可能因实际情况而有所不同
4.3.Daily Standup Meeting
Scrum 每日站会,是Scrum用来沟通、通报当前进展及后续计划的主要场合,因其提倡大家都站着开会而得名。每日站会不是用来解决问题的会议
,会上不讨论具体的问题细节、解决方式等占用时间的细节内容。项目遇到的问题或障碍,应当会后
通过专门的问题解决会议或其他方式进行解决。
每日站会通常不超过15分钟,提倡每天
在同一时间、同一地点
举行。
全体团队成员、有兴趣的项目干系人均可参加,但只有团队成员、产品负责人和Scrum Master可以发言。确保分清Scrum的“猪”类角色和“鸡”类角色对团队非常有帮助。
Scrum每日站会上,每个团队成员都要回答三个问题:
- 本次会议之前,自己做了什么?
- 本次会议之后,自己打算或计划做什么?
- 目前,是否遇到了阻碍自己的问题?
特别强调,每日站会不是用来向 Scrum Master 或 Product Owner 汇报个人状态或进展的,它是用来在团队面前确认自己的个人承诺并展示当前进展和问题的。
4.4.Sprint Review Meeting
Sprint评审会,又叫Sprint演示会、Sprint展示会等,是团队用来展示当前Sprint开发成果的会议。Sprint评审会上,团队直接向相关干系人演示当前Sprint所开发出来的软件产品。Sprint评审会有如下特点:
- 团队展示当前Sprint的成果
- 一般采取演示新特性、底层架构、可工作软件等形式
- 通常是非正式的,不需要特意准备
- 不需要复杂的事先准备,尤其不要进行幻灯片的展示
- 整个团队全员参与
- 邀请所有项目干系人参与
- 会议时间依据Sprint的长短而定,通常每个Sprint中,每周1个小时的原则
- PO确认sprint目标是否实现
- PO可以拒绝接受团队的软件成果。
4.5.Sprint Retrospective Meeting
Sprint回顾会,用来回顾在当前结束的Sprint中的工作,进行经验的总结、反思,并拟定相应的改进措施。Sprint回顾会通常具有如下特点:
- 用于周期性检视团队最佳实践以及存在的问题
- 每个Sprint中,一周45分钟原则
- 每个Sprint结束时举行
- 整个团队全员参与,还包括 Scrum Master、产品负责人、客户以及其他项目干系人