当前位置: 首页 > news >正文

《A++ 敏捷开发》- 10 二八原则

团队成员协作,利用项目数据,分析根本原因,制定纠正措施,并立马尝试,判断是否有效,是改善的“基本功”。10-12章会探索里面的注意事项,13章会看两家公司的实施情况和常见问题。

如果已经获得高层支持,她也赞同目前返工工作量太多并愿意投入资源进行过程改进,我们首先应该针对哪些方面进行改进呢?

软件开发的特点是,超过95%的成本都是人力成本。因此,我建议利用二八(20/80)原则,继续识别哪类工作的占比最高(详见附件)。

请把过去一年的软件开发项目,按照不同工种占项目总工作量的比例,从多到少排个序。
  1. 编码与代码设计。
  2. 交付后的所有工作,包括维护、更新与缺陷修正。
  3. 交付前的评审,静态扫描,测试与缺陷修正。
  4. 项目管理与监控。

可以参考软件开发度量专家卡铂斯•琼斯 (Capers Jones) 先生在2012年的研究(详见附件中的“开发项目工作量(成本)分布”),看看你的选择与典型分布有多大差距。
软件开发项目最大的工作量通常是花在找出与修正缺陷上(开发里的“测试与评审”),Capers Jones 发现,对于一个超过10,000个功能点、计划使用25年的大型系统来说,有接近一半的工作量是与找出并修正缺陷相关。
很多项目中的缺陷大部分还是到后期才发现,这导致了大量返工。如果能提前发现并解决这些缺陷,就可以大大降低研发成本(不仅仅是提升产品质量)。
对于一个软件项目来说,发现缺陷最多的是在系统测试阶段,其次是在验收测试阶段(很多公司都是如此):

微信截图 20231023085822.png

但很多开发人员误以为编码是项目的主要工作,却忽视了大量因质量问题引起的返工。所以,只有当管理层意识到尽早发现并排除缺陷的重要性并引起重视,公司才有机会改进。

有些偏业务的领导可能会质疑,客户不一定关注缺陷密度,只要达到可接受的水平就可以了。

我解释:“在软件开发中,减少后期测试才发现的缺陷,不仅仅能提升产品质量,更重要的是能降低研发的总工作量,所以最终能帮助公司省钱,减少开发人员加班。”(详见附件“公司高层不一定关注质量”)

怎样开始

没有度量便无法谈改进,所以应先考虑如何采集修复缺陷相关的数据。然而,在探索数据收集与分析之前,我们更需要先确定度量分析的策略。

但在探索数据收集与分析之前,我们更需要先想好度量分析的策略。

请问你会使用以下哪种度量分析策略?

Diagram 2.0.png

A:由公司的过程改进组(EPG)专员设计并执行过程改进的度量计划,包括收集哪些数据、如何收集以及如何分析。然后按计划收集各项目团队的数据,进行总体分析,并制定公司的改进方案。

B:将数据收集与分析的任务下放到各团队,让团队制定自己的改进方案。

如果你认为度量与分析需要专业知识,要由专人来做,就请选择A,并考虑以下几点:

  1. 提供数据的人需要很长时间才能收到反馈。例如,从团队成员提交里程碑数据,到项目经理填报,再由度量分析人员收集、整理多个项目的数据,可能需要一到两个月时间。再经过数据分析,管理层评审,最终到团队成员收到反馈可能共两三个月。由于每位提供数据者都希望尽快得到反馈,如果反馈的时间很长,那么团队成员还会有动力继续收集数据吗?缺乏动力还会引发其他问题。
  2. 无法确保数据的准确性,导致分析没有意义。如果这些指标用于公司考核KPI,情况会更糟。度量分析人员需要什么数据,提供数据的人都会按理想的指标填写,反正公司级的总体分析人员也无法验证数据的准确性。
  3. 假定各项目的特性或问题根因都是类似的。
与某质量部经理的对话:

