Scrum敏捷开发模式

article/2025/8/27 19:44:42

前言

我的个人博客

最近报名参加了微信小程序应用开发赛,也是作为走向职场前的一次锻炼,为了模拟企业开发的流程,我们团队决定使用敏捷开发模式来管理项目。这篇文章,是对在近些天来网上学习到的Scrum敏捷开发模式的总结。

软件开发过程

在这里插入图片描述

一个完整的软件开发过程一般包括图中五个阶段,分为需求、设计、编码、测试、维护五个阶段。对于不同的软件系统,可以采用不同的开发模型,并由此产生了不同的。常见的软件开发模型,可以参考以下链接。

敏捷开发模型(Agile-Development-Model)

敏捷开发的概念

敏捷开发是一种以用户的需求进化为核心,采用迭代、循序渐进的方法开发的方法。
在这里插入图片描述

敏捷开发的方法有很多,包括Scrum、极限编程、功能驱动开发以及统一过程(RUP)等,IT开发中,最常用的是Scrum(迭代式增量软件开发过程)。

Scrum(迭代式增量软件开发过程)

Scrum特点

  • 将一个大的项目分为多个互相联系或者独立运行的子项目,围绕最小化可行产品的特性进行产品规划,并且分别完成。每个子项目都经历规划(Plan)、开发(Build)、测试(Test)、评审(Revidw)四个阶段,这四个过程合称为一个迭代(Sprint),通常一个迭代需要一到三个星期。
    在这里插入图片描述

  • 增量交付,迭代式开发,在一次次迭代汇中,完善产品的功能,并能够持续发布,强调适应性,并非瀑布模型中的预见性

  • 在此过程中,主体软件要处于随时可发布,可交付给用户的状态。

Scrum四元素

  • 迭代
  • 团队
  • 会议
  • 工件

一、迭代

将一个大的项目分为多个互相联系或者独立运行的子项目,围绕最小化可行产品的特性进行产品规划,并且分别完成。每个子项目都经历规划(Plan)、开发(Build)、测试(Test)、评审(Revidw)四个阶段,这四个过程合称为一个迭代(Sprint),通常一个迭代需要一到三个星期。

二、团队

1.PO——产品或业务负责人(Product Ower):

类似于产品 经理,确定产品的方向和愿景,发布和需求的优先级。

2.SM——敏捷教练(Scrum Master):

熟悉敏捷开发模式和流程,团队负责人

3.交付团队

设计、产品、开发、测试、运维人员

三、会议

1、迭代计划会(Sprint Planning Meeeting)

在迭代之初,由产品负责人(PO)讲解需求,并由开发团队进行估算的会议。

2、每日立会(Daily Scrum Meeeting)

团队每天进行沟通的内部短会,用于同步信息,尽早发现风险。

团队负责人发布任务。开发团队,可以通过类似以下的任务展板领取任务。
在这里插入图片描述

从昨天的立会到现场,我完成什么?从现在到明天的立会,我计划完成什么。有什么阻碍我的进展。

3、迭代评审会(Sprint Review Meeeting)

向客户或者其他利益干系会展示,获取客户反馈

4、迭代回顾会(Sprint Retrospective Meeeting)

每个迭代后总结开发中经验和教训,进行持续改进。一般会进行定量和定性分析。

(1)定量分析:是否完成目标?

迭代速率、迭代燃起燃尽图、迭代计划故事和实际完成故事、计划发布日期与实际发布日期、客户满意度、团队满意度、生产环境Bug数、生成Bug解决时间、用户故事。

(2)定性分析

哪些做得好的保持,哪些坏的要丢弃

四、工件

  • 用户故事(User Stories):一种表达产品需求的语言格式。产品经理通过用户故事了解用户需求细节,为团队合理制定任务的优先级。

  • 产品需求列表(Prodcut Backlog):汇集用户需求的列表,产品经理会从众多用户故事中筛选出优先项,并把他们列入产品待办列表中。

  • 迭代需求列表(Sprint Backlog):单个迭代要做的需求列表,一次迭代中往往选取当前优先级最高并经过讨论的用户故事,剩下的继续评估,交给下次迭代。

  • 燃尽图(Burundown Chart):用以展示整个Sprint待办列表的进度。当燃尽图曲线接近于0时,也就意味着这次迭代即将完工。
    在这里插入图片描述

Scrum具体开发流程

在这里插入图片描述

