基于BP网络的软件过程质量度量研究
2014-09-21李亚平周伟良
李亚平 周伟良,2
(1.安徽经济管理学院信息科学系,合肥 230059;2.合肥工业大学管理学院,合肥 230009)
0 前言
从全面质量管理的角度看,软件产品质量的提升关键在于软件过程质量的提升。软件过程是软件研发过程中,对项目计划、项目设计文档、项目规章、检测事例和用户手册等相关资源进行管理、维护的一系列活动、方法与实践过程[1]。软件过程度量与软件产品度量的不同之处在于,软件过程度量主要是对软件开发过程各个阶段和各个方面进行度量,对软件过程的各项行为实施目标管理,并由此预测、控制软件产品质量。马慧敏等人基于广义回归神经网络构造质量预测模型对软件缺陷数进行预测[2];杨健、景疆、杨根兴等也分别从不同角度对基于人工神经网络的软件质量预测方法进行了研究[3-5];楼文高等通过样本生成方法、建模过程能有效避免出现过训练和过拟合现象,建立的BP模型具有较好的泛化能力及较强的可比性和客观性[6]。
上述基于神经网络的软件质量评估研究,主要以软件产品质量为评估对象,由于软件产品质量的提高取决于软件过程质量的提高,因此本文则以软件过程质量评价为对象,以针对软件企业软件能力成熟评估模型 CMMI(Capability Maturity Model Integration)[7]为基础构建评价指标、设计BP网络模型,用于对软件过程质量实施更为客观、有效的动态评价。
1 软件过程评价指标体系
1.1 指标筛选
软件过程质量与软件产品质量相比有其自身的特殊性,软件过程的评价对象是软件研发过程中的具体操作以及各项软件资产。因此,构建对软件过程进行评价的指标体系需要从软件过程的具体操作、软件资产的特性入手,CMMI为这一点提供了可行的方案。CMMI并非针对软件过程进行评价的工具,它是评估软件企业进行软件研发能力的一个有效方案。由于其在评估中所设定的关键过程域、目标、操作与均源自于具体的软件过程,同时又与软件产品的最终质量存在确定且又难以量化描述的模糊相关性,因此本文将CMMI的基本思想、方法引入到针对软件过程的评价中。
CMMI将软件企业的软件能力成熟度分为完成级、管理级、定义级、量化管理级、优化级等5个等级,5个等级又涉及需求管理、项目计划、度量与分析、项目监督与控制、配置管理等22个过程域。每个过程域中又被分解为若干目标,每个目标项又被分解为若干具体操作。在此,以管理级(CMMI第2级)软件成熟度等级为参考,该等级中包含需求管理、项目监督与控制、供应商协议管理、度量与分析、过程与产品质量保证、配置管理等7个关键过程域,这些过程域又可以分为15个特定目标和一个通用目标[1,7]。现以管理级为例,将CMMI评估企业软件能力成熟度的目标项作为度量软件过程质量的评价指标项来源,可以得到软件过程评价指标体系(表1)。
表1 软件过程度量指标体系
1.2 模型设计
CMMI的评估对象是企业而不是软件产品或软件过程,企业的CMMI评估过程,主要包含成立项目组,开展CMMI培训,设定CMMI评估目标,实施内部评审,完成正式评估等多个步骤,其耗时通常也超过12个月[1]。因此,CMMI评估对人力、物力、财力是一次巨大的耗费,使得其主要针对软件企业的评估,而不适合广泛应用于具体软件项目的过程度量和控制。相比而言,基于人工神经网络的软件过程度量与控制方法在操作性上具有明显的优势,它可以便利地应用于软件开发的各个阶段,有效降低评估成本并提高评估效率。
我们将CMMI的目标项作为在设计BP网络的输入项,将软件过程质量综合评价值作为输出项。对于BP网络中隐层的设计,主要包含两方面工作:一是隐层的数量,二是各隐层的节点数量。在此设定BP网络设计包含一个隐层,该隐层所含节点数量由下列经验公式得到
其中m表示隐层节点数,n表示输入层单元数,l表示输出层单元数,且1<a<10。
可以得到:
本文取m=6。
同时,将网络中的输入与输出的约束关系表示为
其中Oi表示第i个输出节点值,Wij表示相对于第i个输出节点的上一层中第j个节点的权重,Oj表示第i个输出节点的上一层网络中第j个节点的输出值,θi表示为第i个输出节点的一个输出偏差调整。
2 模型的训练与验证
2.1 数据准备
依托与某公司软件项目的产学研合作,采集了该公司3个软件项目、5组软件过程评价指标的第三方专家数据,并以0—9为标度,对采集得到的软件开发不同阶段信息进行量化。同时,以{1,1.5,2,…,9.5,10}为标度,对最终软件产品的整体评估结果进行量化,通过专家评价量化处理和数据拟合得到如表2所示专家评价数据(该数据同时应用在文献[2]中)。其中将Pij定义为第i组第j个项目的采集数据。
2.2 网络训练
对于上述数据处理,本文以Matlab软件为工具对所设计的BP网络进行了训练和验证,选取上述数据中P11-P43为训练数据,P51-P53为检验数据。主要的MATLAB程序如下所示:
样本训练情况如图1所示,
图1 样本训练情况
表2 软件过程专家评价数据
依据训练完成的网络,在此利用 sim(net,test')进行仿真,得到网络的输出向量为ans=(5.3571,5.2571,5.5572);
与验证数据中结果 V=(5,5,5.5)的绝对误差为(0.3571,0.2571,0.0572),相对误差为(7%,5%,1%)。由此可见,使用BP网络对具体的软件过程进行评价,从而预测软件产品质量具有相应的可行性。
在软件过程度量方面,基于因子加权累加法的度量方式更为典型,文献[1]中筛选了 G=(G1,G2,G3,G4,G5,G6,G7)=(管理需求,项目估算,制定项目计划,按计划监控项目,客观评价过程与工作产品,建立基线,将管理过程制度化)作为实际的评价指标,以=(0.190,0.089,0.378,0.055,0.039,0.029,0.220)T作为筛选出的7项指标的权重。
与文献[1]中基于因子加权累加法的度量方式相比,基于BP网络的软件过程质量度量需要大量的数据进行训练,在前期的评价精度上有所欠缺,但仍在合理的误差范围内,同时该方案在子指标覆盖面和数据处理效率方面有其优势。因此,此方法同样具有合理性和可操作性,作为软件过程的质量度量的可选方案是十分有益的。
3 结语
将人工神经网络、CMMI的基本方法引入到软件过程质量度量中,可以提高软件过程质量管理的有效性,从而提高对软件产品质量的控制能力。本文以CMMI模型过程域为基础构建软件过程评价指标体系,以BP网络为工具设计对软件过程进行度量的具体方案,为软件过程质量控制提供一个积极可行的思路。
[1]周伟良.管理级软件能力成熟度的模糊评价研究[J].华东经济管理,2013,27(4):173 -176.
[2]周伟良.软件开发过程质量与产品质量度量方法研究[D].合肥:合肥工业大学,2013.
[3]马慧敏,宋雨,许正伟.广义回归神经网络在软件质量预测中的应用[J].计算机工程与应用,2004(29):217-219.
[4]杨健,朱继梅,袁正刚.基于BP网络软件质量度量模型[J].微计算机信息,2006(22):45 -47.
[5]景疆,杨俊.人工神经网络在软件质量预测中的应用[J].软件工程与标准化,2005(11):79 -83.
[6]杨根兴,高大启,宋国新.基于神经网络的软件质量综合评价方法[J].华东理工大学学报,2006(3):56-59.
[7]CMU SEI.Concept of Operations for the Capability Maturity Model Integration[EBOL].http:www.sei.emu.edu.2014-03-19.