经理:从去年开始我们进行度量分析以来,就发现员工会对数据造假,导致结果失真。度量什么,他们就造假什么,所以我们想通过工具代替人工,不仅能提升效率,还能帮助判断数据是否合理。现在我们的主管很反感度量,因为每次度量就会有人造假——大家了解算法原理后,就开始造假。比如我们搞了红黑榜,但很多人聪明得很,就会想办法作弊。我们有很多数据统计分析,比如看测试用例与需求的比例。尽管客户发现的缺陷比例降低了,但由于我们对质量特别注重,产品经过多年的逐步演化,过程很复杂,导致软件缺陷的修复很耗时,客户不太满意。而且公司要求交付的频率要比以前高了很多,我们团队做这些分析都忙不过来,所以希望利用自动化工具加快速度。
我:除了数据收集问题,你们这种总体分析策略可能还有另一个问题:没有考虑各个项目的特性并不一样。现在你们对几十个项目的总体趋势进行分析,但每个项目的根本原因很可能不同。比如,同样是测试用例比例数,你们采集的数据范围从最低的0.3到最高的超过200,但你们取平均值5.1来做分析。

但如果把数据分析下放到团队自己做,便灵活多了;也正因为他们有参与收集和分析讨论,过程改进组便可以节省很多沟通(数据收集)成本与失真。反而应该重新定位自己是内部老师,辅导团队怎么做好数据分析,效果会更好。
你可能疑问:“团队自己讨论便可以得到改进吗?不需要领导监督?”
如果团队有能力,就应该放手让他们自己收集数据、利用数据进行分析并做出改进。质量经理应把自己重新定位为团队的教练,去辅导他们如何收集与分析数据。千万不要以为这项工作会比以前自己做分析更轻松,其实需要更熟悉整个过程,才能真正辅导好团队。要公司从定性管理提升到定量管理,最大的挑战并非数据分析,反而是要让管理层了解并赞同需要让团队自主分析数据,自己寻找纠正措施。

下一章会继续探索团队协作与分析根因;团队如何利用迭代冲刺数据,在敏捷冲刺回顾,做好根因分析,得到提升。

附件

二八原则(80/20)

帕里托(Pareto) ,16世纪意大利威尼斯人,他发现虽然威尼斯很富有,但财富并非平均分布,80%财富在20%手里,他也发现很多其他分布都非平均。

ToolsParetoScreenshot 2023-06-02 191628.jpg

因为过程改进需要公司额外的资源投入,必须有针对性地找出最容易取得改进效果的原因,才可能拥有最大的成功机会。所以,应该利用二八原则去识别影响最大的几个因素. 以上图为例,原本A类问题出现最多,针对这类问题做过程改进之后, A类问题就少了很多,下一轮便应针对最多的B类问题做改进。
有些人以为,只需要对某个维度做分析即可,并没有从多个维度进行分析。例如,某纸制产品工厂会计数据显示,8成的产品问题相关成本都归属于5类。

例如,某纸制产品工厂会计数据显示,因纸质量问题被客户退货类的损失最大,共5560千美元,占总损失的61%。针对这类损失,发现里面八成是由6个产品引起(共有53个产品),共4480千美元,占5560的 80%。针对这6个产品把损失按缺陷种类细分,发现B产品容易断裂缺陷(Tear)的占比最高,612千美元,我们就应该针对这一问题研究如何改善。

162页替换图片.png

开发项目工作量(成本)分布

参考Capers Jones先生2012的例子,汇总成以下比例:

AR1成本占比.jpg

测试与评审一般占开发工作量的30%,测试与评审一般占总质量成本(包括发布后维护与改缺陷工作)的66%,把所有工作量都加起来,测试与评审还是占最大(26%),编码第二 (22%)。

注意:测试与评审包括所有与缺陷相关的成本,包括单元测试、静态扫描、评审与相关的缺陷修正,而编码只包括设计与编写代码部分。例如有些人会觉得比例应该是开发30%,测试和Bug修改25%,需求和设计20%,项目管理和沟通20%,文档5%。但如果按上面的定义,开发部分很可能已包括单元测试、静态扫描与改正缺陷工作,如把这些都归到测试评审里会变回类似上图的比例。

公司高层不一定关注质量

Q&A

:在传统 IT的 公司,无论是 缺陷(Bug) 率还是其他质量指标对业务的影响的相关性都不容易度量,只有重大事件才会让公司在客户面前失去信任,所以高层不会真正的重视质量。
:理解,但软件BUG的暴露越往后,返工的工作量就越高,而且是几何级数的增加(例如在单元测试或评审发现都可以1人时内解决;系统测试通常要花起码20人时,客户使用后才发现便更高)。但在很多IT公司,大部分缺陷都是在系统测试、甚至到验收测试才发现。如果能把软件缺陷的发现前移,把通过系统测试、验收测试发现的缺陷减半,便可以大量降低质量成本,提升开发生产率。所以我建议利用缺陷数估算返工的工作量来引起老板重视。(而不是仅仅说降低缺陷率)

