回答这个问题,首先要回答以下几个问题:
- 在软件缺陷预测领域最常用到的方法有哪些?
- 近几年(2015-2018),软件缺陷预测的研究内容有哪些?
- 软件缺陷预测大概可以分为哪几个派别?每个派别的主要特点是什么(包括优缺点)?
为了回答上述问题,我在dblp上下载了该领域近三年来的20篇论文,统计如下:
表格中的Q1指代的是研究内容所属范围,Q2指代的是对Q1的详细解释,Q3指代的是该方法的特点。(注:有些显而易见或者重复的解释与特点,就没有标明)
从表中分析。现今软件缺陷预测领域的主要研究方向为:
- 类不平衡问题。这是软件缺陷预测一直以来都存在的问题。原因是,在一个项目中,无缺陷样本总是多于有缺陷样本。
- 模型算法的研究。目前对于WSDP(Within-Project Software Defect Prediction)的研究几近饱和,但是对于CSDP(Cross-Project Software Defect Predictino)以及HDP(Heterogeneous Defect Prediction)的研究正如火如荼。
- 半监督、无监督的研究。在实际应用场景中,目标项目的标签多为不可知,或者只是通过人力代价得知一小部分目标样本的标签,此时半监督与无监督便能大展身手。
在了解了软件缺陷预测的概况后,再来分析这个问题就显得很容易。
机器学习作为计算机科学与技术中一项重要的工具与方法,在软件缺陷领域发挥着巨大的作用。不论是模型与算法的推导,还是实验部分,都离不开机器学习。
至于目前有哪些人在做。目前美国那边SE的领军人物Tim Menzies,以及国内(其他不清楚,只提知道的)武汉大学计算机学院的软件工程实验室的荆晓远老师研究小组都在做着这方面的研究。
以上。