基于设计大数据的软件缺陷预测系统设计与实现文献综述

 2022-09-22 11:25:44

  1. 文献综述(或调研报告):

软件缺陷预测技术出现至今,软件缺陷预测技术根据软件的基本属性(规模、复杂度、开发方法、过程等)、软件已经发现的缺陷预测来预测软件可能还遗留的、尚未发现的缺陷,大体上分为静态和动态两种缺陷预测技术。静态的缺陷预测技术主要通过软件系统的度量分析,进而预测软件缺陷的分布或者预测软件缺陷的数量。动态缺陷预测技术则是基于缺陷或者失效产生的时间,对系统缺陷随时间的分布进行预测的技术,由于本项目是基于静态缺陷预测技术,所以只对其研究进行综述。

静态缺陷预测技术主要分为:

  1. 缺陷分布预测技术

因为在软件工程领域通常认为软件缺陷在软件模块中的分布都是符合2-8原则的,即80%的软件缺陷来自于20%的模块,所以要将更多的测试资源用于可能出现软件缺陷的模块中,而静态软件缺陷分布预测的目的是给出对软件模块测试的先后顺序,以避免全面的测试。要识别或者预测这些包含大多数的缺陷的少量模块,就需要用到分类或者回归技术。分类技术通常用于识别模块是高缺陷还是低缺陷的,而回归技术主要用于估算缺陷数量。基本的思想是将软件预测模型转化为一个二值分类问题,基于软件项目的历史信息训练生成分类预测模型,对于正在开发阶段或已完成的相似类型的软件项目进行缺陷预测,以此来指导软件测试工作的进行。

缺陷分布预测一般包括以如下步骤进行:①确定统计度量元并采集软件产品的统计数据。②为了提高预测模型的精度和性能,根据分类算法选择的不同,要进行属性选择/特征选择/数据预处理等。③预测模型的构造及训练。④预测结果的获得。

常见的分类技术有:线性判别分析(LDA)-假设预测对象的每个分类都服从具有相同协方差矩阵的多元高斯分布,根据训练数据估计高斯分布参数,主要用于高缺陷概率的程序识别[1];分类回归树(CART)-首先根据训练数据集构造决策二叉树,输出在叶子节点,当训练完成后,该决策树不再改变,然后输入新的度量数据,进行预测[2];优化集精简方法(OSR)-使用分类树作为预测模型,通过对训练集进行适当的裁剪来获得更有效的分类回归树结构[3];布尔判别函数(BDF)-针对每个度量元设置一个阈值,其中任何一个度量元超过阈值,就将这个模块判为高概率缺陷模块,Khoshgoftaar提出了改进的BDF算法[4];聚类分析(CA)-首先利用聚类分析将软件模块按照预先设定的分类数进行自然分类(目前主要用到的是K-均值聚类和Neural-Gas聚类),然后由度量人员手工将这些类标定为高/低缺陷率[5];支持向量机(SVM)-其学习算法来自于统计学理论,核心是基尼感言风险最小化原则。

常见的回归技术有:人工神经网络(ANN)-正如其名字,它起源于对神经系统的研究与模仿,基于误差反向传播算法(BP)是目前在软件缺陷预测领域使用的主要神经网络[7],基本思想是将训练集的输入数据放入ANN进行运算,将输出结果与期望的输出进行比较,然后根据两者的差反向调整ANN的权值;逻辑回归(LR)-在软件缺陷分类技术中应用广泛,它与线性回归相似,需要找出训练数据匹配的较好的权值,这里采用对数变换,其结果值的变化范围将在负无穷和正无穷之间,同时使用模型的对数似然最大化的权值来测量匹配的良好程度[6]

  1. 基于度量元的缺陷预测技术

最开始人们根据经验,认为软件缺陷与软件规模有关,并在此基础上也提出了一些有效的算法,然而随着软件规模的增加,软件的复杂度也在逐步攀升,这时候人们逐渐意识到软件的缺陷不仅与软件规模有关,海域软件的复杂度有关,所以就出现了许多关于软件规模和复杂度的度量,其中最著名的是McCabe Cyclomatic Complexity 复杂度度量元。后来随着面向对象的软件开发技术的出现,许多面向对象的度量元被提出来衡量软件规模和复杂度等,这一类的技术往往强调预测结果的准确性与实际情况下能符合,但是至今预测结果与实际情况相比远没有达到人们期望的那样。

  1. 缺陷预测模型技术

与前两种方法不同的是:这些模型都较为全面的考虑了影响软件缺陷的因素,是比较综合的软件缺陷预测模型。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。