介绍 9 个研发质量度量指标

news2024/11/20 22:39:50

研发质量管理中的 MTTR、MTBF、MTTF、MTTD 都是什么?今天我们从生产事件的全生命周期出发,认识研发质量管理的 9 个度量指标——「MT 家族」。

01 Mean Time To ALL

「MT」是 Mean Time 的缩写,意为平均时间,「MT 家族」则是 LigaAI 对「MT」开头的一系列量化指标的戏称。

最常用于跟踪研发质量的两个 MT 指标分别是 MTTR 和 MTBF。近几年,随着精细化研发管理需求的攀升,行业也出现了 MTTD、MTTA、MTRS、MTTI 等细分管理指标,旨在帮助技术团队更好地了解生产事件发生的频率以及团队的恢复速度。

02 共识在前,度量在后

在使用「MT 家族」度量质量水平之前,研发团队需要先就两个基础问题达成共识。

  • 如何计算系统的总服务时长?
  • 如何定义系统的可用时间(Uptime)和不可用时间(Downtime)?

明确第一个问题有助于规范讨论对象。系统的服务周期是多长?系统维护升级或提前告知的主动停机等特殊事件应否计入服务时长?研发团队应就以上问题达成一致,才能辅助更准确的度量和管理。

讨论第二个问题的意义在于建立内部一致的判断标准。什么样的事件属于完全中断事件?在部分中断事件中,多大程度的阻碍或多大影响范围的故障可以被定义为「系统不可用」?可正常运行但不符合预期水平的系统是否处在可用状态?

如果能将事件的具体量值和标准讨论并确定下来,研发效能管理或许会有一个更加清晰的视图。

03「MT 家族」全员辨析

下面是单个生产事件从故障发生到修复完成的简要示意图,根据起止时间点的不同,我们将获得若干个 MT 指标。

温馨提示:研发效能管理下的「MT 指标」或与其他领域的定义有所不同。

1. Mean Time To Detect(MTTD)

平均故障检测时间(MTTD)是系统出现故障到问题首次被发现的平均时间,用来衡量问题在被发现前存在的平均时长,可以用一定周期内的事件总检测时间除以事件总个数计算得出。

系统出现故障后,生产事件可能会被监控工具或观测平台快速识别并自动提醒,也可能被用户率先发现。因此,对问题识别得越慢,MTTD 越大,用户可能遭受中断的时间也会越长。

2. Mean Time To Acknowledge(MTTA)

平均应答时间(MTTA)衡量了系统不可用被首次发现后,研发团队平均需要多久能够着手修复问题,反映了团队的响应能力和警报系统的效率。定期监控 MTTA 对减少警报噪音,提高工作效率也有显著作用,因为居高不下的 MTTA 可能说明研发团队正在被「警报疲劳」所困扰。

MTTA = 故障首次被发现到开始修复的总间隔时间/事件总数

3. Mean Time To Repair(MTTR)

根据「R」的不同释义,MTTR 可以表示为平均修复时间、平均恢复时间、平均响应时间和平均解决时间。四者在含义上皆有不同,因此在日常工作和沟通中,要小心上下文缺失导致的「鸡同鸭讲」哦!

平均修复时间衡量了研发团队排除和修复故障的效率,是指开发团队从开始修复到系统恢复正常运行的平均时间,包含修复、测试、部署等多个环节。

平均修复时间可以用一定周期内的系统总修复时长除以事件总个数得出。MTTR 越小,说明系统的可维护性越强,易恢复性越好。此外,由于系统复杂情况或故障严重程度各不相同,技术管理者在实际管理中也要避免掉入「数字管理陷阱」。

MTTR = 开始修复到恢复可用状态的总间隔时间/事件总数

4. Mean Time To Recover(MTTR)

平均恢复时间也称平均服务恢复时长(Mean Time To Restore Service, 即 MTRS),也是 DORA 指标中的「服务恢复时间」。

它衡量了系统从不可用状态恢复到正常可用状态的平均耗时,在数值上与系统的平均不可用时长相等,包含研发团队监控、定位、识别和解决故障等多个过程。经验法则指出,优秀的研发团队每年的平均恢复时间一般不超过 5 个小时。

MTTR 或 MTRS = 系统总不可用时间/事件总数

5. Mean TimeTo Respond(MTTR)

平均响应时间是指系统不可用状态从被发现到被解决的平均时间,反映了研发团队响应需求和变化的效率以及系统可维护性的高低。平均响应时间不考虑事件通知的延迟性,常在网络安全中用来衡量团队缓解系统攻击的效率。

MTTR = 故障被发现到系统恢复可用的总间隔时间/事件总数

6. Mean Time To Resolve(MTTR)

