敏捷开发06:用户故事估算方法介绍

news2025/5/24 11:31:42

估算介绍

在以前开发 IT 软件时,使用较多的衡量软件开发工作量的单位是:小时、人天 或 人月。它是预估开发时间。比如:这个功能张三一个人开发需要 3 天时间完成。

这种 “人天” 估算只是 “理想人天” 的估算,有时与实际开发完成所需天数有很大差别。因为每个人完成同样复杂度工作所需的时间是不同的。

那在敏捷 Scrum 框架中,用户故事的开发工作量,如何估算一个用户故事开发工作量?估算开发任务工作量是一件很困难的事情,它需要考虑的因素有很多,包括:

  • 用户故事的规模大小
  • 业务复杂度、难度
  • 业务规则复杂度
  • 开发人员能力大小、个体差异
  • 团队成员休假、有事请假等突发因素

等等各种因素。

虽然很困难,但是智慧的人们还是给出了一些估算的方法,帮助 Scrum 团队对开发任务进行估算。下面介绍几种估算的方法。

估算在 Scrum 的哪个环节呢?

一般在 Sprint 计划会议上。
当产品负责人和 Scrum 团队人员选择好了 Sprint backlog 里的待开项,也对大的开发项进行了拆分。对不理解的一些开发项,相关负责人也进行了解释,团队成员理解也达成了一致。这时就可以进行开发任务工作量的估算了。

故事点Story Point

故事点介绍

什么是故事点 Story Point?

故事点是一个度量单位,完成某项开发任务所有工作量的估算结果。被估算的不是花费的时间长短,而是工作量多少。

故事点一般用来衡量用户故事或任务的工作量、复杂度和不确定性,它不是传统的估算方法:小时 或 人天。它不依赖具体的开发人员或开发速度,更多强调团队内部讨论,协商一致性和相对估算。

不同于预估完成任务所需时间长短,故事点关注的重点是复杂度和不确定性。

它是一个相对度量单位,一般是相对于基准故事。

在做故事点度量估算时,会选择一个基准故事(一个已知大小和复杂度的故事)作为基准点来参考,其它故事相对这个基准故事来做度量,对故事工作量进行估算。
然后额外考虑故事的复杂度因素、风险因素、不确定性因素,并且为这些额外的因素加上点数,这样估算出来的故事点数相对来说正确性就提高了许多。

故事点估算单位介绍

故事点数 = 完成故事所需工作量 + 复杂度因素点数 + 风险因素点数 + 不确定性因素点数

注意:

  • 1、 这里的点不代表任何时间长度。它只是一个工作量多少的度量单位。

估算数值选取

通常采用斐波那契数列,如 0、1/2、1、2、3、5、8、13,20,40,100;有时也采用自然数来替代,如 1,2,3,4,5,6。
具体情况要看故事之间的大小差别,怎样的数字间隔更加适合团队估算的情况。

斐波那契数列称为黄金分割数列,随着数字间距的扩大,对于颗粒度较大的需求更加便于我们判断选择哪个数字。

估算故事点简单流程

1、选择基准故事

团队先选择一个已知的用户故事作为“基准故事”,这个基准故事的任务复杂度和工作量是团队成员已知且易于理解的任务,然后给这个基准故事打一个故事点值(比如 3)。其它故事就和这个基准故事进行比较。

2、讨论和理解故事

在估算其它用户故事或开发任务时,要确保团队成员对任务的需求、复杂度、潜在风险的理解相一致。大家一起提问、讨论问题,产品负责人进行解释回答。

3、选择估算值

讨论完成后,团队成员各自独立选择,选择认为合适的故事点数值(如 3,5,8)。每个人的估算都应该是基于对任务相对复杂度、风险因素的理解上,而非实际工作时长。

4、展示估算结果

团队每个成员独自选择估算值完成后,所有人同步一起展示选择的数值。如果估算结果一致,则记录下该数值;如果估算结果值差异较大(比如一个是 3 ,一个是 13 ),则需进一步讨论。

5、 讨论估值差异后达成共识

当出现较大估值差异时,团队成员需要解释为什么选择该值。在讨论中,通过进一步澄清需求细节、拆解任务等方式,帮助团队成员更好地理解任务的复杂度,从而达成共识。
达成共识后,记录下最终讨论的估值数。然后进行下一个故事估算的讨论。

