软件缺陷报告的管理与挖掘技术研究

来源 :浙江大学 | 被引量 : 0次 | 上传用户:a1390749
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件维护占据了软件产品的很大一部分成本,以往的研究显示软件维护消耗了70%左右的软件开发成本。随着现代软件工程的发展,软件缺陷(bugs)是不可避免的产物。修复软件缺陷是软件维护过程中的一个重要的行为。大部分开源软件社区和商业软件公司会使用软件缺陷追踪系统(Issue Tracking Systems),比如Bugzilla和JIRA,来帮助软件工程师管理软件缺陷报告。随着软件的规模不断的增加,和软件开发的复杂程度的增加,软件缺陷报告的数量和管理难度也不断增加,这使得软件修复的成本不断的增加。  缺陷报告的管理与挖掘技术主要用于从海量的缺陷报告中挖掘出有用的信息,帮助软件工程师提高工作效率,以及减少修复缺陷的代价。本文基于前人对于软件缺陷报告管理的研究,提出了一系列新的自动化技术来分析和挖掘软件缺陷报告,旨在为软件工程师提供高性能的自动化工具,并且通过一系列的实证研究来进一步帮助开发人员理解缺陷修复过程中的一些现象。本文主要内容如下:  1.第一次提出了对软件缺陷报告字段重置问题的实证学习。一个软件缺陷报告有很多的字段,比如,产品,部件,平台,严重程度,优先等级等等,这些信息对于缺陷的修复有着很重要的作用。以往的研究显示这些字段的错误赋值会延长缺陷的修复时间,甚至导致软件产品交付的延期。因此,保证这些字段的正确性非常重要。但是,这些字段有的时候会被重置。为此本文进行了一个实证分析来调研为什么这些字段会被重置,以及重置会造成什么影响。通过与开源社区的工程师们的交流,本文总结了3种导致缺陷报告字段重置的原因:新提交的缺陷报告的勘误,缺陷修复过程中的交互,管理人员后续的批操作。在此基础上,本文进一步分析了八种不同的缺陷报告字段重置问题,对OpenOffice、Netbeans、Eclipse和Mozilla等4个开源社区共190,558个软件缺陷报告进行实证分析。研究结果表明大概有80%的软件缺陷报告遭遇过至少一种以上的字段重置,并且那些遭遇过字段重置的缺陷报告需要的修复时间比那些没有遭遇过的要多。  2.提出了一个新的复合模型的算法来推荐合适的开发人员参与软件修复过程。缺陷修复是一个协同的工作,不同的软件工程师贡献他们的知识来帮助解决缺陷。给定一个缺陷报告,推荐一系列的可以帮助缺陷修复的开发人员可以更好的修复这个缺陷。以上问题称为缺陷修复的开发人员推荐。为了解决这个问题,本文提出了一个新的算法(DevRec),它从缺陷报告本身和开发人员两个角度来分析软件缺陷修复过程。DevRec最终整合这两个分析过程,从而达到更好的推荐效果。为了验证DevRec的效果,本文收集了包括Gcc、OpenOffice、Mozilla、Netbeans和Eclipse等5个开源社区共107,875个软件缺陷报告。实验结果显示DevRec在Recall@5和Recall@10上比Bugzie高57.55%和39.39%,比DREX高165.38%和89.36%。  3.整合了多种不同的多标记学习算法进行缺陷行为学习。当一个故障产生的时候,学习这个故障的行为(哪些类型的缺陷造成了这个故障的产生)可以更快地帮助开发人员修复这个故障。由于一个故障可能由多种缺陷类型同时造成,可采用多标记的算法来预测当前故障的缺陷类型。当前有很多多标记学习的算法,并且不同的多标记算法在不同的数据集上效果不同,因此本文提出了一种复合模型算法(MLL-GA),它采用基因算法集成了多种不同的多标记算法。为了验证MLL-GA,本文在tcas,printtokens,printtokens2,replace,flex,和grep等6个数据集上进行实验。实验结果显示MLL-GA的平均F-measure达到0.6078到0.8665,比Feng和Chen提出的方法提高14.43%。  4.第一次对软件构建系统中的缺陷进行了实证分析。软件构建系统将源代码、类库以及其他类型的数据通过编译器和其他的一系列工具转化成一个可执行的程序。分析软件构建中的缺陷可以帮助软件工程师更好的理解构建系统。为此,本文对软件构建系统中的缺陷进行了一个实证分析。首先,本文采集了来自Ant,Maven,CMake,和QMake等四个构建系统的缺陷报告,并随机的从这四个系统中选取800个缺陷报告进行分类。在这个分类基础上,本文进一步研究缺陷的类别与缺陷的严重程度分布,缺陷修复时间,缺陷收到的评价的关系。研究结果表明发现21.35%的缺陷属于外部接口(external interface)类别,18.23%的缺陷属于逻辑(logic)类别,以及12.86%的缺陷属于配置(configuration)类别。
其他文献
信息技术的深入应用,使得企业业务流程日益丰富,从业务流程库中便捷、快速发现用户所需流程或对用户进行流程推荐辅助建模行为是业务流程管理系统的关键技术之一,也是当前业务流
该文对移动代理及其涉及到的相关技术如代理、分布式技术、序列化、RMI等进行研究、分析,并提出其整体的体系结构.针对移动代理及支持其运行的平台系统,该文提出了移动代理系
作为人类最自然的表达方式之一,指尖跟踪和手势识别一直是人机交互领域的研究热点。手势拟合是一种使用三维程序创建虚拟手并调整其参数使之能够和摄像机获取的手势最为匹配,来
该论文选择数字图像作为隐蔽通信的潜入对象,分别在空域、离散余弦变换域和离散小波变换域进行潜入算法的研究,目的是为隐蔽通信系统提供高效的潜入算法.该文的主要研究内容
数字半色调技术是一种应用范围十分广泛的色调量化技术,它能将色调丰富的数字图像通过有限少量的色调来表示。由于人类视觉系统对数字图像的感知存在特殊的低通滤波效应,经过半
该文首先对实时嵌入式操作系统μC/OS-Ⅱ进行了深入的剖析;接着对星载操作系统的需求进行了分析;最后以星载操作系统需求分析为基础,对μC/OS-Ⅱ操作系统任务调度模块、任务管
人群疏散仿真在公共安全领域中有着重要应用。与传统人群仿真相比,疏散仿真具有行人个体状态和认知能力各异、环境危险情况多变、疏散时间压力大等特点。本文主要针对拥挤人群
目前,汇率预测常用的方法有人工神经网络和贝叶斯估计方法,但它们一般都仅基于数据本身,没有充分利用与之相关的经验知识.事实上,影响汇率变动的因素很多,如政治、经济、心理
随着社会发展,电子商务正成为现代商务的主流,而政府作为社会主要信息的收集和发布者,如果其信息化应用水平跟不上企业和社会上信息发展的步伐,信息化应用水平跟不上企业和社会信
现在的软件系统对软件质量的要求越来越高.如何提高软件质量有两个关键因素:过程质量的控制和软件产品本身的质量.在传统的软件测试中,比如V模型,人们只对软件产品本身进行测