碎碎念软件研发02:敏捷之Scrum
一、什么是 Scrum
1.1 Scrum 定义
Scrum 是敏捷开发方法之一,它使用比较广泛。
敏捷的其它开发方法还有 XP(极限编程)、FDD(特性驱动开发)、Crystal(水晶方法)、TDD(测试驱动开发)、DSDM(动态系统开发)等等敏捷方法。
Scrum-Guide 中定义的 Scrum:
Scrum 是一个开发和维护产品的框架,它通过提供针对复杂问题的自适应解决方案来帮助人们、团队和组织创造价值。
Scrum 需要 Scrum Mater 营造一个环境:
一名 Product Owner 将解决复杂问题所需要的工作整理成一份 Product Backlog。
Scrum Team 在一个 Sprint 周期里将选择的工作转化为有价值的 Increment。
Scrum Team 和利益相关者检视结果并为下一个 Sprint 进行调整
重复
Scrum-Guide 里还说:
Scrum 框架故意不完整,仅仅定义了实施 Scrum 理论所需的部分。在 Scrum 中,可以使用各种不同的过程、技术和方法。
二、Scrum 迭代开发过程
2.1 迭代开发过程
Scrum 采纳了一种迭代和增量的开发方法。前文中有介绍这 2 种开发模型。用这种方式来应对未来需求变化。
在 Scrum 框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个 Sprint,每个 Sprint 的长度建议是 2 到 4 周。这个时间周期可以根据具体情况调整。
从瀑布开发模型中可以了解到,产品开发前还有产品需求,在 Scrum 中,产品需求在哪里?
在 Scrum 中,用 Product Backlog 来管理需求,它是产品的需求池。
需求多了,怎么知道先开发哪个后开发哪个需求?
需要开会对 Product Backlog 里的需求进行讨论,然后排定优先级。
优先开发对客户价值较高的需求。
后面的迭代周期 Sprint 又怎么划分,多大的 Sprint?
会在 Sprint 计划会议上讨论、分析和估算挑选的需求,然后得到一个任务列表。这个任务列表称为 Sprint Backlog。下面就针对这个 Sprint Backlog 来开发。
Sprint 周期一般 2 到 4 周,这期间的进度怎么同步和管控?
这里有一个 Daily Scrum Meeting,每日站会。一般有 3 个部分:
- 昨天完成了什么
- 今天计划做什么
- 遇到了什么困难
最后就是回顾整个 sprint backlog 开发过程的会议,复盘这期间的得与失,在下一次 Sprint 周期中进行改进。
2.2 迭代开发过程图解
(https://www.wrike.com/scrum-guide/scrum-sprints/)
2.3 总结
细化分解:
Scrum 开发过程就是一个逐步分解细化的过程,把大的产品需求分解为更小的开发需求,再把开发需求按优先级组合,然后划分为一个一个开发周期,在 Scrum 中叫 Spring 迭代周期。在 Sprint 迭代周期中,再划分为一个一个的任务。这样就可以细化到每天需要完成的任务。
PDCA 循环:
Scrum 里有 PDCA 循环思想。Sprint 是一个迭代周期。里面的任务(task)也可以看作是一个更小的开发周期。
三、Scrum 框架3-3-5-5
Scrum 是一个自组织、跨职能的完整团队。自组织团队自己决定如何完成他们的工作,而不是由团队外的人来决定。
3.1 3个角色
- 产品负责人 Product Owner
- Scrum Master
- Scrum Team 开发团队
1.产品负责人 Product Owner:
产品负责人是对产品价值最大化的责任人。他负责最大化产品价值和开发团队工作的价值。他负责产品待办事项列表 product backlog,并对待办事项优先级进行排序。他要负责 Scrum 团队的下一步工作。
2.Scrum Master:
Scrum Master 负责 Scrum 被理解并实施。他负责团队成员遵循 Scrum 理论、实践和规则。
他帮助团队成员理解 Scrum 并和团队一起实施 Scrum 中的各种活动。他教导开发团队创建清晰的待办事项列表。
3.Scrum Team 开发团队:
为 Sprint 创建计划,即 Sprint Backlog。负责每个 Sprint 周期里的任务开发完成并交付产品。开发团队是跨职能的,拥有创造产品增量所需的全部技能,并会随着工作领域变化而变化。开发人员作为专业人士对彼此负责。
3.2 3个工件
- Product Backlog
- Sprint Backlog
- Increment
1.Product Backlog:
产品需求清单,而且是一份有序的需求清单。它是开发团队工作的来源。Product Backlog 里有一个一个的条目(item),这就是开发每天需要完成的工作。
2.Sprint Backlog:
Sprint Backlog 由 Sprint Goal(为什么做)、从 Product Backlog 选择的需求(做什么)组成 Sprint Backlog,以及交付 Increment(开发结果)的可执行计划。
Sprint Goal 是 Sprint 的单个目标。Sprint Goal 是在 Sprint 计划会议中决定的。
Sprint 的进度:可以用 Sprint Brun-down Chart 来统计剩余的工作量。
3.Increment:
一个 Increment 就是一个可交付的开发结果。在一个 Sprint 中可以创建多个 Increment。增量是迈向目标的一步。
3.3 5个事件
1.Sprint
2.Sprint 计划会议
3.每日 Scrum 站会
4.Sprint 评审会议
5.Sprint 回顾会议
1.Sprint
Sprint 是 Scrum 的核心,在这里将创意(idea)转化为价值。它的一个迭代周期可以是 2 到 4 周,视具体情况而定。在这段时间内,要构建一个完整的、可发布的产品增量(Increment)。前一个Sprint 结束后,新的下一个 Sprint 紧接着开始。
Sprint 由 Sprint 计划会议(Sprint Planning)、每日 Scrum 站会(Daily Scrum)、开发工作(Develop)、Sprint 评审会议(Sprint Review) 和 Sprint 回顾会议(Sprint Retrospective)组成。
每一个 Sprint 相当于一个小的项目。
如果 Sprint 的目标已经过时,那么可以取消该 Sprint。但是只有产品负责人(Product Owner)才有权利取消。
2.Sprint Planning
Sprint 计划会议(Sprint Planning) ,通过安排在 Sprint 中要做的条目(item),来启动一个 Sprint。需要 Scrum Team 协助创建。
Product Owner 确保讨论最重要的 Product Backlog 条目。
3.Daily Scrum
每日会议检查开发的进展,并根据需要实时调整 Sprint Backlog。每日会议一般为 15 分钟,不要太长。
4.Sprint Review,Sprint评审会议
Sprint评审会议是检视 Sprint 的成果。Scrum Team 向利益相关者来展现他们的工作成果,在这次 Spirnt 中完成了什么,以及环境发生了什么变化。以及接下来要做什么。
5.Sprint Retrospective,Sprint 回顾会议
Sprint 回顾会议的目的是规划提高质量和效能的方法。它发生在 Sprint Review 会议之后,下一个 Sprint 开始之前。
Sprint 回顾会议的目的:
- 检视前一个 Sprint 中关系、过程和工具的情况如何
- 做得好的地方继续发扬,不好的地方提出改进方法
- 指定改进 Scrum Team 团队工作方式
3.4 5个价值观
1.承诺:愿意对目标做出承诺
2.专注:把心思和能力用到你承诺的工作上去
3.开放:Scrum 把项目中的一切开放给每个人看
4.尊重:每个人都有他独特的背景和经验
5.勇气:有勇气做出承诺,履行承诺,接受别人的尊重
3.5 图解 Scrum 整个过程
(https://www.neonrain.com/agile-scrum-web-development/)
四、实施 Scrum 会遇到的一些问题
- Product Backlog 里的需求怎么来?价值大小按照什么排序?
- 每一个 Sprint 里的 Sprint Goal 怎么确定?Sprint 实施时间怎么确定?
- Sprint Backlog 里的每个条目,怎么估算时间?每个开发人员能力不同,开发时间怎么估算?
- 每日站会怎么开?会不会大家对 Scrum 认识不足而流于形式的开会?
- Sprint 评审会怎么开?会不会变成吐槽会,甩锅大会?
等等各种问题。
但是 Scrum 强调自管理,遇到了问题不要紧,去寻找解决方法,不段的改进。
在实施 Scrum 中,团队的成员初期需要熟悉彼此,开始磨合时,矛盾可能增多。
但是随着不断进行 Sprint,彼此越来越熟悉,改进越来越多,摩擦慢慢会减少,Scrum Team 彼此之间协作也会慢慢进入到最佳状态,
从而不断增加有效产出。
五、参考
碎碎念软件研发02:敏捷之Scrum的更多相关文章
- Jerry的碎碎念:SAPUI5, Angular, React和Vue
去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...
- Linux碎碎念
在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...
- 一些关于Linux入侵应急响应的碎碎念
近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...
- 一个谷粉和3年的Google Reader重度使用者的碎碎念
2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...
- 结对编程ending-我和洧洧的碎碎念
应该是第一次和队友分工合作去完成一个项目,其中也经历了跳进不少坑又被拉回来的过程,总体来说这对于我俩也的确是值得纪念的一次经历. 我的碎碎念时间…… 对比个人项目和结对编程项目二者需求,前者重在面对不 ...
- C语言 · 分分钟的碎碎念
算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用 ...
- 最近关于Qt学习的一点碎碎念
最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...
- Java实现 蓝桥杯VIP 算法提高 分分钟的碎碎念
算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用箭头画出这个念头的 ...
- MySQL碎碎念
1. 如何修改Mysql的用户密码 mysql> update mysql.user set password=password('hello') where user='root'; mysq ...
随机推荐
- 从零到有模拟实现一个Set类
前言 es6新增了Set数据结构,它允许你存储任何类型的唯一值,无论是原始值还是对象引用.这篇文章希望通过模拟实现一个Set来增加对它的理解. 原文链接 用在前面 实际工作和学习过程中,你可能也经常用 ...
- Linux 0.11源码阅读笔记-总结
总结 Linux 0.11主要包含文件管理和进程管理两个部分.进程管理包括内存管理.进程管理.进程间通信模块.文件管理包含磁盘文件系统,打开文件内存数据.磁盘文件系统包括空闲磁盘块管理,文件数据块的管 ...
- 【uniapp 开发】如何给边框添加阴影效果
css的box-shadow是用来添加边框阴影效果的. 属性值详解: 1.inset 可选值,默认阴影在盒子外 使用inset后,阴影在盒子内,即使指定边框或者透明边框,阴影依然存在. 2. 这是头两 ...
- Blazor组件自做五 : 使用JS隔离封装Google地图
Blazor组件自做五: 使用JS隔离封装Google地图 运行截图 演示地址 正式开始 1. 谷歌地图API 谷歌开发文档 开始学习 Maps JavaScript API 的最简单方法是查看一个简 ...
- eclipse 执行main方法 错误: 找不到或无法加载主类
检查环境变量是否正确 JAVA_HOME JAVA的实际安装目录 CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\ ...
- pip:带你认识一个 Python 开发工作流程中的重要工具
摘要:许多Python项目使用pip包管理器来管理它们的依赖项.它包含在Python安装程序中,是Python中依赖项管理的重要工具. 本文分享自华为云社区<使用Python的pip管理项目的依 ...
- mosquitto使用与常用配置
为了方便演示,我这里就用windows环境下安装的mosquitto进行操作,操作方式和linux系统下是一样的. 一.windows安装mosquitto 下载mosquitto mosquitto ...
- FinClip 黑客马拉松正式开赛,码力集结,等你来战!
从2017到2022,小程序已经走过了5年的光景.从无人问津到互联网巨头纷纷入局,短短数年间,小程序已然发展成为超级 App 的标配!微信.支付宝.百度.抖音.今日头条--这些超级app的背后都有巨量 ...
- VirtualBox安装Kali
VirtualBox安装Kali 下载VBox 去Virtual Box官网下载(根据操作系统选择版本,此处以Windows为例) 打开安装程序进行安装即可 安装Kali 去Kali Linux官网下 ...
- Prometheus+Grafana安装搭建
介绍 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB).Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本. 2016年 ...