10分钟搞懂敏捷度量

news2024/11/18 3:34:22

敏捷团队需要选取一些关键指标对生产力、开发流程、产品质量进行度量,从而不断优化开发过程,提升团队效率。原文: Agile Metrics — What Matters and Why?

alt

敏捷已经在几十年内占领了软件开发行业,每个技术组织要么是敏捷的,要么是在向敏捷转型的过程中,可以将它们统称为"敏捷组织"!传统项目管理指标,如生产力、进度差异、成本差异等,在敏捷系统中不但没用,而且事实上可能适得其反。

有很多指标适用于敏捷系统。问题是,哪些指标才是真正重要的?下面将介绍如何选择一个对大多数环境和组织都有用的敏捷度量子集。

为简单起见,我们将度量标准分为以下三类: 生产率、稳定性和质量,如下所示。

生产力(Productivity)

以下是有关有效利用资源以交付结果的关键指标。

OKR(目标)贡献

重要的一点是如何衡量团队为实现组织或业务单元的战略目标付出了多少努力。例如,在每个Sprint中,平均60%的团队能力用于OKR。理想情况下,50%或更多的努力应该用于OKR或公司战略目标。

价值传递(Value Delivered)

这个指标有助于度量每个Sprint交付的价值。在以产品为主导的组织中,优先级公式或矩阵以与开发团队评估工作故事点相同的方式实现价值评估。例如,WSJF(Weighted Short Job First, 加权短作业优先)优先排序方法根据业务、风险降低、时间关键性和机会实现来评估价值点。RICE方法估算跨越范围和影响的价值点。

燃尽图(Burndown)

燃尽图是一种简单的对一组任务所取得进展进行可视化的方法。X轴表示时间盒的任务集,Y轴表示时间盒内的增量时间单位。燃尽图用于监控整个releaseepicsprint任务的超时完成情况。强烈推荐sprint燃尽图,它有助于在sprint期间保持团队每天的工作进度。

alt

流速(Velocity)

广义上讲,敏捷流速表示每个sprint中完成的故事点。这有助于基于故事点估算完成工作主体所需的sprint次数。流速有许多变体: 最大流速、平均流速和最佳流速。最好选择最佳流速,即根据验收标准,在没有任何未修复缺陷的情况下,每个sprint交付工作主体的平均故事点数量。

前置时间(Lead Time)

前置时间表示从创建工作项(Story, Feature或Epic)到完成所花费的时间。这是一个很好的衡量团队效率的标准。交付时间越短,团队将想法或未完成的请求转化为可工作软件的效率就越高。

alt

周期时间(Cycle Time)

周期时间表示从工作项(Story, Feature或Epic)开始到完成所花费的时间。这是衡量团队开发、测试和发布过程效率的好方法。周期时间越短,团队的开发、测试和发布过程就越高效。

累积流程图(CFD, Cumulative Flow Diagram)

累积流程图提供了从开始到结束的整个启动、开发、测试和发布过程的快照,是一个简单的可视化工具,可以让我们立即识别瓶颈。

alt

净推荐值(Net Promoter Score)

净推荐值是推荐者和诋毁者之间差异的百分比分数。顾客被要求给出一个从1到10的分数,表示他们向其他人推荐产品的可能性有多大。9分和10分是积极者,8分和9分是被动者,6分及以下是诋毁者。NPS可以说是所有指标中最重要的,因为客户是决定团队是否交付了任何有价值的东西的最佳利益相关者。

alt

稳定性(Stability)

以下是将帮助团队确保交付过程(包括开发、测试和部署)以稳定、可预测和可持续的方式运行的度量指标。

计划完成比(Planned to Done Ratio)

计划完成比表示在时间框结束时按计划完成的任务或工作项的百分比,可以让我们了解团队正确评估任务、解决障碍、技能差距以及及时交付的能力,目标是超过80%。密切关注这一指标将确保在长期内具有更高的可预测性。

alt

在制品(Work In Progress, WIP)

在制品是看板中的关键指标,也可以在Scrum中看到它。WIP是正在处理的工作项的数量,其目的是限制正在进行的工作,以减少上下文切换,使团队及时解决阻塞。理想情况下,我们的目标应该是每个Scrum团队成员一次完成1-2个任务。

alt

准时发布率(On-time Release Rate)

这是在发布日期按计划完成发布的百分比,表示团队在按时完成发布方面的可预测性。数字越高,重新规划和重组的需求就越低,而这些会导致团队能力的严重浪费。

失败部署(Failed Deployments)

表示在给定时间范围内失败的部署数量,涉及生产部署和低级环境的部署,是对代码稳定性的度量,并显示开发团队是否在Sprint结束时准备好了潜在的可发布代码,也是对环境稳定性的一种衡量。

团队流动率(Team Turnover Rate)

当涉及到稳定性时,这是最重要的指标之一。离职率表示敏捷团队成员离开团队和被替换的比率。团队成员流动的成本很高,招聘、提升技能、团队知识的流失等等都是成本。一定程度的流失不可避免,但如果超出了行业水平,就应该设法解决。一般来说,科技行业的人员流动率在每年10%到15%之间。员工流失的三大原因是: 薪酬、职业发展机会和工作条件。所以你知道如果人员流动率很高该怎么做了吧。

