基于缺陷逃逸率的过程性能模型研究与实践

2016-12-22 21:32王丹李鹤群
软件导刊 2016年11期

王丹+李鹤群

摘 要:随着CMMI过程能力成熟度模型在软件开发行业的普及,大多数通过CMMI3级的企业已经开始探索建立适用的过程性能模型,以期达到预测项目目标、持续优化开发过程的目的。然而,CMMI模型中并没有给出具体的建模步骤。结合CMMI4、5级实践经验,以缺陷逃逸率预测模型为例,介绍了如何高效建立过程性能模型,以及如何有效运用该模型的方法。

关键词关键词:CMMI过程性能模型; PPM; 缺陷逃逸率

DOIDOI:10.11907/rjdk.162205

中图分类号:TP302

文献标识码:A 文章编号文章编号:16727800(2016)011001503

0 引言

过程性能模型(Process Performance Model, PPM)是CMMI4级过程域“组织性能管理”中的一个术语,主要是对软件开发过程中一项或多项过程或工作产品的可度量属性的相互关系进行描述。它根据选定的过程或子过程,通过分析组织内长期积累的相关历史数据进行开发[1]。过程性能模型被用来预测选定过程的性能,比如项目进度、成本及质量状态等,从而为项目计划及监控提供调整或决策依据。

从QCD角度划分,一般以缺陷密度、生产效率、成本及进度偏差、顾客满意度为监控和预测目标来建立过程性能模型。最好的过程性能模型就是利用企业自己长期积累的历史数据回归出来的模型。笔者结合在软件企业的CMMI4及CMMI5级高成熟度组织的改进实践,将重点探讨如何建立以缺陷逃逸率为监控和预测目标的质量过程性能模型。

1 缺陷逃逸率

缺陷逃逸率指软件产品发布后发现的缺陷数量与该软件产品在整个生命周期发现的所有缺陷数量之比。缺陷逃逸率通常用来衡量软件开发团队及测试团队对软件质量控制的水平。在很多软件外包行业,客户通常用缺陷逃逸率评价软件开发能力。

其中i为缺陷注入阶段,根据项目生命周期阶段定义不同,可分为需求开发、概要设计、详细设计、编码阶段。j为缺陷移除阶段,缺陷移除的手段主要有评审及测试,所以此处j可分为需求评审、概要设计评审、详细设计评审、代码评审、单元测试、集成测试以及系统测试等几个阶段。如果某一个阶段不能100%移除缺陷,则必定有部分缺陷漏出到下一阶段,最终漏出到客户的缺陷数量就是缺陷逃逸数量。

2 缺陷逃逸率预测

实际开发中,项目结束前难以得到缺陷注入的整体数据。但是对于高成熟度组织来说,基于大量的历史数据,不难得到缺陷注入能力,从而基于缺陷注入能力以及缺陷注入目标数据得到缺陷逃逸率公式,通过合并移除缺陷的开发阶段以达到简化输入的目的。公式变换如下:

DER=DIRB*(1-DERInDesign-DERInCoding-DERInTest)(2)

式(2)中,DIRB为根据历史数据识别的缺陷注入能力(基线),DERInDesign为设计阶段的缺陷移除率,DERInCoding为代码阶段的缺陷移除率,DERInTest为测试阶段的移除率。由于设计阶段及代码阶段的缺陷移除主要依赖于评审过程的执行,因此上述公式还可以继续简化为:DER=DIR*(1-DERByReview-DERInTest) (3) DERByReview为通过评审发现的缺陷移除率。

综上分析结果,只要建立评审及测试子过程的性能模型,即可预测出整体缺陷逃逸率。

3 过程性能模型建立

3.1 量化目标识别

将企业的商业目标逐层分解到可量化的质量及过程性能目标,是建立过程性能模型的第一步。缺陷逃逸率为客户考核企业的一个指标,因此将该模型对应的商业目标描述为“降低缺陷逃逸率,提高客户满意度”。经过层层分解,得到相应的质量与过程性能量化目标,再根据选定的质量及过程性能目标,选择对应的子过程。可以是一个子过程,也可以是多个子过程。建立的模型可以直接或间接预测相关结果,或者预测在开发生命周期中处于更下游的结果。表2列出了基于缺陷逃逸率的量化目标及子过程描述。

3.2 模型因子识别

每个子过程与多个因子相关,在建立模型之前,需要识别这些因子。因子分为可控因子和不可控因子两大类。可控因子是模型中需要识别的关键要素,通过调整可控因子可在一定程度上控制过程性能,从而指导项目开发和过程改善。不可控因子则代表过程实施的环境要素,是过程实施的制约条件,对过程性能的预测准确性也起到一定的作用[3]。分析因子需要重点关注导致结果的根本原因及和结果相互关联的要素,通常使用鱼骨图方法或头脑风暴方法进行分析。针对设计评审子过程、编码评审子过程,经过分析得出可控因子为设计评审投入比例、设计评审检出效率、编码评审投入比例、编码评审检出效率;针对测试子过程,识别可控因子为测试实施投入比例、测试设计人员经验。表2的最后一列定义了该模型因子。

