何中威 范鑫
【摘要】 软件的可靠性是确保用户使用的前提,软件缺陷将严重影响用户体验。本文简要介绍了软件缺陷预测,并对其相关技术进行了研究,以期为软件开发人员提供参考。
【关键词】 软件缺陷 预测技术 复杂性度量 预测原理
随着计算机软件系统规模不断增大以及逻辑复杂性不断增强,其潜在的或未被测试出的缺陷则会影响软件质量。基于此,本文通过研究软件缺陷预测技术,可帮助测试人员有效评估软件的可靠性,掌握软件质量状态,从而确定其是否达到使用标准。
一、软件缺陷预测
软件缺陷预测技术自出现以来,在软件领域一直极为活跃,其对软件质量分析、减少开发时间、降低开发成本等方面具有重要的价值。软件缺陷预测技术是指按照软件的基本属性规模、复杂性、开发方法和过程,以及已知缺陷来预测潜在但还未被发现的缺陷[1]。软件缺陷预测技术能帮助测试人员掌握软件失效模式、了解质量状态,并决定软件是否交予用户使用。软件缺陷预测技术可分成动态缺陷预测与静态缺陷预测[2]。动态缺陷预测技术是以缺陷产生时间为基础,对系统缺陷随时间分布实施预测的技术;该技术利用时间分布统计、挖掘软件的缺陷,寻找缺陷基于软件开发周期的引入与移除规律。静态缺陷预测技术是指采用软件规模、复杂度、开发过程等可度量缺陷的元素及已有缺陷,预测软件潜在但还未暴露的缺陷;该技术以缺陷尽早检测为原则,既可减少缺陷修复成本,又能缩短缺陷修复时间。
二、软件复杂性度量及其与缺陷预测的关系
软件复杂性度量与模块错误分布具有紧密的关联。即:正开发软件模块的复杂性度量与软件生命周期的测试和运行过程中所发现的错误数量之间存在直接相关性[3]。将复杂性度量作为输入,能有效预测软件可靠性。软件模块出错倾向可直接反映软件的可靠性(外部质量属性),但不可直接获得。故在缺陷预测模型中输入软件复杂性度量(内部质量属性),可获得各软件模块出错倾向的预测值,从而间接反映软件的可靠性。
三、软件缺陷预测技术原理
软件缺陷预测旨在帮助研究人员在软件开发早期宏观的认识该系统。其可区分系统各模块出错倾向,在软件测试、修改过程中有效配置资源,以提升软件开发效率、减少开发成本。软件缺陷预测技术原理如图2所示,软件缺陷预测过程分为三部分,即:特征选择处理复杂性度量数据集、建立缺陷预测模型、模型预测结果。
1、特征选择处理复杂性度量数据集。在软件缺陷预测训练过程中,首先应收集该软件早期版本或测试数据,获得相关经验。软件复杂性度量数据集包括两部分,即复杂性度量属性集与测试历史数据。软件复杂性度量属性集可视为样本数据的“属性”,而测试历史数据则可认为是样本数据相对应的“值”。这样一来,软件复杂性度量数据集就以“属性——值”的样本形式构成。样本“值”是一类布尔型数据,即:有或无出错倾向,属性则是来自于软件开发过程中的复杂性度量属性集。
2、建立缺陷预测模型。以“属性——值”样本形式构成的软件复杂性度量数据集有效反映了复杂性度量属性集与样本是否存在出错倾向之间具有一定的相关关系,即软件缺陷预测模型在实质上属于模式识别范围[4]。构建软件缺陷预测模型的过程则是利用机器学习算法建立模型结构,并明确复杂性度量属性之间依赖性强弱的一个过程,包括模型结构学习与参数学习两个过程。
3、模型预测结果。软件缺陷预测模型的预测过程是在预测集上实现的,与训练过程的训练集完全不同。因构建好的缺陷预测模型可利用模型结构和参数对复杂性度量与预测结果间的关系进行定量表达,也就是说,给定一个软件模块的复杂性度量数据集,利用已训练预测模型就能分析此模块有无缺陷,从而完成软件缺陷的预测。
四、结论
综上,软件的可靠性不能直接获得,只能以复杂性度量作为输入间接反映软件的缺陷。首先以特征选择处理复杂性度量数据集,然后构建缺陷预测模型,进而利用该模型获得相应的预测结果。
参 考 文 献
[1] 王海强.软件缺陷预测技术分析[J].科技传播,2015,(1):132-133.
[2] 乔辉.软件缺陷预测技术研究[J].解放军信息工程大学,2013:3-4.
[3] 李大鹏.一种集成类层次和系统层次的面向对象软件复杂性度量集[J].计算机研究与发展,2010,(S1):237-242.
[4] 冯大成.基于复杂性的软件缺陷预测[J].计算机工程与设计,2011,32(1):213-217.