《计算机学报》文章摘要   全文下载
  文章题目跨项目软件缺陷预测方法研究综述
  作者陈翔1),2) 王莉萍1) 顾庆2) 王 赞3) 倪 超2) 刘望舒2) 王秋萍1)
  作者单位1)(南通大学计算机科学与技术学院 江苏南通 226019) 2)(南京大学计算机软件新技术国家重点实验室 南京 210023) 3)(天津大学软件学院 天津 300350)
  发表年份2018
  发表月份1期(254-274)
  文章摘要摘 要 软件缺陷预测首先通过挖掘与分析软件历史仓库,从中抽取程序模块并进行类型标记.随后通过分析软件代码的内在复杂度或开发过程特征,设计出与软件缺陷存在强相关性的度量元,并对这些程序模块进行度量.最后借助特定的机器学习方法基于上述数据构建出缺陷预测模型.因此该方法可以在项目开发的早期阶段,通过预先识别出项目内的可疑缺陷模块,达到优化测试资源分配的目的.但在实际软件开发场景中,需要进行缺陷预测的项目可能是一个新启动项目,或这个项目的历史训练数据比较稀缺.一种简单的解决方案是利用其他项目已经搜集的训练数据来构建缺陷预测模型.但不同项目之间因所处的应用领域、采用的开发流程、使用的编程语言、开发人员经验等并不相同,因此对应数据集间会存在较大的分布差异性并造成该方案的实际性能并不理想,因此如何通过有效迁移源项目的相关知识来为目标项目构建预测模型,吸引了国内外研究人员的关注,并将该问题称为跨项目软件缺陷预测问题.论文针对该问题进行了系统综述.根据预测场景的不同,将已有方法分为3类:基于有监督学习的方法、基于无监督学习的方法和基于半监督学习的方法.其中基于有监督学习的方法主要基于候选源项目集的程序模块来构建模型.这类方法根据源项目与目标项目采用的度量元是否相同又可以细分为同构跨项目缺陷预测方法和异构跨项目缺陷预测方法.针对前者,研究人员主要从度量元取值转换、实例选择和权重设置、特征映射和特征选择、集成学习、类不平衡学习等角度展开研究.而后者更具研究挑战性,研究人员主要基于特征映射和典型相关分析等方法展开研究.基于无监督学习的方法直接尝试对目标项目中的程序模块进行预测.这类方法假设在软件缺陷预测问题中,有缺陷模块的度量元取值存在高于无缺陷模块的度量元取值的倾向.因此研究人员主要基于聚类方法展开研究.而基于半监督学习的方法则会综合使用候选源项目集的程序模块和目标项目中的少量已标记模块来构建模型.这类方法通过尝试从目标项目中选出少量模块进行标记,以提高跨项目缺陷预测的性能.研究人员主要借助集成学习和TrAdaBoost方法展开研究.论文依次对每一类方法的已有研究成果进行了系统梳理和点评.随后论文进一步总结了跨项目缺陷预测研究中经常使用的性能评测指标和评测数据集,其统计结果可以辅助研究人员针对该问题进行合理的实验设计.最后总结全文,并分别从数据集搜集、数据集预处理、模型构建和评估、模型应用这4个维度对未来值得关注的研究方向进行了展望. 关键词 经验软件工程;软件缺陷预测;跨项目软件缺陷预测;迁移学习;实证研究 中图法分类号 TP311 DOI号 10.11897/SP.J.1016.2018.00254