跨项目细粒度代码变更的缺陷预测方法研究

来源 :武汉大学 | 被引量 : 0次 | 上传用户:tata890
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在软件的开发过程中,缺陷的查找和修复是保证软件质量非常重要的一环。然而,这一过程往往耗费大量的时间和人力。如果能够在软件测试阶段,甚至在每次代码变更结束后,立即预测其是否会引入缺陷,以便快速修复,对软件开发效率将会有一个显著的提升。软件的开发过程中,通常会使用一些版本控制系统工具来记录软件的历史演变信息,包括开发过程中的缺陷修复信息。而机器学习的思想是通过已有的信息和知识,来对新的事物进行推测和评估。本文从软件的缺陷修复信息入手,从缺陷修复变更追溯到那些引入缺陷的变更,然后根据这些带有缺陷倾向的变更的属性特征,应用机器学习的方法,对什么样的变更容易引入缺陷进行建模。依据这些模型,可以预测软件开发中新产生的代码变更是否会引入缺陷,进而采取相应的措施及早发现、定位和修复潜在的缺陷。成熟的项目一般可以提供丰富的历史信息,用以进行机器学习建立预测模型,预测代码变更是否会引入缺陷,而对于一些新项目,或者一些特殊领域的项目,缺乏足够多的历史数据,这时候可以借鉴跨项目学习的思想,在数据源丰富的项目中学习知识,然后应用于数据稀少的项目中。目前,对于跨项目的缺陷预测有许多研究,但是普遍预测效果不理想,在一个项目中训练学习得到的预测模型,在另外一个项目上往往不是很适用。出现这样现象的原因主要是两个项目间数据分布差异过大,而传统的机器学习方法在训练集和测试集数据分布一致时才适用。其次,这些研究大都是基于文件级别的变更进行预测的,粒度过大,这样导致的问题是判定有缺陷倾向的文件后,还需要花费一定的开销来寻找具体产生缺陷的代码行位置,当文件过大时,这样的开销也是难以接受的。本文从软件的历史演变信息出发,将文件级别的代码变更转换为细粒度的代码变更实体,从细粒度的角度来预测缺陷倾向。对于跨项目缺陷预测效果不好的原因——项目间数据分布不一致,本文应用迁移学习的思想,提出了基于迁移学习的跨项目缺陷预测方法,通过将两个项目的数据集映射到一个潜在的特征空间来最小化项目间数据分布差异,然后应用传统的机器学习中的分类方法来预测代码变更的缺陷倾向。同时,为了进一步提高缺陷预测的效果,本文还提出了特征值选择方法、归一化选择方法、类别不平衡处理方法来逐步提高预测效果。实验中,本文选取了数据集ReLink和数据集AEEEM。设计了 3组对照实验,分别通过比较说明了特征值选择方法、归一化选择方法、类别不平衡处理方法对缺陷预测效果的提升,同时通过与其他方法的对比,说明了本文细粒度代码变更的跨项目缺陷预测方法的有效性。最后,从经验性的角度评估了采用细粒度级别的代码变更预测缺陷的优势。
其他文献
开放经济下的最优货币政策规则一直是货币政策研究的一大热点,而这类话题被谈论的最多的则主要集中在央行应该盯住哪种通胀目标,以及是否需要对汇率波动进行管控等等。计价货
网络编码是一种在路由节点上对不同信息流的编码组合再转发的处理机制,打破了路由节点传统存储转发信息的工作模式,为解决通信中的问题提供了新思路。无线双向中继系统是中继
因水对光的吸收和散射作用以及海洋环境的复杂性等因素影响,导致水下光图像对比度较低、目标边缘模糊并且纹理弱,造成水下光图像质量降低和图像有用信息的缺乏问题,给水下目
随着城市的飞速发展,传统卫星导航接收机在日益复杂的城市环境中面临着严峻的挑战。对于穿梭在城市高楼之间的车载卫星导航接收机而言,由于高楼或树木的阻挡,卫星信号频繁地
科技文献的数量呈爆炸性增加,科研知识的演变和进化更加迅捷,难以快速掌握。如何从大量科技文献中快速分辨出具有较高阅读价值的文献成为研究者普遍关注的问题。被引频次是指
人类活动识别是计算机视觉领域中一个热门的研究主题。许多应用如人机交互、智能视频监控、运动视频分析、病人监护系统、智能家居和智能安防系统等都要求对视频序列中的人类
目前,随着互联网的普及,网络学习已经越来越趋于流行化和国际化。现今的大型银行企业,员工数量较多,地域分布较广,每年为了员工培训,会产生大量诸如学费、差旅费等经费。基于
跳跃行为作为金融资产价格运动的重要组成部分,是市场微观结构研究的焦点问题。跳跃现象在股票市场并不罕见,它对波动率估计产生极大的影响,因此研究跳跃行为对资产配置、资
近年来,我国许多传统产业集群的低成本优势逐渐被削弱,产业集群升级问题获得更多国内外学者关注。而就我国传统产业集群的发展现状来看,我国许多地方产业集群的自主创新能力
随着社会经济的飞速发展,互联网已经成为人们工作和学习所必不可少的工具,然而由于其原始的设计存在诸多缺陷,为了从根本上解决传统互联网的许多问题,下一代互联网互联设备国