书名:数以达理——量化研发管理指南
ISBN:978-7-115-60740-9
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 任甲林
责任编辑 李 瑾
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
读者服务:
微信扫码关注【异步社区】微信公众号,回复“e60740”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。
本书是作者从业多年来软件工程经验与软件过程改进咨询经验的结晶,书中对量化研发管理给出了系统论述,并通过大量的实际案例针对每种场景下的量化研发管理问题给出了解决方案。
本书先介绍了量化管理的基本概念,然后以软件研发活动顺序为主线讲述了如何识别与定义量化管理的对象、如何设计数据指示器、如何分析历史数据的分布规律、如何量化地分析因果规律、如何量化地预测未来、如何量化地控制过程、如何量化地管理过程改进,最后介绍了统计学的基本概念与假设检验在量化研发管理中的应用。
本书论述简明清晰、实例丰富,可以帮助读者快速、准确地掌握如何采用统计方法管理软件研发团队,适合公司高管、质量总监、质量管理人员、过程改进人员、敏捷教练、咨询顾问、项目经理及研发人员阅读参考。
降本增效是每一位公司负责人都在关注的大事情。大家都想通过查看数据就能洞察公司的研发现状并得出正确的结论和预测。这是我们每位管理者的美好愿望,但具体如何来操作呢?
很多公司会出台对研发团队的各种考核措施,如考核项目延期率、工期偏差、工时消耗等。但实际执行情况往往事与愿违:一方面,收集数据会增加大家的工作量,让大家苦不堪言;另外一方面,这些考核指标往往是片面和主观的,缺乏对研发管理的系统思考和逻辑思考。
业内迫切需要一本专业的图书来指导从业人员开展量化管理。任甲林老师把他多年来的咨询经验做了详尽的梳理,汇聚成《数以达理》一书。书中系统讲述了量化管理的概念、原理和方法,抽丝剥茧,由浅入深,把量化管理这件复杂的事情阐述得清清楚楚、明明白白。即使您是第一次接触统计分析和量化管理,也可以轻松上手。这本书还提供了大量的案例,实操性非常强,是每一位从业人员的宝典。
师者,传道授业解惑也。任老师出版《数以达理》,实乃业内幸事、盛事。能为任老师的这本书作序推荐,荣幸之至。
王春生
禅道软件(青岛)有限公司创始人
2023年3月11日于乐山
无论你是在一个刚刚开始使用CMMI高成熟度的组织中工作,还是在之前就已经达到成熟度等级4级或5级的组织中工作,对于大多数人来说,都面临着共同的问题和挑战:
● 我们应该从哪里开始?
● 我们的最低要求是什么?
● 达到性能目标后,我们该怎么办?
● 当试图达到高成熟度时,怎样才是“足够的”?
这些都是CMMI高成熟度组织(或渴望达到CMMI高成熟度的组织)想要得到答案的有效问题。同样重要的是,你希望得到一个清晰、实用、经济有效的改进计划,并能带来明显的商业利益。毕竟,组织追逐CMMI高成熟度的风险总是存在的,很多公司可能花费了大量的金钱和资源,却并没有改善性能。
CMMI高成熟度能够帮助公司提高组织预测性能的能力,这基于对定量数据以及组织面对的实际偏差的理解。一旦“定量”和“偏差”这两个词结合在一起使用,我们就进入了统计学方法的领域。当然,这是CMMI高成熟度的核心概念。与统计方法相关的参考文献、资料、课程、方法和工具有很多,它们对你有多大用处取决于你有效使用它们的能力。
任甲林老师是认证的高成熟度评估师和麦哲思科技的创始人,麦哲思科技是国际信息系统审计协会(ISACA)的精英合作伙伴。由任甲林老师撰写的《数以达理》易于阅读和循序渐进地理解。其囊括的统计分析内容包括:
● 量化管理基础知识;
● 识别目标的技术,这些目标可以很容易地被量化管理;
● 设计指示器的方法,以有效分析和解释统计数据;
● 分析和识别历史数据分布的技术;
● 原因和结果,以及如何使用它们来进行有效的根因分析;
● 运用量化技术预测未来;
● 量化控制性能的方法;
● 运用量化技术有效地管理与改进项目;
● 统计技术的核心概念;
● 假设检验的基本概念;
● 常用量化管理工具的说明。
本书包含关于统计分析主题的各个层次的内容,可以有效帮助使用统计数据的用户(如高级管理人员)以及相关从业者(如过程改进小组成员)理解和实践。
Pascal Rabbath(澳大利亚)
资深CMMI高成熟度主任评估师
“深入浅出”,这是我在拜读了任老师这部新作之后脑海里马上浮现出来的词语!
一直以来,“量化管理”(Quantitative Management)都是软件工程上的一个难题。简单的对比分析、类比分析、时间序列分析(我们不妨称之为“Raw Data Presentation”,原始数据展示),只能用来在事件/事务已经结束的时候进行总结。控制图、箱线图、置信区间法(我们不妨称之为“Raw Data Analysis”,原始数据分析),已经可以对事件/事务的发展进程进行抽象,探求其中的规律,然而这里包含的纷繁复杂而又佶屈聱牙的统计学原理、方法又让许多人心生畏惧。回归方程、蒙特卡洛仿真分析、冈珀茨曲线(我们不妨称之为“Data Trend Prediction”,数据趋势预测)可以通过过去预知未来,已入化境,在很多情境下几乎可以归于“天方夜谭”之类。
然而,《数以达理》一书通过通俗易通的案例、缜密细致的数据表格和切实可行的操作步骤,用“手把手”的方式教给我们如何做对量化管理、如何做好量化管理以及如何做精量化管理。我愿意将本书推荐给广大项目经理、质量保证人员以及一切笃信“产品太庞大、过程太复杂,无论如何我们也不能模模糊糊凭直觉了”(引自卡内基梅隆大学软件工程研究所创始人瓦茨·汉弗莱教授)的软件行业同人!
王小刚
独立咨询师
华为云MVP
无论对于哪个时代、何种文明或任何技术,人们始终都在试图总结已知、探索未知并希冀获得对未来的预知。软件工程领域也不例外。
几十年前,瓦茨·汉弗莱在《软件过程管理》一书中正式提出了应用统计和量化技术管理软件过程。但由于软件行业的特殊性和统计技术的专业性,对于软件项目的量化管理究竟如何开展才能化繁为简、去粗存精、行之有效,企业甚至咨询师往往莫衷一是,很多人开始怀疑量化管理是否只是质量从业者的自娱自乐。
作为咨询师,一直以来,我没有找到一本真正阐述从统计理论到项目实操再结合工具使用的参考书,而《数以达理》正是这样的一部著作。任甲林老师凭借多年的软件开发、过程管理经验,全面、扎实的统计知识,以及为大量企业深层次咨询的经历,结合丰富的案例,系统全面地讲解了如何运用统计和量化技术刻画软件过程的特点、剖析相关关系和因果规律,从而真正做到了解、描述、洞察、预测并提升软件交付质量和能力。
《数以达理》这本书深入浅出,鞭辟入里,实操性很强,无论是用于系统性学习、寻找实施的抓手,还是临时性解惑,都不失为一本可令人豁然开朗的佳作。
秦芳
资深咨询顾问
现代管理学大师彼得·德鲁克说过:没有度量,就没有管理。
很多软件研发企业在实施量化管理时遇到过各种问题:
● 没有度量数据;
● 想度量,但是不知道该度量什么;
● 有数据,但不知如何展示这些数据;
● 不知道如何挖掘这些数据的价值;
● 错用了量化方法,甚至出现常识性错误。
因此,我想结合自己15年的实践与咨询经验为大家奉献一本量化研发管理指南,系统地梳理度量需求定义、度量体系设计、度量数据采集、度量数据分析等量化管理的方方面面,希望能帮助大家在量化管理的道路上少走弯路。
度量数据的作用是了解历史、控制当下、预测未来、持续改进,本书也是按照此思路进行结构布局的。本书的前9章覆盖了量化管理的所有活动,并介绍了使用的相关技术。本书并不系统地讲解统计分析技术的原理与理论,而是讲述如何应用这一技术发现问题、分析问题、解决问题。我试图在每节都提供实例,并结合图表展示进行讲解,以方便读者阅读、加深理解。
本书中的案例均源自实际客户数据,每个案例的结论未必在全行业都适用,但希望能够引起大家的思考,从而有所启发。
本书系统地梳理了量化管理技术的具体应用方法,从“what to do ”到“how to do”,可以帮助读者快速、准确地掌握如何采用统计方法管理软件研发团队。另外,读者朋友们还可配合我的前两本书《术以载道——软件过程改进实践指南》和《以道御术——CMMI 2.0实践指南》一起阅读,学习效果会更理想。
2022年5月18日
本书旨在解决如何将量化管理技术运用到软件研发管理过程的问题,帮助管理人员在每个场景选择恰当的量化技术进行过程管理,以持续提高达成目标的概率。
本书适合研发管理人员、质量管理人员、项目管理人员进行研读,也适合作为MBA及项目管理、软件工程、应用统计学等专业的研究生教材。
本书的主要内容可以分为五部分。
第一部分 |
第二部分 |
第三部分 |
第四部分 |
第五部分 |
---|---|---|---|---|
基本概念 |
不同场景的量化管理方法 |
量化分析案例 |
本书内容总结 |
附录:应用统计学的基本概念及工具 |
第1章 |
第2章~第8章 |
第9章 |
第10章 |
附录A、附录B |
第1章讲述了量化管理与经验管理的区别、度量数据分析的层次、业务目标的分类、过程性能、性能基线与性能模型的基本概念,这是学习后续章节的基础。
第2章讲述了如何识别量化管理的对象、如何定义目标与度量元。
第3章讲述了如何采用图形化的手段展示度量数据、常用的图形有哪些、制作每种图形时的注意事项及如何设计图形展示的总体框架。
第4章讲述了如何分析历史数据的分布规律,以及采用控制图法、百分位法、箱线图法、置信区间法建立性能基线的方法与注意事项。
第5章讲述了如何分析历史数据的因果规律,以及采用相关性分析、回归分析、贝叶斯可信网络等方法建立性能模型的步骤与注意事项。
第6章讲述了基于性能基线、回归方程、蒙特卡洛模拟等预测目标达成概率的方法。
第7章讲述了采用控制图识别过程稳定性与过程能力的方法与注意事项。
第8章讲述了采用量化的方式识别改进点与改进原因、评价改进效果的方法。
第9章给出了在实践中综合运用第2章到第8章讲述的相关技术的10个案例。
第10章对本书的内容进行了归纳总结,列出了量化管理的常见问题、对策、过程与应用场景。
附录A解释了本书中使用到的一些统计学的基本概念,可以帮助缺少统计学基础知识的读者快速了解统计学的基本术语;附录B中列举了在量化管理时可能用到的工具。
对不同类型的读者建议的阅读内容及顺序如下:
读者类型 |
建议阅读内容及顺序 |
---|---|
无统计学基础知识的读者 |
先读附录A,然后再从第1章开始读 |
项目经理 |
从第1章到第7章,以及第10章 |
质量管理人员与度量分析人员 |
从第1章到第10章 |
咨询顾问与其他相关岗位 |
通读全书 |
本书在编写过程中得到了麦哲思科技咨询顾问团队的大力协助。田丽娃老师在七年前就帮我将培训讲义与录音整理成了图书的初稿并进行了文字校对;鲁新老师帮我进行了排版;徐丹霞老师曾对我的培训讲义进行了重构并对书中的技术性错误进行了斧正;郭玲老师、赵中胜老师、刘咏亭老师、罗振宇老师、张平平老师、潘烨君老师、刘文静老师、秦芳老师、张昱老师都细心地帮我修正了很多处文字表达;周伟老师、徐斌老师、葛梅老师、王敬华老师、姜红梅老师、陈正思老师、王琦老师等在公司的Wiki中分享了大量的实际案例,我有所选择地放在了书中。更要感谢我的客户们,是他们贡献了书中的所有实际案例并激发了我的一些新想法,在给他们提供咨询服务的过程中,我们碰撞出了很多思想火花。在此向各位表示感谢。
因作者视野水平的局限,本书难免会有疏漏之处,请大家不吝赐教。如果您对本书有任何疑问,可以加入“过程改进之道”的QQ群(133986886)与作者进行讨论,也可以直接发邮件到renjialin@measures.net.cn。
本书由异步社区出品,社区(https://www.epubit.com)为您提供相关资源和后续服务。
您还可以扫码二维码, 关注【异步社区】微信公众号,回复“e60740”直接获取,同时可以获得异步社区15天VIP会员卡,近千本电子书免费畅读。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“发表勘误”,输入错误信息,单击“提交勘误”按钮即可,如下图所示。本书的作者和编辑会对您提交的错误信息进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
扫描下方二维码,您将会在异步社区微信服务号中看到本书信息及相关的服务提示。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线投稿(直接访问www.epubit.com/contribute即可)。
如果您是学校、培训机构或企业用户,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、人工智能、软件测试、前端、网络技术等。
异步社区
微信服务号
经验管理依赖于管理者的经验判断来选择和实施各种措施,以达成管理目标。管理者的经验有丰富与匮乏的区别,经验也有其适用的范围,有时正确,有时又可能错误。所以,当我们生病去看中医时,都喜欢找老大夫,因为我们认为老大夫经验丰富,很容易就能对症下药,见效很快。但有时老大夫也看不准,如果不对症,多次调整药方后,仍然不见效,说明经验失效了。大夫看病有一套推理规则,称为经验法则,从A推理出B,并非百分之百成立。同一个病症,不同的大夫经验不同,得出的诊断结论可能差别较大。
量化管理是对现象用数字进行刻画,分析这些数字之间的关系,推导出隐藏在其背后的原因,采用适合的管理措施,从而推进目标的达成。这是一种具有更高确定性的推理方式,就如生病去看西医时,大夫往往先让你去做各种检查,然后对检查得到的数据进行分析,从而确定病因,再实施治疗方案。在诊断、治疗方案的确定方面虽然也有经验的差别,但是总体来讲,对同一个检查结果,不同的西医大夫诊断结论相差不大。
对于图1-1中所示的a与b两根线段,如果我们仅仅依赖经验判断,很容易就会得出b线段比a线段更长的结论,如果用尺子测量的话,我们会发现二者其实是等长的。这就像经验管理与量化管理的区别。
图1-1 等长的a、b线段
经验管理简单有效,适用于需要快速响应且管理者具有丰富经验的场景。量化管理分析成本较高,较为科学准确,适用于高水平、高质量管理需求的场景。企业及项目应该根据其当前的情况选择采用不同的管理模式,也可以将两者结合起来实施。
企业的各级管理者要从自身所管理的业务开始,根据当前常见的管理问题,确定需要量化管理的内容和方法。数据的采集与分析是目标驱动的,是由管理需求决定的。并非要对所有的过程都进行量化管理,而是有选择的,有些过程采用量化管理,有些过程也可采用经验管理。一般而言,投入越大、周期越长、复杂性越高的过程越应该倚重量化管理,反之则更适合采用经验管理,如骑单车出门购物,只需经验管理就足够了,而对于山地自行车赛的选手来说,量化配速又变成了不可缺失的技巧。
量化管理的对象有哪些呢?企业可以根据自己的业务目标,从直接影响目标实现的规模、成本 、进度、质量和效率等几个方面考虑。哪些指标能帮助诊断异常,哪些数据能帮助定位原因,一层层、一步步地深入识别,并根据企业已经积累的历史数据情况,采用一些统计学的技术和工具来分析、发现规律,建立改进目标,定义度量元,从而明确量化管理的具体对象。
很多企业在项目中积累了大量的数据,但是不知道如何分析,没有充分发挥出这些数据的作用,也没有给决策者提供应有的帮助,很是可惜。究其根源,是不了解数据分析的方法。在实践中,我总结了进行量化分析的三个层次,如图1-2所示。
图1-2 量化分析的三个层次
经验管理与量化分析的对比可以通过表1-1进行举例说明。
表1-1 经验管理与量化分析的对比举例说明
管理层次 |
举例说明 |
|
---|---|---|
经验管理 |
我觉得2021年产品A质量很好 |
|
量化分析 |
简单对比分析 |
2021年产品A 2.0版上线后的缺陷逃逸率为0.2%,比2020年产品A 1.0版上线后的缺陷逃逸率0.5%要低 |
过程稳定性分析 |
根据公司历史项目的度量数据分析,缺陷逃逸率的上下限为0到1%,项目B的缺陷逃逸率达到1.1%,超过了上限,需要对项目B进行原因分析 |
|
相关与回归分析 |
根据公司历史项目的度量数据分析,发现规律:缺陷逃逸率= f (测试投入工作量比重,评审投入工作量比重,开发人员的技术经验),如果要降低缺陷逃逸率,需要加大测试与评审投入的工作量 |
简单对比分析一般不使用复杂的统计学技术,仅仅通过数据间的横向或纵向对比得到分析结论。横向对比分析是对同一时刻、不同对象的数据进行对比分析。例如,2021年9月中国电子技术标准化研究院在《中国软件行业基准数据》报告中公布的各类工程活动的工作量分布基准数据,即为横向对比的典型案例,如图1-3所示。
纵向对比分析即对同一对象、不同时刻的数据进行对比分析。例如,某项目采集了每次迭代的缺陷清除率并绘制了折线图,如图1-4所示。
简单对比分析时,通常要对数据进行整理(如排序、分类等),然后绘制成各种图形,通过这些直观的图形得出结论。常用的图形有饼图、条形图、直方图、折线图、散点图、帕累托图、箱线图、雷达图等。不同类型的图形适用的场景不同,因此需要选择合适的图形帮助分析。在实践中最常见的错误就是选择的图形无法让读者直观地得出结论。本书的第3章对如何设计展示数据的指示器进行了详细的介绍。
图1-3 工作量分布基准数据
图1-4 某项目每次迭代缺陷清除率的时间序列图
简单对比分析很大程度上依赖于分析者的分析经验,分析者应该对数据比较敏感,善于从不同的视角发现问题。
过程稳定性分析是基于小概率事件实际不可能原理,识别出过程执行结果的异常点或异常趋势,从而发现由特殊原因造成的过程偏差。最常见的过程稳定性分析手段就是控制图。例如,某公司收集了17次迭代的返工工作量占比数据,并绘制了单值控制图,如图1-5所示。从图中我们可以发现,第15次的返工工作量占比异常。
图1-5 某项目每次迭代返工工作量占比单值控制图
将控制图应用于软件领域时,常见的问题如下:
● 软件开发过程的数据采样点太少;
● 不同项目组的工作是否真正具有可比性,这一点并不好判断;
● 选择了错误的控制图可能会造成误判。
本书的第7章对统计过程控制进行了详细的介绍。
相关性分析用于分析两个变量之间是否同步发生有规律的变化。例如,随着人的身高增加,体重也增加了,身高与体重之间就具有相关关系。回归分析是找到自变量对因变量的量化影响关系。例如,某公司积累了10个项目的功能点(CFP)个数与总工作量,对这两个变量做相关性分析和回归分析后,得到图1-6所示的回归方程:工作量= -10.915+0.16923×功能点个数。
图1-6 工作量与功能点个数之间的回归方程
以上三种不同层次的分析代表了量化管理的不同成熟度。在量化管理的初级阶段,一般停留在简单对比分析的水平;而到了量化管理的高级阶段,则需要采用统计技术进行过程稳定性分析、相关性和回归分析。
本书的第5章对相关性与回归分析进行了详细的介绍。
量化管理聚焦于组织与项目的目标。组织有宏观的业务目标,项目有微观的管理目标。何谓业务目标?业务目标是高层管理者基于组织的发展战略定义的整体目标,用于确保组织能够永续经营、持续成功。业务目标的达成需要组织中多个过程的协同。例如,产品交付速度、产品质量影响盈利,于是我们可以定义业务目标如下:
● 新产品开发周期不超过6个月;
● 交付后缺陷密度不超过1个缺陷/千行代码。
业务目标是分层级的,有公司级的业务目标,有研发部门的业务目标,对于开发团队而言,更应该关注研发部门的业务目标,这是通过研发部门的努力可以改变的目标。研发部门的业务目标派生自公司的业务目标,如图1-7所示。
图1-7 由公司的业务目标派生出研发部门的业务目标
在定义研发部门的业务目标时,关键要思考如何度量研发部门的业务价值。常见的研发部门的业务价值度量元如图1-8所示。度量元即度量指标,是对度量对象的某个属性进行的量化刻画,如项目工作量、规模、交付周期、缺陷密度、生产率等。
图1-8中,灰色的分支是必须满足的,黑色的分支是希望越来越好的。
图1-8 研发部门的业务价值度量元
前面所说的业务目标是企业的客户、高层经理所感知的,由外向内看开发和服务过程。业务目标是高层的宏观目标,反映的是外部需求,关注的是全过程,回答了哪些因素帮助或影响了盈利。
质量与性能目标是针对产品或服务质量和过程性能的量化目标,是站在组织内部对业务目标在实现层次的细化和分解,是基于生产和服务过程的解剖而定义的可量化目标。质量与性能目标反映的是业务目标的影响因子或内部分解,可以不覆盖产品或服务的全过程,只关注局部过程。产品或服务质量的度量元包括交付产品的缺陷密度、缺陷逃逸率等;过程性能的度量元包括开发效率、开发速度等。
例如,针对我们在1.3节举例的业务目标“新产品开发周期不超过6个月”,分析当前开发环节发现,影响新产品开发周期的有开发效率、返工工作量等因子,于是可以定义质量与性能目标如下:
● 开发效率要高于2个功能点/人天;
● 返工工作量低于10%。
从以上描述和实例可以看出,要基于业务目标制定质量与性能目标。或者说,质量与性能目标是基于业务目标分解得到的,要有助于实现业务目标。
业务目标、质量与性能目标的对比如表1-2所示。
表1-2 业务目标、质量与性能目标的对比
业务目标 |
质量与性能目标 |
|
---|---|---|
视角 |
组织外部 |
组织内部 |
范围 |
整体 |
局部 |
参与的过程 |
多个过程协同完成,可能包含市场、开发、服务等多领域的协同 |
有可能是单一过程,仅仅侧重于整个产品生命周期的某个领域 |
关注者 |
高层经理 |
中层经理,一线管理者 |
层次 |
要求层面 |
执行层面 |
代表的对象 |
业务性能 |
过程性能 |
过程性能是对遵循某个过程所达到的实际结果的度量。
过程性能通常包含过程效率和过程质量。对评审过程而言,过程效率可以是每小时评审文档的页数、每小时评审的代码行数等;过程质量可以是每人时发现的缺陷个数、每页发现的缺陷个数等。对于开发过程而言,过程效率可以是每小时开发的代码行数;过程质量可以是交付后每功能点发现的缺陷个数、交付后每千行代码发现的缺陷个数等。有些度量元可能既能代表过程质量,也能代表产品质量,如交付后每千行代码发现的缺陷个数。
理解过程性能的概念要注意以下几点:
● 过程性能是量化的描述,不是定性的描述;
● 过程性能刻画的是某个过程的执行结果;
● 过程性能是实际发生的历史数据,而不是未来尚未发生的预测数据或估算值;
● 过程性能是本组织的度量数据,既不是业内的标杆数据,也不是其他组织的度量数据。
性能基线是一组历史数据的分布规律,体现了历史数据的居中趋势与分散区间。性能基线并非软件领域所独有。在医学领域里有参考值的说法,当我们去医院做各种化验时,每个指标都有其合理的区间,这个区间即为参考值。某个指标的化验结果在参考值范围内则视为正常值,表示得病的概率低;在参考值范围之外则视为异常值,表示得病的概率高。
参考值是如何得来的呢?首先,随机抽取一定量的样本,然后,将每个指标的测量数据按从大到小的顺序排序,排除最小的和最大的部分数据,剩下的数据的最大与最小值即为此项指标的参考值。
对于软件研发项目,可以根据本组织近年来的历史数据建立各类项目的组织级性能基线,先采用组织级性能基线管理项目,当本项目的数据积累到一定程度后,再建立更符合本项目实际情况的性能基线。
性能基线的描述建议包含如下信息。
● 度量元名称:如系统测试发现的缺陷密度。
● 计量单位:如个缺陷/千行代码。
● 数据分布的形状:分布的类型,如正态分布、二项分布、泊松分布等。
● 数据的集中趋势(位置):如中位数、均值、众数等。
● 数据的分散趋势:即离散程度,如标准差、极差、四分位差等。
● 样本点的个数:它决定了基线的可信程度,样本点越多,越值得信任,一般以25个样本点为临界值。
● 适用的范围:适合于什么类型的项目或什么类型的过程。
● 基线建立的方法:箱线图、控制图、百分位法、置信区间法及上下限的计算公式等。
● 样本的时间范围:从哪年哪月开始,到哪年哪月结束。
详细描述了上述信息,我们才可能正确地使用该基线。某公司2021年的性能基线列表如表1-3所示。
表1-3 某公司2021年的性能基线列表
序 号 |
度量元 |
分布 类型 |
性能基线建立方法 |
居中趋势 |
离散程度 |
适用性 |
|||||
---|---|---|---|---|---|---|---|---|---|---|---|
性能基线 名称 |
计量 单位 |
建立 方法 |
计算公式 |
均值或 中位数 |
规格下限 |
规格上限 |
样本 量 |
适用 范围 |
时间 区间 |
||
1 |
上线 及时率 |
% |
非正态分布 |
置信区间 |
95%置信区间 |
42.42 |
25.48 |
60.78 |
33 |
大项目 |
2020 —2021年 |
2 |
系统测 试缺陷 逃逸率 |
% |
正态 分布 |
控制图 |
µ±2σ |
22.84 |
0.50 |
45.20 |
30 |
大项目 |
2020 —2021年 |
3 |
需求评 审缺陷率 |
个缺陷/页 |
非正态分布 |
箱线图 |
规格上限:Q3+2(Q3-Q2) 规格下限:Q1-2(Q2-Q1) |
0.06 |
0.00 |
0.80 |
50 |
所有 项目 |
2020 —2021年 |
4 |
需求变 更率 |
% |
非正态分布 |
箱线图 |
规格上限:Q3+2(Q3-Q2) 规格下限:Q1-2(Q2-Q1) |
11.60 |
0.00 |
51.80 |
42 |
所有 项目 |
2020 —2021年 |
5 |
代码评审缺陷率 |
个缺陷/千行代码 |
正态 分布 |
控制图 |
µ±2σ |
3.10 |
0.00 |
6.58 |
80 |
所有 项目 |
2020 —2021年 |
6 |
...... |
|
|
|
|
|
|
|
|
|
|
性能基线的作用是了解、预测、控制、评价和改进过程,如表1-4所示。
表1-4 性能基线的作用
性能基线的作用 |
示例 |
|
---|---|---|
了解 |
了解组织或项目的性能水平 |
了解整个公司的质量水平,基于历史数据统计分析发现99%的项目上线后缺陷逃逸率为(1%,2%) |
预测 |
预测组织级或项目级目标的达成概率。将目标区间与性能基线的区间对比,可以计算出达成目标的概率 |
历史的性能基线为(0.5,2),某项目定义的目标为大于1,则有多大概率能实现这个目标? |
控制 |
当存在异常点或异常趋势时,采取行动,消除造成异常的原因 |
历史的性能基线为(0.5,2),某次过程执行的结果为2.2,超出了性能基线的规格上限,为异常点,需要分析原因 |
评价 |
可以比较不同类型项目的性能基线或改进前后性能基线的变化 |
在采取质量改进措施之前,产品的缺陷逃逸率为(1%,4%),改进后产品的缺陷逃逸率为(0.5%,3%),则改进措施有效 |
改进 |
比较不同类型项目的过程性能基线的差别,识别改进点。 当过程性能基线的离散系数太大时,要识别根本原因,进行系统改进 |
A事业部的缺陷逃逸率为(1%,5%),B事业部的缺陷逃逸率为(0.1%,1%),为什么两个部门差别如此之大? |
特别提醒
在实践中,有些组织直接拿业内的标杆数据作为本组织的性能基线,这是不可取的。因为业内的标杆数据是其他组织相关数据的分布规律,而不是本组织的过程性能的体现,无法正确地指导本组织的改进。
性能模型是对一个或多个过程的量化属性之间关系的描述,是基于历史数据建立的,用以预测将来的过程输出。我们可以理解为,性能模型是对历史过程性能的因果规律的量化描述,“因”是过程的输入或属性,“果”是过程的输出。即
Y=f(x1,x2,x3,…)
其中:Y是过程的输出,是过程的结果;x是过程的输入,是过程的属性,当然,也可能是其他上游过程的输出或本过程的其他输出。
例如,我们构建了一个性能模型:
项目最终的进度延期=f (需求成熟度,人员成熟度,需求的变化率)
其中,“需求成熟度”是开发过程的输入;“人员成熟度”是过程的属性;“需求的变化率”在项目初期不是已知的,是过程的另一个输出。
性能模型通常具备以下五个基本特征。
(1)量化:性能模型是基于历史统计数据推导出的模型,用于量化的预测与控制,不是定性的模型。
(2)可预测性:性能模型中的自变量是先发生的或已知的,可以通过自变量预测或控制因变量。有的自变量是可控变量,即在x的取值范围内,可以人为地控制x的取值,从而控制Y的取值。由于可控变量的存在,项目可以在开发初期进行各种假定情况的分析,即假设可控变量的不同取值,通过性能模型来预测各种假设情况下项目会有怎样的结果,确定最为合理的可控变量取值,从而提高项目估算和计划的合理性。如果所有自变量都是不可控制的变量,我们把这类模型称为预测模型。
(3)不确定性:性能模型建立的关系不是确定的函数关系,而是一种不确定的统计关系或概率关系,即性能模型的输出不是一个单点值,而是一个区间或是一个概率分布。如果我们通过回归分析方法建立了回归方程:Y=f(x1,x2,…),当代入xi的取值得到Y值时,Y值只是代表了此时所有可能取值的平均值,我们还需要计算其预测区间。
(4)适用性:性能模型是基于本组织的历史数据分析得到的,适用于本组织内的项目,而不是业内的标杆组织或其他组织的模型。如果要使用业内标杆组织的性能模型,必须在本组织内进行验证与修订。
(5)目标相关性:性能模型中的Y是组织的业务目标、质量与性能目标。Y可以是项目的整体目标或全生命周期目标,也可以是项目的局部目标或中间过程目标。
图1-9是麦哲思科技在咨询过程中经常遇到的性能模型。
图1-9 常见的性能模型
根据自变量x与因变量Y所在的过程可以将性能模型分类如下。
(1)投入-产出型:根据某个过程的输入与属性(x)预测本过程的输出(Y)。
例如:
测试发现缺陷个数 = f (测试用例的个数,系统规模,测试投入工作量,测试人员的水平)
在该模型中所有的x都是测试过程的输入或属性。
(2)产出-产出型:根据上游过程的输出与属性(x)预测下游过程的输出(Y),是对过程之间交互影响关系的预测。
例如:
测试发现缺陷数 = f (需求评审发现缺陷数,设计评审发现缺陷数,代码走查发现缺陷数,单元测试发现缺陷数,集成测试发现缺陷数)
在该模型中,所有的x都是测试过程的上游过程的输出。
(3)混合型:根据某个过程的输入、属性和上游过程的输出预测本过程的输出。
例如:
测试发现缺陷数 = f (代码走查发现缺陷数,单元测试发现缺陷数,集成测试发现缺陷数,测试投入工作量,测试人员的水平)
在该模型中,代码走查发现缺陷数、单元测试发现缺陷数、集成测试发现缺陷数都是测试过程的上游过程的输出;而测试投入工作量、测试人员的水平则是测试过程的输入与属性。
客观世界的实际系统是极其复杂的,建立模型绝不能试图将所有的因素和属性都包括进去,否则,模型不但不能解决实际问题,反而把问题复杂化了。
性能模型用于刻画历史与当前项目的过程性能,以帮助加深对历史的理解,估算、分析、预测组织标准过程的过程性能。其用途归纳整理如表1-5所示。
表1-5 性能模型的用途
|
性能模型的用途 |
示例 |
---|---|---|
了解 |
了解组织级或某个项目组内部的因果规律 |
在本公司中,到底哪些因素影响了项目的交付质量?这些因素与交付质量的量化关系是什么? |
预测 |
预测目标的达成概率。根据模型计算出目标的预测区间,将预测区间与目标区间对比,得到达成目标的概率 |
当测试投入的工作量占比达到30%以上时,项目交付的缺陷逃逸率在什么范围?能有多大的概率实现确定的质量目标? |
控制 |
事先:通过模型进行what-if分析,通过设置x的值,来控制Y的值 事后:当实际值超出预测区间时,为异常点,要采取行动,消除异常因子 |
当测试投入的工作量占比为30%时,预测达成质量目标的概率比较低,若加大投入到35%,是否就可达成质量目标? 当项目结束后,发现实际的缺陷逃逸率高出了预测区间的规格上限,则需要对本项目执行根因分析 |
评价 |
通过比较不同类型项目的模型可以评价各类项目性能的差异;也可以对比改进前后模型的变化,以评价改进的效果 |
采用A方法开发,根据历史数据得到回归方程:工作量=10+2×规模。采用B方法开发,根据历史数据得到回归方程:工作量=20+1.5×规模。 则当规模不超过20时,采用A方法开发投入更少;当规模超过20时,采用B方法开发投入更少 |
改进 |
通过比较模型中各参数的大小,识别改进点 |
对于一元线性方程Y=ax+b,如果斜率a与截距b的差距很大,调整x对Y的影响就会非常有限,有可能就需要改进过程了。 再如,当方程的预测效果不好,R-Sq(决定系数,值越接近1预测效果越好)比较小时,也要识别改进点或寻找其他影响因子 |
读者服务:
微信扫码关注【异步社区】微信公众号,回复“e60740”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。