文字描述

  • 第一阶段:首先产品经理(产品团队)把需要上线的产品特性做成产品需求列表(Prodcut Backlog),由产品经理(产品团队)基于产品整体战略、目标、业务价值、实现难度等因素甄选出优先级最高的项目,交个整个团队进行讨论。
  • 第二阶段:召开迭代规划会议,研发团队、产品经理和开发团队负责人(Scrum Master)讨论用户故事的优先项,且决定本次次迭代要研发的需求项。并由开发团队负责人开展可行性评估和工时评估,确定迭代的需求排期,形成迭代需求列表(Sprint Backlog)。
  • 第三阶段:会议结束后,团队中的每个成员需要对每个用户故事有深刻的理解。团队负责人根据需求拆分相应的子任务,分配相应的开发成员执行,并评估相应的工时。
  • 第四阶段:研发团队要在一到三周的时间里开发完成迭代需求列表中的需求,在迭代中,每日站会用于团队来交流他们做完了什么,正在做什么,以及遇到的问题,及早发现风险。
  • 第五阶段:每次迭代的产出都是一个可以发布的产品版本,在迭代结束前,会进行迭代评审会(Sprint Review Meeeting),由研发团队向产品经理做案例演示并接受评价。产研团队根据整个迭代需求的完成情况和缺陷处理情况,最终决定整个产品是否上线,也可以在发布前增加新功能。确认上线后,由运维进行上线环境部署,正式上线。
  • 第六阶段:在迭代结束时,产品和开发会举行迭代回顾会(Sprint Retrospective Meeeting),团队一起思考工作中可以改进的地方,制定改进措施。每次迭代都需要进行这样的会议,来不断改进产品的质量。
  • 最后,产品团队在产品功能上线后,持续收集用户的反馈,分析数据形成新的用户故事,进入下一次迭代。

总览图

在这里插入图片描述

PS:平时写代码如何通过测试并入库?需求如何完成?

首先,测试团队会根据产品需求文档,进行进行测试用例撰写工作和开发工作同步进行。 开发人员开发完成自己的需求任务之后,使用测试团队写好的测试用例进行自测(跑各种静态检查、复杂度、测试用例、功能测试等),自测通过转移给测试,自测不通过,自行修复,直到通过再转给测试。

测试团队再次进行测试, 发现Bug则建立缺陷,将缺陷关联到相应的需求任务上,并指定个相应的开发者进行修复。

测试完成后,提交代码。触发CI(持续集成)流程。跑完流程后,进入代码评审,通过后,才能入库。

参考链接

teambition敏捷研发讲解。


http://chatgpt.dhexx.cn/article/eXtYYGTi.shtml

相关文章

无向图的邻接表

如何根据无向图画出邻接表呢? 比如: 第一排的v1,与v2和v4相连,因此两个黄色方框内的数字分别代表v2和v4的下标; 第二排的v2,与v1、v3和v5相连,因此三个绿色方框内的数字分别代表v1和v3和v5的…

C++实现的邻接表

1. 在学习图的存储方式中,邻接矩阵和邻接表是两种比较常用的存储图的方式,下面使用的是C语言实现的邻接表 2. 具体的实现过程如下: ① 首先使用结构体声明图的结构体,图中顶点的结构体,以及指向下一条边的结构体&…

图的存储--邻接表

邻接表既适用于存储无向图,也适用于存储有向图。邻接表常用于稀疏图的存储。 邻接表存储图主要在于将图的各顶点建立一个链表,链表记录该顶点的邻接点的在数组的位置。 #define MAX_VERTEX_NUM 10 // 最大顶点数 #define INF 32767 // 不邻接 typedef…

有向图的邻接矩阵、邻接表和逆邻接表

1、如何根据有向图画出邻接矩阵? 如图: v1指向v2和v3,在矩阵中v1指向v2、v3的表示标1。 注意: v1指向v2在矩阵中是用竖列的v1对应横行的v2 2、如何根据有向图画出邻接表呢? 注意: 画有向图的邻接表时…

【数据结构】 图的邻接表

邻接表是图的另一种存储结构(使用链表的思想)。 该方式的基本思路:顶点表后指向邻接表,邻接表中依次为当前顶点的邻接点 准备工作 与邻接矩阵类似,在构造邻接表之前,需要存储各个顶点的信息,…

《数据结构》-图的邻接表表示法(四)

邻接表表示法(链式) 存储定义: 顶点:按编号顺序将顶点数据存储在一维数组中关联同一顶点的边(以顶点为尾的弧):用线性链表存储 无向图的邻接表 例如,如下无向图 则它的邻接表为 无向图邻接表的特点: 邻接表不唯一…

