论文部分内容阅读
软件缺陷的存在给软件的安全使用带来了巨大的隐患。软件缺陷模块序列预测能够帮助软件从业人员对软件中的缺陷进行审查和检测,成为软件质量控制的有效手段。目前已有的软件缺陷预测研究,在实际应用时存在一定的问题。其中,基于有监督学习的缺陷预测模型在建模过程需要软件的历史缺陷信息,不适用新开发的软件;基于无监督的缺陷预测模型在预测时只提供有缺陷类和无缺陷类,没有对软件模块按照缺陷倾向进行排序,不利于测试资源的有效分配;基于半监督的缺陷预测模型在建模过程需要有专业人员参与,因此在实际应用时代价较大。特别地,现有的缺陷预测模型大多采用基于混淆矩阵的评价指标,没有考虑审查/测试潜在缺陷模块所需的工作量,因而不能保证应用这些模型时的收益。本文首先在基于聚类的缺陷预测模型上设计了四种排序算法,通过采用工作量感知的指标,在五个开源数据集上比较了这些排序算法的性能;然后设计了一种基于投票的缺陷序列预测模型,对建模过程中的投票者和投票策略的选择给出了建议,实验表明在同样的工作量下,该模型具有比代码行升序模型更好的预测性能,从而具有实用价值;最后结合基于聚类的缺陷序列预测模型,利用投票的方法对类簇内部的模块缺陷排序进行了研究,发现利用投票方法能在类簇内部给出比代码行升序模型成本效益更高的模块缺陷排序。本文主要有三个贡献:(1)在基于聚类的缺陷模块排序模型上,提出了四种簇间/簇内排序算法,并对四种算法的缺陷模块排序能力进行了比较;(2)提出了一种基于投票的缺陷模块排序模型,利用常用的度量信息对软件模块的缺陷倾向进行投票排序;(3)提出一种结合聚类的缺陷模块投票排序模型,对多种投票方法在类簇内部的缺陷模块排序能力进行了分析。