alt

幸福指数(Happiness Score)

与CSAT(客户满意度评分, Customer Satisfaction Score)类似,通常以5分的标准对团队平均幸福感进行评分。该调查通常作为Sprint回顾的一部分进行,并随着时间的推移进行跟踪,以监视一个又一个Sprint的偏差。幸福指数与离职率直接相关,幸福指数与离职率成反比,幸福指数越高,离职率越低!

alt

质量(Quality)

下面给出了一些关键指标,帮助团队确保交付的代码具有可接受的质量。

缺陷解决时间(Defect Resolution Time)

缺陷解决时间(DRT, Defect Resolution Time)或平均解决时间(MTTR, Mean Time To Resolution)是开发团队解决缺陷所需的平均时间,越短越好。平均DRT或MTTR通常跟踪所有环境中的缺陷。DRT的SLA因组织和团队而异,一般来说,团队应该将最大DRT的目标定为关键缺陷1天,高缺陷1-2天,中等缺陷5-7天,低缺陷10-14天。MTTR与客户满意度呈负相关,因此很重要。

alt

代码覆盖率(Code Coverage)

代码覆盖率是单元测试所覆盖的代码行所占的百分比,越高越好,目标是覆盖率超过80%。可以为每个构建都执行代码覆盖率检查,确保团队不会部署未准备好的代码。但代码覆盖率并不包括其他类型的测试,因此高代码覆盖率并不一定意味着代码质量高。

alt

测试覆盖率(Test Coverage)

有时,术语"测试覆盖率"与"代码覆盖率"可以互换使用,但并不相同。当代码覆盖率度量编写的代码是否被测试覆盖时,测试覆盖率度量功能需求是否被现有测试用例集所覆盖。目标是70-80%的覆盖率。子组件包括需求覆盖、产品覆盖、风险覆盖和边界覆盖。这个度量确保功能满足并且只满足需求。

逃逸缺陷(Escaped Defects)

这是在生产部署之后发现的缺陷数量,是对软件质量的粗略度量。理想情况下,这个数字应该是零,如果不是零,团队应该重新评估其QA和部署流程,将其降低到零。

alt

在开发周期中发现缺陷越晚,修复成本就越高。因此,这是敏捷团队应该跟踪的关键指标之一。

alt

综合度量

敏捷是经过时间考验的软件交付方式,可以最大限度为客户带来价值。在这个过程中有几十甚至上百个指标,如果我们认为所有指标都很重要,那就没有一个指标是真正重要的。关键是要选择适合团队的核心指标。不用说,如果没有执行的话,想法将毫无价值。是的,说起来容易做起来难。一开始会很困难,有时很痛苦。但一旦团队成熟并知道如何坚持基本流程并跟踪关键指标,结果就会物超所值。


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为了方便大家以后能第一时间看到文章,请朋友们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的支持和动力,激励我持续写下去,和大家共同成长进步!

- END -

本文由 mdnice 多平台发布

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

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

相关文章

【LeetCode题目详解】第九章 动态规划part03 343. 整数拆分 96.不同的二叉搜索树 (day41补)

本文章代码以c为例! 一、力扣第343题:整数拆分 题目: 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输…

Unity生命周期函数