计划扑克估算

计划扑克估算,和上面的故事点估算,做法大同小异,它把故事点估算通过游戏化的方式来进行,改进了估算方式体验。
计划扑克是通过游戏化方式来进行估算,带有一点娱乐性质,体验效果可能会更好。

计划扑克介绍

在敏捷框架下,Scrum 团队是一个自组织团队,团队决策多数是集体协商,共同承诺。计划扑克就是一种集体估算的工具,通过游戏化的方式来进行估算,鼓励团队成员充分表达意见。

计划扑克是一种基于团队共识的估算方法。团队成员每人会拿到一套特制的卡片(扑克牌),卡片上标有数字,这些数字通常是斐波那契数列(如 0、1/2、1、2、3、5、8、13,20,40,?,∞ 等),卡片上数字大小表示对任务估算的估值数。

  • “∞” 卡用来表示估算者不认为这项任务能够完成
  • “?” 卡用来表示估算者无法进行估算

有的还有一张 咖啡 卡牌 ,表示估算久了,需要休息片刻。

有的团队也用自然数排列的牌,也可以,根据被估算的故事差异大小而定。

image

参与人数

一般是 4 - 8 人,参与人数太多,会拉长估算的时间,降低估算效率;人数太少,会导致估算结果偏差大。

计划扑克游戏过程

1、讲解用户故事

产品负责人从 Backlog 中选择一个待开发项(用户故事或任务),然后为大家进行简要的介绍。

2、讨论故事需求

团队成员针对该开发故事进行讨论,提出问题,产品负责人负责解答所有问题。

这一步是团队成员和产品负责人进行交互讨论:理解需求、实现细节、潜在风险等等,帮助团队成员和产品负责人对开发的需求理解是一致性。
这时,产品负责人可以根据大家的反馈,及时修改并完善开发项(需求)。

3、选择估算值

3.1、选择基准故事

估算时,常用的是相对估算值,不是绝对估算值。跟上面的故事点估算一样,会选择一个大家易于理解的故事作为一个基准故事,比如这个基准故事故事点值为 3,然后其它故事和这个基准故事比较,得出估算的相对点数值。

3.2、进行估算

团队成员已经对该开发故事有充分了解,没有问题后,大家就根据自己的理解和经验,各自独立选出一张代表自己估算值的卡牌,卡牌面朝下放置,不明牌。

这一步团队成员之间不可相互讨论估算值。

团队成员估值都完成后,大家同时亮牌,展示各自估算结果。

4、讨论估值差异

若每个成员对用户故事的估值差距不大,则记录下估值;
若每个成员对用户故事的估值差距较大,说明大家对该用户故事的理解、价值没有达成共识,大家需要解释为什么这样估值?然后对估值结果进行讨论。

例如第一轮估值亮牌结果为:3,3,8,13。这 4 个估值数明显 1 个偏大(与平均值对比),2 个偏小,大和小差距过大。平均值为 6.75,四舍五入为 7。
两个估值数 3 过小(偏离平均值)的成员需要解释为什么这样估值?估值数 13 过大的成员也需要解释为什么?然后大家对给出的解释一起讨论,对需求开发不同认知点、怀疑的点进行讨论。

讨论注意点:

  • a、敏捷教练要维护活动秩序,避免不必要的争吵和跑题。
  • b、无需深入代码细节,这是开发人员最爱跑题项之一。
  • c、鼓励大家都发言,不能总是某几个人发言讨论。

大家讨论完成后,再进行估值。重复上面的第 3 、4 步骤。一般经过 2 到 3 轮就可以得到一个相差比较近的估值。

如果第 3 轮估算结束后,大家还没有得到一个相近的估值,那就取一个大家认可的平均值作为估算结果。

差距大时,估值讨论不能无尽循环下去,这样会浪费大家本可以做其它工作的时间。这也是扑克估算的缺点,有时会耗时

估值的目的,第一,大家都了解故事开发的复杂度和工作量;第二,大家了解所做的详细工作有哪些;第三,大家对做的工作能有一个共识。

团队成员需要在尽可能短时间内,达成一个一致的估值结果。

其它估算方法介绍

亲和估算(Affinity Estimating)

亲和估算首先需要在一个白板或者墙上划分出不同的区域,每个区域代表一个工作量范围(同样可以用故事点来衡量),例如分为 “小(1 - 3 个故事点)”、“中(4 - 8 个故事点)”、“大(9 - 13 个故事点)” 等区域。

