论文部分内容阅读
软件安全在计算机系统中起着至关重要的作用,软件失效可能会引起生命、财产的重大损失甚至更为严重的后果。系统失效可能有硬件故障、软件故障、人为因素等多种诱因,但大多数失效是由软件缺陷引发软件故障产生的。用软件缺陷预测模型来预测缺陷在软件模块中的分布情况,找出高风险模块,合理分配测试资源,调整质量保证策略,是软件可靠性与安全性工程领域研究的热点问题。静态软件缺陷分布预测技术的研究涉及度量技术、机器学习技术、统计学习理论和数据挖掘技术。基于机器学习的软件缺陷分布预测的过程包含数据预处理、模型训练、模型评估、模型验证。构造有效的分类模型是静态软件缺陷分布预测的核心。当前,静态软件缺陷分布预测技术的研究方向主要有两个:一是预测模型分类算法的选择,另一个为预测模型数据预处理技术的研究。本文结合国防基础科研计划重点项目《XXXX发现技术应用》的研究内容,重点关注特定分类器下预测模型的数据预处理技术,进行软件缺陷分布预测系统关键技术研究。主要的研究工作如下:(1)软件规模不断扩大,多度量元带来“维数灾难”问题,过多属性度量引起数据冗余,从而导致软件缺陷分布预测精度降低。针对此问题,本文提出在软件缺陷预测数据预处理技术中引入局部线性嵌入算法,构建基于LLE-SVM的缺陷分布预测模型。该模型在使用局部线性嵌入算法保持原有度量数据几何完整性的同时,对高维的软件缺陷度量数据集进行了数据降维处理,而后使用支持向量机进行分类预测。实验表明,提出的LLE-SVM缺陷分布预测模型较单一SVM预测模型具有更高的预测精度。(2)在预测模型的数据预处理中,使用主成分分析方法对度量数据进行筛选、降维处理,可能导致对缺陷预测有价值的属性被过早筛除,从而影响预测精度。针对这一问题,本文提出构造IGA-SVM缺陷分布预测模型。该模型使用改进的遗传算法同时完成最优属性子集的选择和支持向量机的参数优化。实验表明,提出的IGA-SVM缺陷分布预测模型较SVM、PCA-GA-SVM、PCA-ACO-SVM具有更高的预测精度。(3)针对误差反向传播算法在软件缺陷预测模型应用中计算时间长、学习效果差的问题,本文提出了在软件缺陷预测数据预处理技术中引入JCUDA技术,通过学习样本分解、多线程处理和CPU-GPU的处理模式,提高软件缺陷预测模型的学习速度和预测速度,构建JCUDA-BP缺陷分布预测模型。实验表明,提出的JCUDA-BP模型能够对学习过程进行优化,在样本较多时优化效果明显,较BP具有更好的性能。(4)在本文所提出的LLE-SVM缺陷分布预测模型、IGA-SVM缺陷分布预测模型、JCUDA-BP缺陷分布预测模型基础之上,设计了软件缺陷分布预测原型系统。该原型系统能够根据需要,单独使用LLE-SVM缺陷分布预测模型、IGA-SVM缺陷分布预测模型或JCUDA-BP缺陷分布预测模型进行软件缺陷分布预测,也可进行简单融合预测。该原型系统当前已应用于XXXX缺陷发现平台。