1、Awake 当对象(自己这个类对象,就是这个脚本)被创建时 才会调用该生命周期函数 类似构造函数的存在 我们可以在一个类对象创建时进行一些初始化操作 2、OnEnable 失活激活(这个勾) 想要当一个对象(游戏…

Android 1.2 开发环境搭建

目录 1.2 开发环境搭建 1.JDK安装与配置 2.开发工具二选一 3.相关术语的解析 4.ADB命令行的一些指令 5.APP程序打包与安装的流程: 6.APP的安装过程: 7.本节小结 1.2 开发环境搭建 现在主流的Android开发环境有: ①Eclipse ADT SDK ②Android Stu…

虚拟掌控者:快速掌握VMware安装技巧

本章目录 一、VMware是什么?二、下载1、方式一(直接下载)1.1、点击产品1.2、下滑选择Workstation Pro1.3、下滑选择试用版1.4、选择下载对应的环境Windows | Linux 2、方式二 (进行登录下载)2.1、进入官方地址&#xf…

自动化运维工具-------Ansible(超详细)

一、Ansible相关 1、简介 Ansible是自动化运维工具,基于Python开发,分布式,无需客户端,轻量级,实现了批量系统配置、批量程序部署、批量运行命令等功能,ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是a…

Android OTA 相关工具(八) 使用 lpadd 添加镜像到 super.img

文章目录 1. lpadd 的编译2. lpadd 的帮助信息3. lpadd 的用法3.1 准备工作empty 的 super 设备镜像raw 格式的 super 设备镜像sparse 格式的 super 设备镜像 3.1 lpadd 分区操作示例 4. 其它 我一直以为没有人会使用 lpadd 工具,就像我以为没有人会去使用 lpmake 手…

文件夹中lib,dll含义

.dll文件是动态链接库(Dynamic Link Library)的缩写,它包含了一组可执行的函数和数据,供程序调用。它可以被多个应用程序共享和重用,减少了代码的冗余。通过动态链接库,可以实现代码的模块化和提高代码的复…

希尔贝壳入选“北京市人工智能大模型高质量数据集发布(第二批)”合作企业

8月28日,2023中国国际服务贸易交易会通用人工智能算力论坛在石景山区举办。论坛上,北京市人工智能大模型高质量数据集(第二批)发布,其中包含北京希尔贝壳科技有限公司的“大模型方言口语语音数据集”和“智能会议场景高…

使用python,生成数字在图片上的验证码

许多网站在注册时都要求输入验证码,这样做为了防止被程序恶意注册和保证网站安全 1. Pillow PIL(Python Imaging Library)是一个强大的python图像处理库,只是支持到python2.7, Pillow虽说是PIL的一个分支,但是pillow支持python3.x&#xff…

8.28 C++作业

定义一个基类 Animal&#xff0c;其中有一个虚函数 perform()&#xff0c;用于在子类中实现不同的表演行为。 #include <iostream>using namespace std;//封装 Animal 类 ---》基类 class Animal { private:string name; public://无参Animal(){}//有参Animal(string n)…

Unity通过偏移UV播放序列帧动画

大家好&#xff0c;我是阿赵。   在Unity引擎里面用shader播放序列图&#xff0c;估计很多人都有用到了&#xff0c;我自己而已写过好几个版本。这里大概介绍一下。 一、原理 先说目的&#xff0c;我现在有一张这样的图片&#xff1a; 这张图片上面&#xff0c;有9个格子&a…

Shell自动化日志维护脚本

简介&#xff1a; 系统日志对于了解操作系统的运行状况、故障排除和性能分析至关重要。然而&#xff0c;长期积累的日志文件可能变得庞大&#xff0c;影响系统性能。在这篇文章中&#xff0c;我们将介绍一个自动化的解决方案&#xff0c;使用 Bash 脚本来监控和维护系统日志文件…

管理类联考——逻辑——形式逻辑——汇总篇——知识点突破——形式逻辑——联言选言假言——等价

角度 角度——汇总 性质 &#xff08;1&#xff09; 有的 S 是 P 有的 S → P &#xff1b;换位&#xff1a;有的 S 是 P 有的 P 是 S &#xff1b;不可逆否 有的S是P有的S→P&#xff1b;换位&#xff1a;有的S是P有的P是S&#xff1b;不可逆否 有的S是P有的S→P&#xff1…

嵌入式面试笔试刷题(day14)

文章目录 前言一、进程控制块1.PCB控制块的作用2.PCB的存储位置 二、进程的三级映射三、return , exit, pthread_exit四、pthread_join作用五、互斥锁和信号量的区别六、怎么判断链表是否有环总结 前言 本篇文章继续我们的刷题之路。 一、进程控制块 这里只讲解进程的PCB控制…

北京APP外包开发需要注意的问题

开发APP的过程中&#xff0c;由于开发APP需要投入大量的时间、精力和资源&#xff0c;所以在开始前一定要做好充足的准备和规划。您需要注意以下重点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1…

3D路径,控件

1控件拖入画板&#xff1a; 2属性配置&#xff1a; 1轨迹颜色 2 3 4

本地环境安装了node.js,vscode运行js代码出现乱码

本地环境安装了node.js,vscode运行js代码出现乱码 问题描述—vscode运行js代码出现乱码 报错信息&#xff1a; 问题原因 node.js的下载安排了&#xff0c;环境变量vscode没有识别导致的乱码 解决方法 安装Node.js&#xff0c;软件会自动将其配置到环境变量中&#xff0c;然…

Kotlin inline、noinline、crossinline 深入解析

主要内容&#xff1a; inline 高价函数的原理分析Non-local returns noinlinecrossinline inline 如果有C语言基础的&#xff0c;inline 修饰一个函数表示该函数是一个内联函数。编译时&#xff0c;编译器会将内联函数的函数体拷贝到调用的地方。我们先看下在一个普通的 kot…

题目有点太简单了,不知道怎么选了

有个公司给了下面一个题目&#xff0c;看了下太简单了&#xff0c;都怕选错了。 后来拿着程序跑了下&#xff0c;就是这个意思嘛。 结论 程序跑出来的结果就是对输入的列表进行倒序排列。 public void testGetPut() throws Exception {List<Integer> numbers List.of(…

【基于交叉注意力的泛锐化深度展开迭代网络】

CADUI: Cross-Attention-Based Depth Unfolding Iteration Network for Pansharpening Remote Sensing Images &#xff08;CADUI&#xff1a;基于交叉注意力的泛锐化深度展开迭代网络&#xff09; 全色锐化是遥感成像系统获取高分辨率多光谱图像的重要技术。它主要通过融合低…