然后将所有的用户故事写在卡片上,团队成员一起把这些卡片按照自己对用户故事工作量的判断,放置到相应的区域中。在放置过程中,团队成员可以对每个用户故事进行简单讨论,确定其所属的工作量范围。

优点: 相对来说估算比较快速,能够在短时间内对大量用户故事进行初步估算。帮团队成员整体上把握用户故事的规模。

缺点: 它的估算精度相对较低,因为只是将用户故事划分到大概的工作量范围,没有像计划扑克那样精确到具体的数字。还有团队成员对工作量理解不一致,导致用户故事放置混乱,需要花时间重新讨论和调整。

功能点数估算

功能点估算方法是从用户的功能需求角度出发,通过计算用户故事中的功能点数来估算工作量。
比如后台用户管理功能,可能有增加、删除、修改、搜索、查看用户详情等功能。

优点: 以功能需求点为基础,比较客观,能一定程度上避免团队成员主观因素导致的估算偏差。它适用有详细需求文档的情况下,可以较准确估算工作量。

缺点: 功能点估算方法需要对系统的功能有详细的分析和定义。计算功能点数需要一定的专业知识和经验,而且不同的人对功能点的计算标准可能会有差异。此外,它没有考虑到非功能因素(如性能要求、安全要求等)对工作量的影响,可能会导致估算结果不够全面

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

环境变量与本地变量

目录 本地变量的创建 环境变量VS本地变量 认识完了环境变量我们来认识一下本地变量。 本地变量的创建 我们如果直接env是看不到本地变量的,因为本地变量和环境变量都具有独立性,环境变量是系统提供的具有全局属性的变量,都存在bash进程的…

Visual Studio中打开多个项目

1) 找到解决方案窗口 2) 右键添加→ 选择现有项目 3) 选择.vcxproj文件打开即可

广西壮族自治区园区投促中心党委书记陶德文率团到访深兰科技

2月16日,广西壮族自治区园区投促中心党委书记、主任,自治区园区办党组成员陶德文率团来到深兰科技集团上海总部考察调研,并与深兰科技集团创始人、董事长陈海波等集团管理层座谈交流,双方围绕深兰科技人工智能项目落地广西的相关事…

1005 K 次取反后最大化的数组和(贪心)

文章目录 题目[](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/)算法原理源码总结 题目 如上图,k是取反的次数,在数组【4,-1,3】中,当k 1,把-2取反为2,和为9;在数组…

Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网

| 线上研讨会时间:2025年1月27日 16:00~16:30 / 23:00~23:30 基于以太网的通信在工业自动化网络中的重要性日益增加。设备制造商正面临着一大挑战——如何快速、有效且经济地将工业以太网协议集成到其产品中。其中的关键问题包括:是否只需集成单一的工…

SpringBoot整合Redis和Redision锁

参考文章 1.Redis 1.导入依赖 <!--Redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.apache.c…

数仓搭建(hive):DM搭建(数据集市层)

DM层 数据集市层 &#xff08;Data Mart&#xff09; 粒度上卷&#xff08;Roll-up&#xff09;: 指的是沿着维度层次向上聚合汇总数据&#xff0c;从细粒度到粗粒度观察数据的操作。 示例 数仓的上一层DWS的是按日汇总 DM层基于DWS层主题日宽表上卷统计出按年,月,周的数…

用 Python 实现 DeepSeek R1 本地化部署

DeepSeek R1 以其出色的表现脱颖而出&#xff0c;不少朋友想将其本地化部署&#xff0c;网上基于 ollama 的部署方式有很多&#xff0c;但今天我要带你领略一种全新的方法 —— 使用 Python 实现 DeepSeek R1 本地化部署&#xff0c;让你轻松掌握&#xff0c;打造属于自己的 AI…

GitHub基本操作及Git简单命令

GitHub简介 GitHub就是一个远程仓库&#xff0c;远程仓库可以理解为就是一个可以保存自己代码的地方&#xff0c;在实际开发当中一个项目往往是有多个人来共同协作开发完成的&#xff0c;那么就需要一个统一代码保存的地方&#xff0c;而GitHub就是起到一个共享和汇总代码的作…

AI工作流+专业知识库+系统API的全流程任务自动化