3.3 历史数据收集,数据质量评估

识别了模型的可控因子后,就要收集相关的历史数据,进行数据初步分析。分析方法包括因子相关性分析、正态分布等。实际操作中,往往在建立PPB(过程性能基线)时,就已经完成了数据收集及质量评估工作。最方便的评估数据质量方法是观察法,通过对数据分布情况的观察,找出明显的异常点,分析异常点原因。图1为19个设计评审检出效率分布图,其中黑色圈出来的几个点与其它点相比差异较大,经过与相关执行者讨论分析,发现这3个点由于没有经过自查活动,导致评审的问题相对较多。因此,将这3个点提出后,数据大致在相同的范围内。依次类推,可以完成所有数据的评估,确保数据之间不会偏差过大。

3.4 历史数据回归分析

对每个模型的因子及预测目标进行回归分析,得出自变量X与因变量Y之间的部分相关性[4]。回归方程拟合结果需要满足如下条件才能认定其有效。

(1)回归方程的显著性检验。需要从总体上判定回归方程是否有效,即R2和调整后的R2越接近,说明模型拟合得越好。两者的值越接近1,代表模型拟合越好。

(2)回归系数的显著性检验。当回归方程效果显著时,还需要判定回归方程中哪些自变量显著,同时将效果不显著的自变量删除,并优化模型。回归系数的显著性主要通过对应因子的P值来判断,如果小于0.05就说明自变量是显著因子[5]。

图2和图3为评审移除百分比模型以及测试移除百分比的回归结果。

从回归结果可以看出,R2及调整后的R2基本有效,各因子的P值也证明了其显著性。回归方法如下:

评审移除百分比=设计评审工作量/总工作量*5.621 46+ 编码评审工作量/总工作量*6.275 48 + 设计评审检出效率*0.086 8+编码评审检出效率*0.313 14。

从这个模型的回归结果可以看出,R2及调整后的R2基本有效,但因子测试实施投入比例0.31,不满足0.05的条件,不是显著因子。在数据量有限的情况下,继续分析该子过程的因子是否还包含其它因子。如果分析后的结果没有改变,那么可以暂时认可该回归结果,待数据量积累到一定程度,再对模型因子作进一步调整、分析及再回归。这里回归方程为:

测试移除百分比=测试实施投入比例*0.283 96 - 评审移除百分比*0.377 + 测试设计经验*0.112 76

4 过程性能模型应用

4.1 应用场景

前面论述了模型在预测缺陷逃逸率方面的作用,然而在实际项目中,过程性能模型应用是贯穿项目始终的。仍然以该模型为例,应用场景如图4所示。

(1) 项目计划阶段。 根据计划,设计评审投入工时、编码评审投入工时、测试投入工时与总工时的比例

结果,使用模型预测缺陷逃逸率目标,如果低于预期目标(例如,70%),则调整上述计划结果,提高目标达成可能性。

(2) 设计阶段。 设计评审结束后,根据实际的设计评审投入工时与总工时比例结果,设计评审检出效率再次代入模型,预测目标达成可能性,如果低于预期,可以通过组织二次评审或者提高编码计划投入工时、提高后续的测试计划投入工时,以此提高目标达成可能性。

(3) 编码阶段。与设计阶段思路一致,调整后续测试阶段计划。

(4) 测试阶段。作为缺陷检出的最后阶段,将所有因子相关的实际数据代入到模型中。如果仍然低于预期目标,则考虑增加测试轮次降低缺陷逃逸率;如果没有更好的手段,则降低客户预期,提前做好应急预案。

4.2 实现方式

过程性能模型建立以后,为了更直观地展示和预测,通过VBA将上述回归模型嵌入到Excel表中,形成可视化的过程性能预测模型。

5 结语

在CMMI模型中,仅对过程性能模型作了简要介绍,并未给出过程性能模型建立指南。笔者通过总结工作经验,详细介绍了如何快速、有效地建立实用且适用的过程性能模型,以及如何应用模型指导项目开发的方法,希望能够为高成熟度组织建立有效的过程性能模型提供帮助。

参考文献:

[1] CMMI PRODUCT TEAM.CMU/SEI2010TR0332010[S].CMMI for Development, Version 1.3.

[2] ROBERT W STODDARD, DENNIS R GOLDENSON.Approaches to process performance modeling:a summary from the SEI series of workshops on CMMI high maturity measurement and analysis[R].America: SEI Administrative Agent, 2010.

[3] 任甲林. 术以载道软件过程改进实践指南[M].北京:人民邮电出版社, 2014:391396.

[4] 王慧,周伯生,罗文劼.基于CMMI的软件过程性能模型[J].计算机工程与设计, 2009(1):109112.

[5] 徐俊,李军.软件研发过程性能基线和模型建立方法及应用分析[J].现代计算机,2013(21):1418.

(责任编辑:杜能钢)