MGR f1.1.jpg

相关文章:

《A++ 敏捷开发》- 10 二八原则

团队成员协作,利用项目数据,分析根本原因,制定纠正措施,并立马尝试,判断是否有效,是改善的“基本功”。10-12章会探索里面的注意事项,13章会看两家公司的实施情况和常见问题。 如果已经获得高层…...

Spring Boot 框架知识汇总

1、什么是SpringBoot? 通过Spring Boot,可以轻松地创建独立的,基于生产级别的Spring的应用程序,您可以“运行"它们。大多数Spring Boot应用程序需要最少的Spring配置,集成了大量常用的第三方库配置,使…...

国产麒麟、uos在线编辑word文件并控制编辑区域(局部编辑)

windows系统也适用,该插件可同时支持windows和国产系统 在实际项目开发中,以下场景可能会用到Word局部编辑功能: 合同审批公文流转策划设计报告汇签单招投标(标书文件)其他,有模板且需要不同人员协作编辑…...

Go:基本变量与数据类型

目录 前言 前期准备 Hello World! 一、基本变量 1.1 声明变量 1.2 初始化变量 1.3 变量声明到初始化的过程 1.4 变量值交换 1.5 匿名变量 1.6 变量的作用域 二、数据类型 1.1 整型 1.2 浮点型 1.3 字符串 1.4 布尔类型 1.5 数据类型判断 1.6 数据类型转换 1.…...

计算器原生js

目录 1.HTML 2.CSS 2.JS 4.资源 5.运行截图 6.下载连接 7.注意事项 1.HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…...

怎样将aac转换mp3格式?推荐四个aac转MP3的方法

怎样将aac转换mp3格式&#xff1f;当需要将aac格式音频转换为MP3格式时&#xff0c;有几种方法可以轻松实现这一目标。MP3是一种广泛支持的音频格式&#xff0c;几乎所有设备和平台都能播放MP3文件&#xff0c;包括各种音乐播放器、手机、平板电脑和汽车音响系统。而且它也提供…...

MongoDB - 查询操作符:比较查询、逻辑查询、元素查询、数组查询

文章目录 1. 构造数据2. MongoDB 比较查询操作符1. $eq 等于1.1 等于指定值1.2 嵌入式文档中的字段等于某个值1.3 数组元素等于某个值1.4 数组元素等于数组值 2. $ne 不等于3. $gt 大于3.1 匹配文档字段3.2 根据嵌入式文档字段执行更新 4. $gte 大于等于5. $lt 小于6. $lte 小于…...

html5——CSS高级选择器

目录 属性选择器 E[att^"value"] E[att$"http"] E[att*"http"] 关系选择器 子代&#xff1a; 相邻兄弟&#xff1a; 普通兄弟&#xff1a; 结构伪类选择器 链接伪类选择器 伪元素选择器 CSS的继承与层叠 CSS的继承性 CSS的层叠性 …...

Python-数据爬取(爬虫)

~~~理性爬取~~~ 杜绝从入门到入狱 1.简要描述一下Python爬虫的工作原理&#xff0c;并介绍几个常用的Python爬虫库。 Python爬虫的工作原理 发送请求&#xff1a;爬虫向目标网站发送HTTP请求&#xff0c;通常使用GET请求来获取网页内容。解析响应&#xff1a;接收并解析HTTP响…...

虚幻引擎ue5如何调节物体锚点

当发现锚点不在物体上时&#xff0c;如何调节瞄点在物体上。 步骤1&#xff1a;按住鼠标中键拖动锚点&#xff0c;在透视图中多次调节锚点位置。 步骤2:在物体上点击鼠标右键点击-》锚定--》“设置为枢轴偏移”即可。...

Xcode持续集成之道:自动化构建与部署的精粹

标题&#xff1a;Xcode持续集成之道&#xff1a;自动化构建与部署的精粹 在快节奏的软件开发中&#xff0c;持续集成&#xff08;Continuous Integration, CI&#xff09;是提升开发效率和软件质量的关键实践。Xcode作为苹果生态中的核心开发工具&#xff0c;提供了与多种持续…...

Java高频面试基础知识点整理13

