基于PDCA模型与Rayleigh模型的软件质量管理
2013-10-10白凯丽宁静峰
白凯丽, 宁静峰
(长春工业大学 计算机科学与工程学院,吉林 长春 130012)
0 引 言
由于经济全球化进程不断推进,知识经济时代已经到来。在增加产品的国际竞争力方面,产品质量作为经济发展战略问题变得越来越重要。美国质量管理学家约瑟夫· 朱兰博士指出:“21世纪是质量世纪,质量是和平占有市场最有效的武器”。软件产业已经走向成熟,同时,软件质量也正被视为软件企业的生命。软件质量管理在软件组织内全面开展,强烈的质量意识正慢慢根植于软件技术和管理人员的内心深处,直至整个软件组织质量文化的形成。文中结合采用可靠性模型(Rayleigh模型)和质量改进模型(PDCA模型),在利用已有数据的基础上,对缺陷进行分析、对软件质量进行监控和评估、对产品是否可以发布给出判断依据。
1 Rayleigh模型
Rayleigh模型可以预测软件开发全生命周期的缺陷分布,是一种常用的可靠性模型[1]。Rayleigh模型是Weibull分布家族的一个成员。Weibull[2]分布在各种工程领域中用于可靠性分析已有几十年,它是3个著名的极端值分布之一。它的标志性特征之一是其概率的尾部逐渐地趋近于零,但达不到零。1982年,Trachtenberg[3]观测一组软件项目的每个月缺陷数据,发现这些项目的综合缺陷模式符合Rayleigh曲线。1982年,IBM联邦系统部的Gaffney[4]报告,在IBM使用的6个公共缺陷检测阶段所发现的缺陷,随着这些阶段在软件生命周期时间的分布符合Rayleigh曲线。其累加分布函数(Cumula Distribution Function,CDF)和概率密度函数(Probability Density Function,PDF)为:
式中:m——形式参数;
c——尺度参数;
t——时间。
应用于软件时,PDF经常是指随时间变化的缺陷密度(率)或缺陷出现模式(有缺陷数据),而CDF则指累加缺陷出现模式。
在Weibull家族中,在软件可靠性中已经应用的两个模型是形状参数m=1和m=2的模型。Rayleigh模型是Weibull分布m=2时的特殊情况。其中CDF和PDF为:
Rayleigh的PDF先上升到峰值,然后以减速率下降。参数c是tm的函数,tm是曲线到达峰值的时间。f(t)对t取导数,令其为零,解方程组可得出
估计出tm之后,就可以确定整条曲线的形状了。曲线以下到tm部分的面积是总面积的39.35%。
上述公式表示标准分布;特别是在PDF曲线下的总面积为1。在实际应用中,公式乘以常数K(K是总缺陷数或总累加缺陷率)。如果还在公式中进行代换
就得到下述公式。为了从一个数据点集合确定模型,K和tm是需要进行估计的参数
Rayleigh模型涉及到了与前期项目相关的早期缺陷排除和缺陷预防等内容。在Rayleigh模型基础上,假如降低错误的注入率,那么Rayleigh曲线下的面积就变小,导致预测现场缺陷率较小,如图1所示。
图1 Rayleigh模型图I
同样,如果在开发过程的前期排除的缺陷较多,那么在后期测试和维护阶段的缺陷率就会较低,如图2所示。
图2 Rayleigh模型图Ⅱ
从两个方向进行质量改进的策略如图3所示。
图3 开发质量改进的方向图
从图3可以看出,当前的质量改进目标就是尽可能地降低曲线高度,同时,将Rayleigh曲线的波峰向左推移。其中I0:高层设计评审;I1:底层设计评审;I2:代码审查;UT:单元测试;CT:部件测试;ST:系统测试。
2 PDCA模型分析
PDCA是英文单词Plan(计划),Do(执行),Check(检查),Action(行动)的首字母的缩写,PDCA也叫戴明(Deming)环,是美国质量管理专家戴明在日本推广实践的经典质量管理模型,如图4所示。
图4 PDCA循环过程
Deming环被SEI用作使用CMM进行持续过程改进的模型,称为IDEAL(Initiating,Diagnosing,Leveraging)[5]。PDCA的方法可适用于所有过程。而一切产品都是过程的结果,产品的质量直接与用于建立产品的过程有关[6]。完善后的PDCA理论在企业的质量管理中得到了广泛的应用。同时,PDCA也成为使任何一项活动有效进行的一种合乎逻辑的工作程序[7]。
2.1 计划
包括方针和目标的确定以及活动过程的制定。计划要求做到5W1H,即要做什么(What),为什么要做(Why),由谁(Who)在什么时间(When)与地点(Where)去做以及如何做(How)的问题[8],发现问题,找出原因和主要原因,制定质量方针、质量目标、质量计划书和管理原则等,如管理原则有“过程方法”、“管理的系统方法”和“持续改进”等。
2.2 执行
第二阶段执行,不是简单的执行。执行是计划的履行和实践,主要按计划如实地去做、落实具体对策,并实施过程的监控,使活动按预期设想前进,最终达到计划和设定的目标。实施对策应包括执行、控制和调整3部分内容。
2.3 检查
检查主要是对执行后效果的评估并伴随着实施过程自始至终,不间断收集数据、信息获取过程,通过数据分析、度量结果完成检查。检查在过程实施之初应该经过充分的策划,为效果的评估做好准备。
2.4 行动
重点在于检查完结果要采取措施,即总结成功的经验,吸取失败的教训,实施标准化,以后依据标准执行。行动是PDCA循环的升华过程,没有行动就不可能有提高。
PDCA循环作为质量管理的基本方法,不仅适用于整个软件工程,也适应于整个软件企业和软件企业内的各个部门以及个人。各个部门根据软件企业的方针目标,都有自己的PDCA循环,层层循环,形成大环套小环,小环里面又套更小的环。大环是小环的母体和依据,小环是大环的分解和保证。PDCA循环就像爬楼梯一样,一个循环运转结束,生产的质量就会提高一步,然后再制定下一个循环,再运转、再提高,不断前进,不断提高。PDCA循环上升示意图如图5所示。
图5 PDCA循环上升示意图
不断学习是持续改进的基础[9]。
3 缺陷移除有效性指标
缺陷移除有效性的操作式定义。定义需要缺陷源和在哪个阶段找到和移除缺陷这两个方面的所有缺陷数据。
令j=1,2,…,k,记作软件生命周期中的阶段。
令i=1,2,…,k,记作与包括维护阶段(阶段k)在内的不同软件生命周期的审查或测试种类。那么矩阵下图就是缺陷源/发现处矩阵。在这个矩阵中,只有Nij单元(其中i≥j,在左下角三角形的单元)有数据。在对角线上的单元(Nij,其中i=j)里的数据表示的是同一阶段注入并检测到的缺陷数;对角线下的单元中的数据表示的是开发早期时候注入的,但是在后期才被检测到的缺陷数。由于开发早期不能检测到开发后期注入的缺陷,所以从对角线以上的单元都为空。矩阵的边界行(Ni.)表示在此阶段移除的缺陷数,而边界列(N.j)则表示以此阶段为源的缺陷数,见表1。
表1 缺陷源/发现处矩阵表
阶段缺陷排除有效性(PDREi)可以是阶段审查有效性[IE(i)]或者是阶段测试有效性[TE(i)]:
阶段缺陷遏制有效性:
整体测试有效性:
式中:I+1,I+2,…,k-1——测试阶段。
开发过程中的整体缺陷排除有效性:
4 PDCA与Rayleigh在解决软件质量管理中的应用
软件质量管理的目标是尽可能地降低Rayleigh曲线的同时将波峰向左推移,这就将问题转化成降低每一阶段的缺陷注入数量,提高缺陷阶段排除有效性两个指标。采用PDCA模型来解决降低这两个指标方面的问题。
利用刚刚结束的A项目作为历史数据,项目A的规模为20 000行源代码;同时在新启用的项目B(规模为21 000行源代码)中使用Rayleigh模型和PDCA模型来做项目管理。因为A项目和B项目从规模上基本相同,用COCOMO中等模型估算的工作量基本相等。所以,首先对项目A缺陷进行总结,见表2。
表2 A项目缺陷源及发现处实例数据表
根据此表,计算出各个阶段的缺陷审查有效性:
那么在这个数据的基础上开发B项目时,使用的是原有的开发团队;开发B项目之前使用PDCA模型对A项目做了相关的总结,同时将总结的经验用到项目B中,并在B项目开始阶段就使用PDCA模型、瑞利模型来做项目质量管理,减少缺陷数。
从表2可以看出,各个阶段注入的缺陷比较多,同时,在高层设计和底层设计、编码等阶段缺陷审查有效性比较低,经过原因查找,发现高层设计中缺陷产生的原因有使用错误的参数,无效或不正确的屏幕流,评审包中通过部件的高层流丢失或不正确,模块间接口没有输入,公共数据结构的不正确使用,代码未实现低层设计,变量初始化不正确等缺陷注入原因;从表2还可以看出,在单元测试、部件测试和系统测试阶段均引入了较多的缺陷,这说明开发人员在修改缺陷时的质量有问题。
针对以上这些导致缺陷注入的因素,该项目的评审人员进行了总结,做了预防上述问题的计划。请在设计方面有经验的专家给评审人员做培训,严格评审流程;建立了缺陷库,分析这些缺陷产生的原因,总结经验,建立检查表,并利用检查表的形式及交叉评审方法逐项对设计的内容进行检查,以防类似的错误再次发生;开发人员在修改缺陷之前,先走读缺陷库,同时加强开发人员在修改缺陷后的自测工作,让已经发生过的缺陷不要再次发生。按照计划执行完B项目后得出数据见表3。
表3 B项目缺陷源及发现处实例数据表
从表3可以看出,整体缺陷数下降了将近三分之一,特别是在高层设计和编码阶段的缺陷数明显减少,在B项目中缺陷发现的峰值是在底层设计审查阶段,由于缺陷消除率明显增加,峰值也发生了变化,在峰值降低的同时由编码阶段转到底层设计上。现场缺陷数也比A项目中的要低。达到了软件质量管理的目的。
5 结 语
作为可靠性Rayleigh模型,应用于整个软件开发周期的缺陷分析,它的遗留缺陷定量估计主要依赖于前期数据的准确性;在跨阶段测试活动的定性分析中,不能够进行单独阶段的测试评估。它的意义在于强调了缺陷预防和早期缺陷消除两个原则。它们是开发质量改进策略的主要方向。基于PDCA循环的软件质量管理过程控制和改进模型采用面向过程的项目计划方法,将软件组织的标准过程转换成软件项目相关人员的任务,能够有效保证质量管理过程得以执行。通过对度量数据的分析,能够客观地决定如何对质量管理过程进行控制及改进。软件质量管理方面将Rayleigh模型和PDCA模型相结合使用,在Rayleigh模型的双向质量改进策略中使用PDCA循环,较好地达到了质量管理的目的。
[1]Xie M.Software reliability modelling[M].Singapore:Word Scientific Publishing Co.Pte.Ltd.,1991.
[2]Lyu M.Handbook of reliability engineering[M].Singapore:McGraw-Hill,1996.
[3]Trachtenberg M.Discovering how to ensure software reliability[J].RCA Engineer,1982,27(1):53-57.
[4]Jr Gaffney J E.On predicting software related performance of large-scale[C]//Systems:Proc.of the Intl Conf.of the Computer Measurement Group,CMG XV.San Francisco,1984.
[5]Paulk,Mark C.The capability maturity model:Guidelines for Improving the software process[M].USA:Addison-Wesley Publishing Company,Inc.Reprinted by Permission of Addison-Wesley Longman,Inc.,1995:81.
[6]Dern Ingw E.Out of the crisis[M].Cambridge:M IT Center for Advanced Engineering Study,1982.
[7]Wang Q,Li MS,Liu X.An active measurement model for software process control and improvement[J].Journal of Software,2005,16(3):407-418.
[8]黄飞雪,李志浩,孙效里.基于PDCA的印度软件质量保证模型研究[J].哈尔滨工业大学学报,2005,11:1583-1585.
[9]杨辉.运用PDCA循环法完善信息安全管理体系[J].网络安全,2006(1):78-81.