论文部分内容阅读
随着软件行业的迅速发展,在大规模的软件开发中必然存在着缺陷问题,快速准确地发现缺陷是保障软件安全可靠,提高软件测试效率的关键。为了提高软件的可靠性,软件缺陷预测被用来帮助开发人员发现潜在的缺陷并分配测试工作。传统软件缺陷预测研究主要使用代码行数、圈复杂度等传统特征来对缺陷预测模型进行训练和评估,然而,传统特征无法捕获到程序中包含的语义信息和结构特征,可能导致软件缺陷预测的性能不理想。近年来,国内外有大量基于程序语义的软件缺陷预测问题的研究,但仍然存在很多值得探讨的问题,例如,如何有效地提取语义特征和结构特征以及利用多元特征进行缺陷预测等。本文围绕结合多元特征的软件缺陷预测方法展开研究,并在PROMISE开源项目集上做了实证性分析,具体内容包括:(1)针对语义特征包含语义信息不准确、特征结合有效性低等问题,提出了一种基于传统特征与语义特征结合的软件缺陷预测方法—HDPTS-CNN。首先,为了提高语义特征所包含语义信息的准确度,将抽象语法树根据方法声明节点拆分成多颗子树,并基于子树进行语义特征提取,保证特征节点包含正确的上下文信息。其次,为了将传统特征与语义特征进行有效结合,进而挖掘结合特征与缺陷信息之间的联系,一方面,在数据层面进行初步结合,根据两类特征的数据特点,将语义特征降维以平衡与传统特征之间的维度差异。另一方面,在模型层面进行深度结合,使用一维卷积神经网络模型挖掘两类特征与缺陷之间的潜在关联,提取有益于缺陷预测的特征,进而发现程序中潜在的缺陷。(2)针对未充分挖掘结构特征、多元特征结合方式不完善等问题,提出了一种基于多元特征结合的软件缺陷预测方法—HDPMF-CNN。首先,在结构特征的提取上,提出基于方法调用关系图的细粒度结构特征提取方法,确保结构特征包含更丰富的类间结构关系。其次,为了充分利用多元特征,挖掘多元特征与缺陷信息之间的潜在关联,提出了带有特征结合模块的卷积神经网络模型。通过多元特征结合模块,模型可以自适应调整多元特征之间的相互影响,实现语义特征、结构特征和传统特征的深层次结合以进一步提高软件缺陷预测的性能。(3)设计并实现了基于多元特征结合的软件缺陷预测系统。该系统通过对HDPMF-CNN的封装,向用户提供了一个操作简易的软件缺陷预测交互界面,降低了缺陷预测模型的使用门槛,为软件测试工作提供指导。