干货分享&#xff0c;感谢您的阅读&#xff01;背景​​​​​​高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09; 最全文章见&#xff1a;Java高频面试基础知识点整理 &#xff08;一&#xff09;Java基础高频知识考点 针对人员&#xff1a; 1.全部人员都…...

css画半圆画圆弧

利用border-radius和border完成&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> <style> .semicircle {width: 100px;height: 50px;border-radius: 0 0 50px 50px;background:…...

LeetCode HOT100(四)字串

和为 K 的子数组&#xff08;mid&#xff09; 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2 解法1&#xff1a;前缀和Map 这…...

uniapp引入 uview( HBuilder 和 npm 两种安装方式) #按需引入

方式一、HBuilder 安装 uview 1.1. HBuider安装-链接-》》 1.2. 在uni.scss 中引入 import "uni_modules/uview-ui/theme.scss";1.3. main.js 引入&#xff08;import Vue from ‘vue’ 下面&#xff09; import uView from "uni_modules/uview-ui"; V…...

使用uni-app和Golang开发影音类小程序

在数字化时代&#xff0c;影音内容已成为人们日常生活中不可或缺的一部分。个人开发者如何快速构建一个功能丰富、性能优越的影音类小程序&#xff1f;本文将介绍如何使用uni-app前端框架和Golang后端语言来实现这一目标。 项目概述 本项目旨在开发一个个人影音类小程序&#…...

基于Go1.19的站点模板爬虫详细介绍

构建一个基于Go1.19的站点模板爬虫是一项有趣且具有挑战性的任务。这个爬虫将能够从网站上提取数据&#xff0c;并按照指定的模板进行格式化。以下是详细的介绍和实现步骤。 1. 准备工作 工具和库&#xff1a; Go 1.19colly&#xff1a;一个强大的Go爬虫库goquery&#xff1…...

永恒之蓝:一场网络风暴的启示

引言 在网络安全的漫长历史中&#xff0c;“永恒之蓝”&#xff08;EternalBlue&#xff09;是一个不可忽视的里程碑事件。它不仅揭示了网络世界的脆弱性&#xff0c;还促使全球范围内对网络安全的重视达到了前所未有的高度。本文将深入探讨“永恒之蓝”漏洞的起源、影响及其对…...

AI绘画:艺术与科技的交融,创新浪潮与无限可能

在科技日新月异的当下&#xff0c;AI 绘画作为人工智能领域的一颗璀璨新星&#xff0c;正以惊人的速度在国内崭露头角&#xff0c;引发了艺术与技术交融的全新变革。随着人工智能技术的飞速发展&#xff0c;AI绘画已成为艺术与科技交融的新宠。2024年&#xff0c;AI绘画行业在国…...

医疗健康信息的安全挑战与隐私保护最佳实践

医疗健康信息的安全挑战 医疗健康信息的安全挑战主要包括数据规模庞大、管理困难、数据类型多样导致的安全风险高、以及法律法规与伦理约束带来的挑战。随着医疗信息化的发展&#xff0c;医疗健康数据呈现出爆炸式的增长&#xff0c;医院信息系统、电子病历、健康管理等产生了海…...

《C++并发编程实战》笔记(一、二)

一、简介 抽象损失&#xff1a;对于实现某个功能时&#xff0c;可以使用高级工具&#xff0c;也可以直接使用底层工具。这两种方式运行的开销差异称为抽象损失。 二、线程管控 2.1 线程的基本控制 1. 创建线程 线程相关的管理函数和类在头文件&#xff1a; #include <…...

【日常bug记录】el-checkbox 绑定对象数组

版本说明 "vue": "2.6.10", "element-ui": "2.13.2", 这个写法很怪异哦&#xff0c;但确实管用。el-checkbox 绑定的 label 是双向绑定的值&#xff0c;也就是选中之后传到表单数据里面的值&#xff0c;一般设置为 id&#xff0c;然后…...

单元测试Mockito笔记

文章目录 单元测试Mockito1. 入门1.1 什么是Mockito1.2 优势1.3 原理 2. 使用2.0 环境准备2.1 Mock1) Mock对象创建2) 配置Mock对象的行为(打桩)3) 验证方法调用4) 参数匹配5) 静态方法 2.2 常用注解1) Mock2) BeforeEach 与 BeforeAfter3) InjectMocks4) Spy5) Captor6) RunWi…...