【图】邻接表

目录 无向图的邻接表 链表(存相邻顶点下标)的类 数组里放的顶点 邻接表(操作) 构造和析构(创建销毁邻接表) 插入顶点 插入边 获取下标 插v1、v2之间的边 删除顶点 删除边 输出: 其他…

图的邻接表表示法(C语言)

邻接表 邻接表数据结构类型如下: #define MaxVertices 100 typedef struct node{ //边表 int adjvex;node* next; }EdgeNode; typedef struct{ //顶点表 int vertex; EdgeNode* edgenext; }VertexNode; typedef VertexNode AdjList[MaxVertices];//…

邻接表的创建

邻接表 特点: 1、想要知道某个顶点的度,就去查找这个顶点的边表中结点的个数 2、若想判断顶点 Vi 到 Vj是否存在边,只需测试顶点 Vi 的边表中adjvex是否存在 Vj 的下标。 3、若求顶点的所有邻接点,其实就是对此顶点的边表进行遍历…

邻接表创建

邻接矩阵是个不错的图储存结构,但我们发现,对于边数相对顶点较少的图,这种结构是存在对储存空间的极大浪费的(关于邻接矩阵的相关知识在这里:邻接矩阵的创建),因此我们要考虑另外一种存储结构方…

邻接表和邻接矩阵

进入图论的大门(深渊)之前,我们一定要掌握的两种必备手段——邻接表和邻接矩阵,此刻将成为我们的巨大帮手(其实做不来题还是做不来),下面让我们来学习一下,这两种存图方式在计算机中…

图的邻接矩阵和邻接表的比较

欢迎关注“软件开发理论”公众号获取干货 图的存储结构主要分两种,一种是邻接矩阵,一种是邻接表。 1.邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图…

无向图邻接表实现

无向图邻接表实现 顶点:按照编号顺序将顶点数据存储在一维数组当中 关联同一个顶点的边(以顶点为尾的弧):用线性链表存储 头结点:datafirstarc 表结点:adjvex(邻接点的序号,存放…

邻接矩阵和邻接表

图的存储结构主要分两种,一种是邻接矩阵,一种是邻接表。 1.邻接矩阵 邻接矩阵的存储方式是用两个数组来表示图。一个一维数组储存图中顶点信息,一个二维数组储存图中的边或弧的信息。 无向图 这里右图是把顶点作为矩阵内行和列的标头罗列出…

图--邻接表

邻接表是图结构中的一种存储结构,适用于存储无向图和有向图。 邻接表存储图的实现方式是,给图中的各个顶点独自建立一个链表,用节点存储该顶点,用链表中其他节点存储各自的临界点。 与此同时,为了便于管理这些链表&a…

邻接表的实现(有向邻接表)、(无向邻接表),基于C++

邻接表 邻接矩阵的实现请看这里 是不错的一种图存储结构,但是,对于边数相对顶点较少的图,这种结构存在对存储空间的极大浪费。因此,找到一种数组与链表相结合的存储方法称为邻接表。 邻接表的处理方法是这样的: &a…

邻接表图文详解

在与链表相关的诸多结构中,邻接表是相当重要的一个。它是树与图结构的一般化存储方式, 邻接表可以看成“带有索引数组的多个数据链表”构成的结构集合。在这样的结构中存储的数据被分成若干类,每一类的数据构成一个链表。每一类还有一个代表元…

数据结构 图的邻接表

呃,下面该写邻接表了....... 邻接表的出现是因为图若是稀疏图,用邻接矩阵会造成空间的浪费,毕竟你要开辟一个一维数组和一个二维数组嘛,而且还是大开小用的那种。 邻接表为了避免内存的浪费引入了链式存储,它的处理办…

怎么画邻接表?不用邻接矩阵也能画?

目录 一、有向图的邻接表 二、无向图的邻接表 一、有向图的邻接表 最简单粗暴的方式就是把某个顶点发出的箭头指向的顶点全作为单个结点连接到此顶点的后面。结点数等于边数。 按正常思路的话,是一种递归遍历。 1.选一个点作为出发点。比如选一个v0。 2.从第一出…

数据结构之图(三)——邻接表

邻接表表示法(链式) 顶点: 按编号顺序将顶点数据存储在一维数组中。关联同一顶点的边: 用线性链表存储。如果有边\弧的信息,还可以在表结点中增加一项, 无向图的邻接表 例子: 特点: 邻接表不唯一若无向…