我有点悲观&#xff0c;甚至很沮丧&#xff0c;因为AI留给普通人的机会不多了&#xff0c;这既是人类之间权力的斗争&#xff0c;也是硅基生命和碳基生命的斗争。AI自动化是无法避免的趋势&#xff0c;如果人类不能平权&#xff0c;那就只能跪下接受审判。 通过整合AI工作流、专…

本地文件共享——HFS

目录 1.介绍&#xff1a; 2.下载&#xff1a; 3.开始使用&#xff1a; 1.介绍&#xff1a; HFS&#xff08;HTTP File Server&#xff09;是一款轻量级的本地文件共享软件&#xff0c;主要用于快速搭建一个基于网页的临时文件服务器&#xff0c;支持通过浏览器直接上传或下载…

第十二届先进制造技术与材料工程国际学术会议 (AMTME 2025)

重要信息 大会官网&#xff1a;www.amtme.org&#xff08;了解会议&#xff0c;投稿等&#xff09; 大会时间&#xff1a;2025年3月21-23日 大会地点&#xff1a;中国-广州 简介 2025年第十二届先进制造技术与材料工程 (AMTME 2025) 定于2025年3月21-23日在中国广州隆重举…

【Alertmanager】alertmanager告警系统原理剖析与应用实战,应有尽有非常全面

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

C++之虚函数、虚函数表

C 虚函数、虚函数表详解与实践 C中虚函数是实现多态的重要技术&#xff0c;接下来将从汇编、以及gdb调试运行方面下手全面了解虚函数、虚函数表、以及虚函数调用。 原理初认识 一个由虚函数的类将会有一个虚函数表&#xff0c;且所有该类的实例化对象共享一个虚函数表。虚函…

零基础学QT、C++(一)安装QT

目录 如何快速学习QT、C呢&#xff1f; 一、编译器、项目构建工具 1、编译器&#xff08;介绍2款&#xff09; 2、项目构建工具 二、安装QT 1、下载QT安装包 2、运行安装包 3、运行QT creator 4、导入开源项目 总结 闲谈 如何快速学习QT、C呢&#xff1f; 那就是项目驱动法&…

Python SMTP 实现邮件发送功能

发送邮件的流程 登录我们邮箱&#xff0c; 书写接收者的邮箱&#xff0c; 书写题目与内容&#xff0c;添加附件&#xff0c; 点击发送。 邮件协议 smtp 是邮件发送的协议。pop3 是邮件接收的协议。 smtplib模块用法 创建协议对象&#xff1a;smtpObj smtplib.SMTP() 创建…

低价窜货要如何管控

在竞争激烈的市场环境中&#xff0c;低价与窜货就像一对如影随形的“孪生兄弟”&#xff0c;给品牌的健康发展带来了极大的困扰。低价销售不仅压缩了合理的利润空间&#xff0c;破坏了市场的价格体系&#xff0c;还会引发恶性竞争&#xff0c;让整个市场陷入混乱无序的状态。而…

《动手学机器人学》笔记

目录 0.介绍1.概述&#xff5c;空间位置、姿态的描述&#xff08;33&#xff09;&#xff5c;《动手学机器人学》2.&#xff08;2&#xff09;-Robotics Toolbox①&#xff08;V10.4&#xff09;3.齐次坐标与变换矩阵4.一般形式的旋转变换矩阵5.&#xff08;轴角法&#xff09;…

国产编辑器EverEdit - 文本编辑器的关键特性:文件变更实时监视,多头编辑不掉坑

1 监视文件变更 1.1 应用场景 某些时候&#xff0c;用户会使用多个编辑器打开同一个文件&#xff0c;如果在A编辑器修改保存&#xff0c;但是B编辑器没有重新打开&#xff0c;直接在B编辑器修改再保存&#xff0c;则可能造成在A编辑器中修改的内容丢失&#xff0c;因此&#x…

化学蛋白质组学与药物靶点筛选:DARTS、LiP-MS、TPP、CETSA技术的深度解析

更多详情请看&#xff1a;LiP-MS药物靶点筛选技术 在药物研发的复杂过程中&#xff0c;药物靶点的筛选是关键环节之一。化学蛋白质组学技术的出现&#xff0c;为药物靶点筛选提供了强大的工具&#xff0c;化学蛋白质组学是一门研究细胞或组织中全部蛋白质的化学组成、结构、功…