论文部分内容阅读
软件缺陷是软件的固有属性,是软件开发过程中的“副产品”。其主要危害是影响软件的质量、延长开发周期和增加开发成本。阶段性的测试是及时发现软件错误,提高软件质量的重要手段。而准确地预测软件缺陷的分布情况对软件测试工作有着重要的指导意义。随着计算机技术的不断发展,软件的规模和复杂程度呈几何级数增长,为了能够准确细致地预测软件缺陷的产生和分布情况,人们需要分析的影响因素也越来越多。此时,传统的预测方法已经很难处理具有复杂因果关系的不确定性知识推理预测问题,而且这些方法的预测结果往往由于过于宽泛而失去实用意义。为了解决这一难题,人们开始尝试将其他学科的研究成果应用到软件缺陷预测领域中,其中比较常用的是数据挖掘技术。本文在对数据挖掘技术和软件缺陷相关知识进行深入研究的前提下,开展了对软件缺陷预测技术的研究和应用工作,将数据挖掘技术的两个分支——似然关系模型和聚类技术应用到软件缺陷预测中,提出了三种预测算法,开发了软件缺陷管理预测系统,并应用该系统对三种算法分别进行了实现和实验验证。本文的主要贡献和研究成果如下:1.根据测试方法来对软件缺陷进行分类预测。目前的软件缺陷预测领域主要的研究方向是对软件缺陷数量以及错误级别的预测,为了提高预测结果的实用性,本文根据测试方法来对软件缺陷进行分类预测,测试人员可以根据预测结果来制订有针对性的测试计划,从而使预测结果更具指导意义。2.提出基于似然关系模型的软件缺陷预测算法。似然关系模型(Probabilistic Relational Models,PRM)是一种以贝叶斯网(Bayesian Network)为基础衍变而来的统计关系学习方法。它能够应用在更为复杂的类以及类之间的依赖关系推理问题上,从而对不确定性知识具有更强的表示和推理能力。软件开发中影响软件缺陷产生和分布的各种因素都可以看作是一个实体类,这些实体本身或其自身属性都直接或者间接的影响软件缺陷的产生和分布。因此,软件缺陷预测问题实际就是具有复杂类依赖关系的不确定性知识推理问题。目前,在软件缺陷预测方面,人们对使用似然关系模型对软件缺陷进行预测的研究寥寥无几,因此本文提出了基于似然关系模型的软件缺陷预测算法,将似然关系模型在描述和推理多属性类之间关系及其不确定性知识上的优势应用于软件缺陷预测领域中,并针对该模型的不足进行了优化。3.提出基于高维聚类的面向缺陷分布模式的软件缺陷预测算法。聚类分析(Clustering Analysis)是典型的无监督学习方法,它根据已有实例集中实例的某些参考属性对其进行分类,将数据分成若干个簇,同一个簇的数据对象有很高的相似度,而不同簇中的数据对象有很高的相异度。在软件的开发过程中,由能力相近的开发(测试)人员进行开发(测试)的软件,其测试结果往往具有近似的分布模式。另一方面,将软件缺陷按照测试方法的不同进行细致的分类,随之而来的是存储软件缺陷的数据维度变得越来越高,如何从高维数据中找到隐含的模式就成了亟需解决的问题。此前,高维聚类的相关知识在软件缺陷预测领域中应用较少,因此,本文提出了基于高维聚类的面向缺陷分布模式的软件缺陷预测算法,对多维数据相似度进行了重新定义,通过构造特殊的估价函数来寻找数据中隐含的模式信息,并通过控制聚类过程来合并近似的测试实例,从而得到更为准确的预测结果以指导软件测试工作。4.提出基于人员能力混合变量聚类的软件缺陷预测算法。软件缺陷预测可能会遇到数据的冷启动问题,例如历史数据中没有新近人员的相关记录,那么针对该人员开发或测试软件的缺陷预测也无从谈起。在这种情况下,本文定义了一种衡量人员能力的方法,并据此提出了基于人员能力混合变量聚类的软件缺陷预测算法,该算法能够找到与新近人员能力相似的人员,并根据这些人员的相应历史数据来进行预测。5.开发软件缺陷管理预测系统,并应用此系统对以上三种基于数据挖掘技术的软件缺陷预测算法进行了实现和实验验证。实验结果显示,这三种算法具有各自的特点。其中,基于似然关系模型的软件缺陷预测算法对于大规模数据具有较好的准确性和较低的计算复杂度,但对于较小规模的数据,该算法预测精度较低;相比较而言,基于高维聚类的面向缺陷分布模式的软件缺陷预测算法对于规模较小的数据具有较高的准确性,但对于大规模的数据,存在算法时间复杂度较高的问题;基于人员能力混合变量聚类的软件缺陷预测算法在出现数据冷启动问题时,可以通过寻找近似属性实例的方法给出近似的预测结果。可见,根据实际情况灵活选取适当的算法不但可以提高预测质量,还可以降低预测工作的时间开销,这对提高软件质量和降低开发成本有着重要的意义。本文的研究结果丰富了数据挖掘技术在软件缺陷预测方面的研究和应用,提高了软件缺陷预测结果的实用价值,并对预测工作中的数据冷启动问题提出了一种解决方案,这些工作对提高软件缺陷预测的相关研究都有着积极的意义。