基于度量的软件缺陷预测研究
发布时间:2020-08-11 14:08
【摘要】:软件系统在人类社会中有着日益广泛而深入的应用,其可靠性十分重要。随着软件系统规模与复杂度的迅速增长,在资源有限的情况下,完全依赖传统的软件测试方法很难找出软件系统当中的全部缺陷。静态软件缺陷预测技术能够借助通过软件度量获得的历史数据,利用机器学习方法构造出软件缺陷预测模型,进而对新的软件模块进行预测,判定这些新模块当中是否存在缺陷,为提高软件系统的可靠性提供有效的决策支持。软件缺陷预测包括获取模块标记、提取模块特征、构造预测模型、进行缺陷预测等基本步骤。缺陷预测所用的历史数据是通过进行软件度量获得的,这些缺陷数据存在结构复杂、类不平衡、标记样本不足、不同数据集等问题;此外,在进行软件缺陷预测的过程中,还需要考虑误判风险成本问题。针对上述软件缺陷预测当中的问题,提出了核字典学习、多核集成学习、半监督集成学习等软件缺陷预测方法。论文的研究内容主要包含如下方面:(1)提出了一种基于核字典学习的软件缺陷预测方法。将核方法与字典学习结合起来,首先根据软件缺陷历史数据结构复杂、类不平衡的特点,利用核方法将软件缺陷历史数据映射到一个能代表原始数据分布的高维特征空间。然后在核空间中,通过学习得到一个核字典,利用这个核字典判定软件模块的标记,对软件模块进行缺陷预测。在核字典学习过程中,采用了一种核字典基选择策略,构造出一个类别平衡的核字典,解决了软件缺陷预测当中的类不平衡问题。(2)提出了一种基于多核集成学习的软件缺陷预测方法。多核集成学习方法能够利用集成学习来获得最优的多核分类器,使得该方法在用于软件缺陷预测时,能够兼有多核学习与集成学习的优点。考虑到软件缺陷预测中的风险成本,设计了一种新的样本集权重向量更新策略,在多核集成学习的训练过程中,根据分类结果,逐步增加有缺陷模块权重,同时降低无缺陷模块的权重,从而增加对有缺陷模块的关注程度,降低把有缺陷模块预测为无缺陷模块的风险,提高软件缺陷预测的效果。(3)提出了一种基于半监督集成学习的软件缺陷预测方法。将半监督学习与集成学习结合起来,不仅能够充分利用大量存在的未标记模块进行训练,在标记样本不足的情况下增强对分类器的训练,同时还能够解决软件缺陷历史数据本身存在的类不平衡问题,从而提高软件缺陷的预测效果。考虑到相似度矩阵的重要作用,在求取相似度矩阵时,采用了非负稀疏编码的方法,以获得更加稳定学习效果更好的相似度矩阵,提高半监督集成学习的缺陷预测效果。在NASA MDP数据集上的实验表明,论文当中提出的核字典学习缺陷预测方法、多核集成学习缺陷预测方法、半监督集成学习缺陷预测方法均获得了较好的软件缺陷预测效果。
【学位授予单位】:武汉大学
【学位级别】:博士
【学位授予年份】:2018
【分类号】:TP311.5
【图文】:
图1-1邋Linxu邋Kernel代码规模增长情况逡逑机器学习是根据生理学、认知学等学科对人类学习机理的了解,利用数据或逡逑经验进行计算或认识,建立面向任务的学习系统。近年来,机器学习理论被成功逡逑应用于诸多领域,己经成为人工智能(Artificial邋Intelligence,邋AI)的又一个十分逡逑重要的领域。2016年3月,Google邋DeepMind旗下的围棋程序AlphaGo在通过数逡逑
方式的差异,可将软件缺陷预测分为动态软件缺陷预测(Dynamic邋Software邋Defect逡逑Prediction邋Technology)与静态软件缺陷预测(Static邋Software邋Defect邋Prediction逡逑Technology)两种方法[1,1()](图1-2)。动态软件缺陷预测是一种预测软件系统当中逡逑的缺陷和错误随着时间分布情况的技术,其主要关注点在于缺陷和错误随时间发逡逑生变化的趋势。通过预测软件系统下一个版本或者下一个生命周期可能出现的缺逡逑陷数量,动态软件缺陷预测能够帮助软件测试人员更好地开展工作。由于涉及时逡逑间因素,动态软件缺陷预测数据的获取需要对软件系统进行长时间的监测、度量,逡逑因此,动态软件缺陷预测更适用于软件产品的运营和维护阶段。静态软件缺陷预逡逑测则是通过分析软件开发过程的相关信息或分析软件程序源代码,设计出能表征逡逑软件缺陷相关的度量元,利用缺陷跟踪系统(如Tmc、Mantis、Bugzilla等)、版逡逑本控制系统(如Git、CVS、SVN等)或项目开发人员电子邮件分析系统等方法逡逑对软件历史仓库进行挖掘与分析,构建出用于预测的软件缺陷预测数据集,并通逡逑过训练建立起缺陷预测模型
在的缺陷预测数据结构复杂、类不平衡、标记样本不足、不同数据集,以及误判逡逑风险成本等问题,针对这些问题,研究了将机器学习当中的核方法、多核学习、逡逑集成学习、半监督学习等学习方法应用到软件缺陷预测当中,图1-3展示了本文逡逑的研究内容与这些软件缺陷预测问题的对应关系。其中,基于核字典的缺陷预测逡逑方法主要解决缺陷预测当中的数据结构复杂、类不平衡问题;基于多核集成的缺逡逑13逡逑
本文编号:2789168
【学位授予单位】:武汉大学
【学位级别】:博士
【学位授予年份】:2018
【分类号】:TP311.5
【图文】:
图1-1邋Linxu邋Kernel代码规模增长情况逡逑机器学习是根据生理学、认知学等学科对人类学习机理的了解,利用数据或逡逑经验进行计算或认识,建立面向任务的学习系统。近年来,机器学习理论被成功逡逑应用于诸多领域,己经成为人工智能(Artificial邋Intelligence,邋AI)的又一个十分逡逑重要的领域。2016年3月,Google邋DeepMind旗下的围棋程序AlphaGo在通过数逡逑
方式的差异,可将软件缺陷预测分为动态软件缺陷预测(Dynamic邋Software邋Defect逡逑Prediction邋Technology)与静态软件缺陷预测(Static邋Software邋Defect邋Prediction逡逑Technology)两种方法[1,1()](图1-2)。动态软件缺陷预测是一种预测软件系统当中逡逑的缺陷和错误随着时间分布情况的技术,其主要关注点在于缺陷和错误随时间发逡逑生变化的趋势。通过预测软件系统下一个版本或者下一个生命周期可能出现的缺逡逑陷数量,动态软件缺陷预测能够帮助软件测试人员更好地开展工作。由于涉及时逡逑间因素,动态软件缺陷预测数据的获取需要对软件系统进行长时间的监测、度量,逡逑因此,动态软件缺陷预测更适用于软件产品的运营和维护阶段。静态软件缺陷预逡逑测则是通过分析软件开发过程的相关信息或分析软件程序源代码,设计出能表征逡逑软件缺陷相关的度量元,利用缺陷跟踪系统(如Tmc、Mantis、Bugzilla等)、版逡逑本控制系统(如Git、CVS、SVN等)或项目开发人员电子邮件分析系统等方法逡逑对软件历史仓库进行挖掘与分析,构建出用于预测的软件缺陷预测数据集,并通逡逑过训练建立起缺陷预测模型
在的缺陷预测数据结构复杂、类不平衡、标记样本不足、不同数据集,以及误判逡逑风险成本等问题,针对这些问题,研究了将机器学习当中的核方法、多核学习、逡逑集成学习、半监督学习等学习方法应用到软件缺陷预测当中,图1-3展示了本文逡逑的研究内容与这些软件缺陷预测问题的对应关系。其中,基于核字典的缺陷预测逡逑方法主要解决缺陷预测当中的数据结构复杂、类不平衡问题;基于多核集成的缺逡逑13逡逑
【参考文献】
相关期刊论文 前4条
1 王瑞;杜林峰;孙督;万旺根;;复杂场景下结合SIFT与核稀疏表示的交通目标分类识别[J];电子学报;2014年11期
2 陈思宝;赵令;罗斌;;基于局部保持的核稀疏表示字典学习[J];自动化学报;2014年10期
3 姜远;黎铭;周志华;;Software Defect Detection with ROCUS[J];Journal of Computer Science & Technology;2011年02期
4 王青;伍书剑;李明树;;软件缺陷预测技术[J];软件学报;2008年07期
本文编号:2789168
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2789168.html