敏捷开发02:敏捷开发之Scrum开发框架介绍

一、什么是 Scrum

1.1 Scrum 定义

Scrum 是敏捷开发方法之一,它使用比较广泛。

敏捷的其它开发方法还有 XP(极限编程)、FDD(特性驱动开发)、Crystal(水晶方法)、TDD(测试驱动开发)、DSDM(动态系统开发)等等敏捷方法。

Scrum-Guide 中定义的 Scrum:

Scrum 是一个开发和维护产品的框架,它通过提供针对复杂问题的自适应解决方案来帮助人们、团队和组织创造价值。

Scrum 需要 Scrum Mater 营造一个环境:

  1. 一名 Product Owner 将解决复杂问题所需要的工作整理成一份 Product Backlog。

  2. Scrum Team 在一个 Sprint 周期里将选择的工作转化为有价值的 Increment。

  3. Scrum Team 和利益相关者检视结果并为下一个 Sprint 进行调整

  4. 重复

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 个部分:

  1. 昨天完成了什么
  2. 今天计划做什么
  3. 遇到了什么困难

最后就是回顾整个 sprint backlog 开发过程的会议,复盘这期间的得与失,在下一次 Sprint 周期中进行改进。

2.2 迭代开发过程图解

image-20220526205356045

(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个角色

  1. 产品负责人 Product Owner
  2. Scrum Master
  3. Scrum Team 开发团队

image

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个工件

  1. Product Backlog
  2. Sprint Backlog
  3. Increment

image

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 回顾会议

image

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 整个过程

image-20220528015822331

(https://www.neonrain.com/agile-scrum-web-development/)

  • 1、产品负责人(Product Owner)把产品开发相关人员召集在一起,共同制定产品愿景、产品目标,规划产品路线图等,收集产品的功能特性和非功能特性(比如小的用户故事、Epic(大的用户故事)、基础技术任务、功能优化等等)。

  • 2、Product Backlog,把上面收集到的功能特性和非功能特性放到 Product Backlog(产品待办列表)中,并进行优先级排序。定期召开会议梳理 Product Backlog 中的开发项。

  • 3、Sprint Planning Meeting(冲刺计划会议),从上面的 Product Backlog 中挑选出开发项,形成一个开发目标(Sprint Goal),把开发项组成一个 Sprint Backlog。然后对这个 Sprint Backlog 进行细化拆分,形成更小的开发 task,并估算开发时间,通常以小时或天为单位来计算开发时间。开发团队开始进行小任务的开发。

  • 4、每一个 Sprint Backlog 迭代周期是 1 到 4 个星期。

  • 5、在一个 Sprint Backlog 的迭代周期中,每天要进行 Daily Scrum Meeting(每日站会),每次会议时间控制在 15 分钟。

  • 6、开发任务的完成进度可以用 Burn down/up Charts(燃尽图)来表示。

  • 7、当一个 Sprint Backlog 完成,也就是一次冲刺任务完成时,进行 Sprint Review(评审会议),向利益相关人员演示此次完成的工作成果,并验收成果。

  • 8、最后 Sprint Retrospective ,总结回顾会议,每个成员进行发言,总结经验和教训,哪些地方完成的比较好,哪些地方还需要改进,并在下一轮 Sprint 迭代中进行改进。

四、实施 Scrum 会遇到的问题

  1. Product Backlog 里的需求怎么来?价值大小按照什么排序?
  2. 每一个 Sprint 里的 Sprint Goal 怎么确定?Sprint 实施时间怎么确定?
  3. Sprint Backlog 里的每个条目,怎么估算时间?每个开发人员能力不同,开发时间怎么估算?
  4. 每日站会怎么开?会不会大家对 Scrum 认识不足而流于形式的开会?
  5. Sprint 评审会怎么开?会不会变成吐槽会,甩锅大会?
  6. 看到敏捷 2 字,好多主管或工程师就误以为它是快速开发方法?这是对敏捷快速交付的片面理解。
  7. 还有一个最大的挑战,应该是大家开发习惯的转变。我们知道,要改变一个人脑袋里固有模式和习惯,接受新的理念和方法,总是很难的。
    世界上最难的2件事情,一是:把新思想装进别人脑袋里,二是:把别人口袋里的钱装进自己口袋里。

等等各种问题。

但是 Scrum 强调自管理,遇到了问题不要紧,去寻找解决方法,不段的改进。

在实施 Scrum 中,团队的成员初期需要熟悉彼此,开始磨合时,矛盾可能增多。

但是随着不断进行 Sprint,彼此越来越熟悉,改进越来越多,摩擦慢慢会减少,Scrum Team 彼此之间协作也会慢慢进入到最佳状态,

从而不断增加有效产出。

五、适用场景

对于需求很明确的产品,比如一些传统产品或成熟的产品,需求非常明确,不会轻易改动需求,那么更适合瀑布开发模式。

而对于那些易变的需求,不能明确客户需求,不晓得用户心里到底想要什么,需要通过不断测试,实践来明确需求的,这种更适合 Scrum 开发。

敏捷开发中的概念非常多,是不是全部都要照着做呢?
答案是不一定。可以根据公司情况适当的裁剪一些步骤,或者灵活的修改一些做法。
上面写到的敏捷开发概念、步骤,是一种标准的做法。
比如在一些小公司做开发,步骤太多,就会显得繁琐,不够灵活做事。所以可以根据公司情况适当的调整。

六、参考

  • https://scrumguides.org

  • https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-US.pdf#zoom=100

  • https://www.wrike.com/scrum-guide

  • https://www.neonrain.com/agile-scrum-web-development/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/923812.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用mingw+CMake在Windows平台编译OpenCV

1. 安装mingw和cmake cmake的安装比较简单,百度一下完成相关操作即可,笔者安装的是3.24.3版本。 Mingw的安装也有很多相关文章,不过我使用的是安装QT时附带安装的mingw,其路径为D:\software\Qt\Tools\mingw1120_64。其中的bin文件…

能源电力企业安全数据内外网文件交换

在数字化浪潮的推动下,能源电力行业数据交换的频率急剧上升,涉及的视频、研发、设计等各类文件数量庞大。这些文件的内外网传输不仅要追求速度,更要确保数据安全。随着国家对数据安全重视程度的提高,《网络安全法》和《数据安全法…

突破内存限制:Mac Mini M2 服务器化实践指南

本篇文章,我们聊聊如何使用 Mac Mini M2 来实现比上篇文章性价比更高的内存服务器使用,分享背后的一些小的思考。 希望对有类似需求的你有帮助。 写在前面 在上文《ThinkPad Redis:构建亿级数据毫秒级查询的平民方案》中,我们…

C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例

🌟个人主页:落叶 🌟当前专栏: C专栏 目录 ⼆叉搜索树的概念 ⼆叉搜索树的性能分析 ⼆叉搜索树的插⼊ ⼆叉搜索树的查找 二叉搜索树中序遍历 ⼆叉搜索树的删除 cur的左节点为空的情况 cur的右节点为空的情况 左,右节点都不为…

数据库、数据仓库、数据湖、数据中台、湖仓一体的概念和区别

数据库、数据仓库、数据湖、数据中台和湖仓一体是数据管理和分析领域的不同概念,各自有不同的特点和应用场景。以下是它们的主要区别: 1. 数据库(Database) 定义:结构化的数据存储系统,用于高效地存储、检…

RabbitMQ原理架构解析:消息传递的核心机制

文章目录 一、RabbitMQ简介1.1、概述1.2、特性 二、RabbitMQ原理架构三、RabbitMQ应用场景3.1、简单模式3.2、工作模式3.3、发布订阅3.4、路由模式3.5 主题订阅模式 四、同类中间件对比五、RabbitMQ部署5.1、单机部署5.2、集群部署(镜像模式)5.3、K8s部署…

idea_常用设置

相关设置 项目的JDK设置out目录取消自动更新设置主题设置菜单和窗口字体大小滚轮调节字体大小显示行号与方法分隔符代码智能提示忽略大小写自动导包配置设置项目文件编码设置控制台的字符编码修改类头的文档注释信息设置自动编译 项目的JDK设置 File -> Project Structure -…

Redis的管道操作

在现代应用程序中,Redis作为一种高性能的内存数据库,被广泛用于缓存、消息队列、实时分析等场景。为了进一步提高Redis的性能,Redis提供了管道(Pipeline)操作,允许客户端将多个命令一次性发送到服务器&…

详解登录MySQL时出现SSL connection error: unknown error number错误

目录 登录MySQL时出错SSL connection error: unknown error number 出错原因 使用MySQL自带的工具登录MySQL 登陆之后,使用如下命令进行查看 解决方法 找到MySQL8安装目录下的my.ini配置文件 记事本打开my.ini文件,然后按下图所示添加配置 此时再…

E2、UML类图顺序图状态图实训

一、实验目的 在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。在掌握面向对象七个设计原则基础上&…

Angular面试题汇总系列一

1. 如何理解Angular Signal Angular Signals is a system that granularly tracks how and where your state is used throughout an application, allowing the framework to optimize rendering updates. 什么是信号 信号是一个值的包装器,可以在该值发生变化时…

我要成为算法高手-递归篇

目录 题目1:汉诺塔题目2:合并两个有序链表题目3:反转链表题目4:两两交换链表中的结点题目5:Pow(x,n) 题目1:汉诺塔 面试题 08.06. 汉诺塔问题 - 力扣(LeetCode) 解题思路&#xff1…

【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)

第8章 数据仓库Hive的安装和使用 8.1 Hive的安装 8.1.1 下载安装文件 访问Hive官网(http://www.apache.org/dyn/closer.cgi/hive/)下载安装文件apache-hive-3.1.2-bin.tar.gz 下载完安装文件以后,需要对文件进行解压。按照Linux系统使用的…

js.二叉树的层序遍历2

链接:107. 二叉树的层序遍历 II - 力扣(LeetCode) 题目: 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历&#xff09…

kafka生产者和消费者命令的使用

kafka-console-producer.sh 生产数据 # 发送信息 指定topic即可 kafka-console-producer.sh \ --bootstrap-server bigdata01:9092 \ --topic topicA # 主题# 进程 29124 ConsoleProducer kafka-console-consumer.sh 消费数据 # 消费数据 kafka-console-consumer.sh \ --boo…

基于Springboot的心灵治愈交流平台系统的设计与实现

基于Springboot的心灵治愈交流平台系统 介绍 基于Springboot的心灵治愈交流平台系统,后端框架使用Springboot和mybatis,前端框架使用Vuehrml,数据库使用mysql,使用B/S架构实现前台用户系统和后台管理员系统,和不同级别…

从入门到精通数据结构----四大排序(上)

目录 首言: 1. 插入排序 1.1 直接插入排序 1.2 希尔排序 2. 选择排序 2.1 直接选择排序 2.2 堆排序 3. 交换排序 3.1 冒泡排序 3.2 快排 结尾: 首言: 本篇文章主要介绍常见的四大排序:交换排序、选择排序、插入排序、归并排…

SpringCloud+SpringCloudAlibaba学习笔记

SpringCloud 服务注册中心 eureka ap 高可用 分布式容错 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency><groupId…

Sentinel服务保护

Sentinel是阿里巴巴开源的一款服务保护框架&#xff0c;目前已经加入SpringCloudAlibaba中。官方网站&#xff1a; home | Sentinel Sentinel 的使用可以分为两个部分: 核心库&#xff08;Jar包&#xff09;&#xff1a;不依赖任何框架/库&#xff0c;能够运行于 Java 8 及以…

【Redis 】Bitmap 使用

Redis Bitmap介绍 Redis Bitmap 是一种特殊的数据类型&#xff0c;它通过字符串类型键来存储一系列连续的二进制位&#xff08;bits&#xff09;&#xff0c;每个位可以独立地表示一个布尔值&#xff08;0 或 1&#xff09;。这种数据结构非常适合用于存储和操作大量二值状态的…