论文部分内容阅读
随着软件工程迅速发展,软件系统复杂度提高,软件可靠性问题成为人们关注的焦点,而软件缺陷威胁着软件的可靠性,如何在软件发布之前预测缺陷成为了一个亟待解决的问题。传统的静态缺陷预测关于缺陷分布的研究大多数是基于有监督的方法,需要先验知识,而在实际软件工程应用中,我们不可能获得大量的已知类标注模块,所以无监督的软件缺陷预测更具应用前景。Halstead度量元、McCabe度量元和基于源代码的度量元组成了软件缺陷度量元,本文在此基础上,采取主成分分析技术,选择出有效度量元的线性组合,降低了数据维度,提高了算法预测效率和预测精度。本文提出了一系列针对软件缺陷数据集的预处理方法,包括补全缺失值,剔除错误数据,Z-SCORE标准化数据等。最后,基于聚类技术提出了两种改进的软件缺陷预测方法:①模糊C均值算法常常会因为初始聚类中心的不同而得到不同的结果,这是爬山思想的算法收敛到局部最优解造成的,为了克服这个缺点,引入遗传算法和模拟退火对模糊C均值算法进行改进,并对NASA promise repository的6个软件缺陷预测数据集进行实验,在不需要类标注的情况下,其预测精度在少部分数据集上接近,大部分数据集上超越经典有监督方法,而与同为无监督方法的K均值相比,提高尤为明显,表明了该预测方法的有效性。②针对改进模糊C均值只能发现球状边界聚类的固有弱点,对基于密度的聚类方法进行研究,提出了一种对k-dist图进行分区处理的改进的DBSCAN算法,同时解决了DBSCAN算法在类密度不均匀时,聚类效果不理想的问题。在相同的数据预处理步骤下,同样用改进的DBSCAN算法对NASA promise repository的6个软件缺陷数据集进行实验,与改进模糊C均值算法进行对比,发现改进DBSCAN算法在低维度情况下,预测精度高于改进模糊C均值算法,在高维度下,改进DBSCAN算法预测精度低于改进模糊C均值算法。两种算法和静态缺陷预测领域传统经典算法比较,优势明显,不需要类标注,符合工程实际,具备较高预测精度和较高鲁棒性,为软件缺陷静态预测领域提供了新思路和方法。