论文部分内容阅读
随着软件系统变得越来越复杂,如何保证软件系统的可靠运行,已经成为科研人员所面临的巨大挑战。软件缺陷是软件系统不可靠的主要原因。目前已经有许多关于软件缺陷检测的研究工作,这些工作大多研究某种软件度量的性能或者某个具体软件缺陷检测算法,并且通常需要大量标记样本。实际应用中,由于测试资源的限制软件缺陷检测通常是弱标记的,已有的工作很少考虑弱标记情况下的软件缺陷挖掘。本文对弱标记情况下的软件缺陷挖掘系统实现进行研究和分析,取得了如下创新成果:1.针对弱标记软件缺陷挖掘没有合适的特征集合的问题,采用信息增益对各个软件度量进行特征选择,选择了对软件缺陷挖掘有效的特征集合,这组特征集合可以表征软件模块,为软件缺陷挖掘提供基础。2.针对没有任何软件缺陷标注的情况,提出了通过挖掘软件中的异常模块来找到缺陷风险高的模块的方法,并借助实验对比常见的异常点检测算法在软件缺陷挖掘中的性能,确立了本文系统在没有任何软件模块标注下采用的异常点检测算法,可以在没有任何缺陷标注信息时给用户初始的反馈信息。3.针对有少量软件缺陷标注的情况,提出了通过采用主动半监督学习来对软件中的缺陷模块进行检测的方法,并借助实验对比了主动半监督学习算法和传统机器学习算法的效果,确立了本文系统在有少量软件模块标注下采用主动半监督学习算法对软件工程中的缺陷进行挖掘,减少了用户需要标注的软件缺陷数量。4.基于以上研究工作,本文研制了弱标记情况下的软件缺陷挖掘系统,该系统可以在各种不同的弱标记情况下进行工作,给用户提供软件模块的缺陷信息。