基于SpringBoot+VueJS+微信小程序技术的图书森林共享小程序设计与实现:7000字论文+源代码参考

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…...

GitHub连接超时问题 Recv failure: Connection was reset

用手机热点WIF拉取git项目的时候&#xff0c;遇到Recv failure: Connection was reset问题。 解决办法 一、手动开启本地代理 二、在终端&#xff08;cmd&#xff09;输入命令 git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy https:…...

浅谈PostCSS

1. 背景 css的预处理器语言&#xff08;比如 sass&#xff0c; less&#xff0c; stylus&#xff09;的扩展性不好&#xff0c;你可以使用它们已有的功能&#xff0c;但如果想做扩展就没那么容易。 sass是很常用的css预处理器语言&#xff0c;在webpack中要使用它&#xff0c;…...

GCN、GIN

# 使用TuDataset 中的PROTEINS数据集。 # 里边有1113个蛋白质图&#xff0c;区分是否为酶&#xff0c;即二分类问题。# 导包 from torch_geometric.datasets import TUDataset from torch_geometric.data import DataLoader import torch import torch.nn as nn import torch.…...

Web控件进阶交互

Web控件进阶交互 测试时常需要模拟键盘或鼠标操作&#xff0c;可以用Python的ActionChains来模拟。ActionChains是Selenium提供的一个子类&#xff0c;用于生成和执行复杂的用户交互操作&#xff0c;允许将一系列操作链接在一起&#xff0c;然后一次性执行。 from selenium im…...

基于SpringBoot的校园疫情防控系统

你好&#xff0c;我是专注于计算机科学与技术的研究者。如果你对我的工作感兴趣或有任何问题&#xff0c;欢迎随时联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架&#xff0c;B/S架构 工具&#xff1a;Eclipse&#xff0c;Mav…...

elasticsearch 查询超10000的解决方案

前言 默认情况下&#xff0c;Elasticsearch集群中每个分片的搜索结果数量限制为10000。这是为了避免潜在的性能问题。 但是我们 在实际工作过程中时常会遇到 需要深度分页&#xff0c;以及查询批量数据更新的情况 问题&#xff1a;当请求form size >10000 时&#xff0c…...

wordpress 索引插件/百度网盘私人资源链接

在DataNode的本地存储空间上&#xff0c;与存储服务密切相关的&#xff0c;比如创建数据块&#xff0c;恢复数据块&#xff0c;数据块校验等相关的代码都在org.apache.hadoop.hdfs.server.datanode.fsdataset包下(代码版本CDH5.1)首先说下org.apache.hadoop.hdfs.server.datano…...

泸西县建设小学网站/站长之家网站

推荐算法的核心在于对相似用户和相似物品的识别&#xff0c;下面手动重复下这个过程帮助理解。 数据准备&#xff1a; 初始数据&#xff1a; 1 101 5 1 102 3 1 103 2.5 2 101 2 2 102 2.5 2 103 5 2 104 2 3 101 2.5 3 104 4 3 105 4.5 3 107 …...

酷炫给公司网站欣赏/北京环球影城每日客流怎么看

1 简介 1.0 IP协议 IP(Internet Protocol) IP地址是IP协议提供的一种统一的地址格式&#xff0c;为互联网上的每一个网络和每个主机分配一个逻辑地址&#xff0c;以此来屏蔽物理地址的差异。该协议为计算机网络相互连接进行通信而设计的&#xff0c;在因特网中&#xff0c;他…...

做快递单的网站会不会是骗人的/镇江市网站

21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 &#xff1a;输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4来源&#xff1a;力扣&#xff08;…...

本网站建设中/短视频培训要多少学费

0、 【创建更新查询&#xff0c;选择经费字段—更新到设置为&#xff1a; [经费]2000 】1、 070101&#xff1a;将学生"入校时间"字段的默认值设置为下一年度的一月一日(规定&#xff1a;本年度的年号必须用函数获取)。2、 【设计视图—入校时间—默认值属性设置为&…...

做企业网站开发哪家好/新媒体seo指的是什么

转自&#xff1a;https://blog.csdn.net/qq_32786873/article/details/70173265 https://blog.csdn.net/weixin_41972401/article/details/79885749 说明 这个页面列出了一些常用的命令行启动参数以及对它们的简要说明。说明中括号里的内容为译者注。 为此页1 对于选项页 ( chr…...