平均解决时间衡量了故障出现到被彻底解决所花费的平均时间。「彻底解决」意味着该故障在未来的运行中不会再现,因此平均解决时间需要统计研发团队发现问题、检测故障、修复故障以及确保故障不会再发生等环节的总时间。

MTTR = 故障出现到彻底解决的总间隔时间/事件总数

7. Mean Time Between Failure(MTBF)

平均无故障时间(MTBF)是衡量系统可靠性和可用性的关键指标之一,指可修复系统在运行期间从前一个故障(结束)到下一个故障(出现)所经历的平均时间,代表了系统的平均可用时间。

MTBF 越大,说明系统持续提供正确服务的时间越长,可靠性越强。通过计算一定周期内的 MTBF,研发团队还可以对未来故障的发生时间展开预测,以便更好地管理。

MTBF = 连续两次事件的总间隔时间/事件总数

8. Mean Time To Failure(MTTF)

与 MTBF 相似,平均失效时间(MTTF)也是衡量系统可靠性的关键指标;二者的区别在于,MTTF 用于衡量不可修复的系统,而 MTBF 的管理对象是可修复的系统。

MTTF 是指不可修复的系统或产品从开始运行到发生故障而终止服务的平均时间,可以简单理解为平均使用寿命。相比软件研发行业,MTTF 更常用来描述硬件、组件或基础设施等等。

其管理价值在于通过对大量相同类型的系统或产品进行更长周期的观察和统计,团队可以了解该类型系统/产品的失效时间,并率先为淘汰和更换旧系统/产品做好准备。

写在最后

速率、质量和价值是研发效能管理的三驾马车。而相较速率而言,研发质量管理对团队共识的要求更高,因为我们需要通过集思广益,描绘一个线条干净、指标区隔清晰的质量评估视图,以进一步支持无歧义的指标量化管理;否则,研发效能管理最终又会回到让人头疼的「定义讨论会」。

本文所提到的 9 个「MT 指标」可以从系统可靠性、可用性和可维护性等多个维度,衡量研发质量水平并辅助技术管理者展开更精确、更精准的研发质量监控和管理,进而有效提升组织效能,赋能业务增长。


LigaAI@CSDN 还将分享更多研发效能度量、研发管理实践等干货内容,欢迎关注我们。

LigaAI 助力开发者扬帆远航,立即体验新一代智能研发协作,一起变大变强!

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

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

相关文章

OpenStack(T版)——仪表板(Horizon)服务介绍与安装

文章目录 OpenStack(T版)——仪表板(Horizon)服务介绍与安装安装和配置Horizon仪表板服务组件(1)安装软件包(2)修改配置文件(3)修改httpd文件完成安装 访问 OpenStack(T版)——仪表板(Horizon)服务介绍与安装 Openstack项目中的Horrizon仪表板服务组件是以Web界面形式展示各项…

【shell脚本百炼成魔】shell脚本之函数实战

前言 文章目录 前言函数的概念函数的基本语法1.使用关键字 function:2.直接使用函数名和大括号: 函数的简单案例案例一,欢迎函数案例二:购物清单 函数的传参1. 位置参数2. 命令替换3. 数组参数 函数的返回值1. 判断函数的执行结果…

SVNKit 1.10.8: svn add和svn commit方法总结

SVNKit 1.10.8: svn add和svn commit方法实现总结: doAdd(java.io.File path, boolean force, boolean mkdir, boolean climbUnversionedParents, SVNDepth depth, boolean depthIsSticky, boolean includeIgnored, boolean makeParents) 参数是的含义及作用&…

实现淘宝母婴订单实时查询和可视化|Flink-Learning实战营

为进一步帮助开发者学习使用 Flink,Apache Flink 中文社区近期发起 Flink-Learning 实战营项目。本次实战营通过真实有趣的实战场景帮助开发者实操体验 Flink,课程包括实时数据接入、实时数据分析、实时数据应用的场景实。并结合小松鼠助教模式&#xff…

K8s组件:etcd安装、使用及原理(Linux)

K8s组件:etcd安装、使用及原理(Linux) 1 介绍及安装 1.1 介绍 分布式系统架构中对一致性要求很高,etcd就满足了分布式系统中的一致性要求。 实现了分布式一致性键值对存储的中间件,支持跨平台,有活跃的…

交互式标注工具-Paddlelabel

PaddleLabel 是基于飞桨 PaddlePaddle 各个套件功能提供的配套标注工具。目前支持对分类、检测、分割、OCR 四种常见的计算机视觉任务数据集进行标注和管理,除基础的手动标注功能外也支持深度学习辅助标注,可以有效地提升标注效率。重点是free free free…

玩转代码|那些实用的JavaScript单行代码,帮你轻松工作

目录 数组去重 从url获取参数并转为对象 检查对象是否为空 反转字符串 生成随机十六进制 检查当前选项卡是否在后台 检测元素是否处于焦点 检查设备类型 文字复制到剪贴板 获取选定的文本 查询某天是否为工作日 转换华氏/摄氏 两日期之间相差的天数 将 RGB 转换为…

并发-编程之JMMvolatile详解

并发三大特性:可见性、原子性、有序性 并发都是数据【多线程对一个变量进行连续加1】 线程A和B都对count进行连续加1,因为count不是原子性,如果再执行countcount1之前cpu执行权被抢占,就会阻塞住,这时候线程B完成count…

基于Java车库智能管理平台设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Java | 使用切面AOP拦截并修改Controller接口请求参数

关注common wx: CodingTechWork 引言 在开发过程中,会有一些需求将controller层的一些方法入参进行全量转换,最容易想到的可能是在调用下层service方法时,调用公共的方法进行入参转换,这时带来的唯一问题就是代码不雅…

TCP的粘包、拆包、解决方案以及Go语言实现

什么是粘包,拆包? TCP的粘包和拆包问题往往出现在基于TCP协议的通讯中,比如RPC框架在使用TCP进行数据传输时,由于TCP是基于字节流的协议,而不是基于消息的协议,可能会出现粘包(多个消息粘在一起…

基于matlab创建基于颜色特征的图像检索系统(附源码)

一、前言 此示例说明如何使用自定义的功能包工作流创建基于内容的图像检索 (CBIR) 系统。 基于内容的图像检索 (CBIR) 系统用于查找在视觉上与查询图像相似的图像。CBIR系统的应用可以在许多领域找到,例如基于网络的…

记账APP:小哈记账4——记账首页页面的制作(1)

项目介绍: 小哈记账是一款用于记账APP,基于Android Studio开发工具,采用Java语言进行开发,同时使用litepal和阿里云数据库进行数据的增删查改,以图标的形式在App的界面上显示。App可以清晰显示收支情况,并以…

2. MongoDB分片集群架构实战-----MongoDB分片集群和多文档事务详解

分布式技术MongoDB 1. 分片简介2. MongoDB分片集群架构3. 环境搭建3.1 分片集群搭建3.2 使用mtools搭建分片集群 4 使用分片集群5. 分片策略5.1 什么是chunk5.2 分片算法5.3 哈希分片5.4 分片标签5.4 分片键(ShardKey)的选择5.5 分片键(ShardKey)的约束 6. 数据均衡6.1 均衡的方…

【JAVAWEB】JavaScript基础知识

目录 1.认识JavaScript 1.1JavaScript是什么 1.2JavaScript和html,css的关系 1.3JavaScript的组成 2.JavaScript的前置知识 2.1JavaScript的书写形式 行内式 内嵌式 外部式 2.2注释 2.3输入输出 3.JavaScript的语法知识 3.1变量的使用 创建变量 使用变量 3.2动态…

echarts柱状图查找数据

controller层&#xff1a; /*** 查询最近一周每天的行为识别总人数* return*/ApiOperation("查询最近一周每天的行为识别总人数") // RequiresPermissions("zhgd:aialarmdata:selectShu")GetMapping("/selectShu")public List<List> se…

UE5 Motion Warping功能学习

MotionWarping&#xff08;运动扭曲&#xff09;可对角色根运动进行修改&#xff0c;从而让角色根运动动画结束时准确停在某一点&#xff0c;如图&#xff1a; 此外UE5还提供移动步幅、转向的Warping功能&#xff08;防滑步&#xff09;&#xff0c;之前写过一个简单的介绍可…

9.2 IO多路复用select函数

目录 I/O多路复用模型 多路复用的实现方式 select函数 fd_set结构体 I/O多路复用模型 多路复用的实现方式 select函数 int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);poll函数 int poll(struct pollfd *fds, nfds_…

Git 安装 配置初始化

1. Git 下载 1.1 git 官网下载 Git 官网 https://git-scm.com/download/win 根据自己的电脑系统下载对应的版本 1.2 百度网盘下载 百度网盘&#xff1a;https://pan.baidu.com/s/17Thcov7VKfIc_hINcQimrw 提取码&#xff1a;13142. 安装git 2.1 双击安装包 2.2 点击next …

新应用爆发,开启5G的鱼龙之变

鱼龙变化&#xff0c;是中国自古以来就有的吉祥寓意与美好期盼。早在商代出土的玉雕中&#xff0c;就出现了由鱼化为龙的形象。晋代民间的歌谣中&#xff0c;已经有了“东海大鱼化为龙”的说法。在此之后&#xff0c;“鱼跃龙门”成为了考试中第的代名词&#xff0c;也被引申为…