首页 | 官方网站   微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 15 毫秒
1.
张文  李自强  杜宇航  杨叶 《软件学报》2019,30(2):195-210
当软件缺陷报告在跟踪系统中被指派给开发人员进行缺陷修复之后,缺陷修复人员就需要根据提交的缺陷报告来进行软件缺陷定位,并做出相应的代码变更,以修复该软件缺陷.在缺陷修复的整个过程中,软件缺陷定位占用了开发人员大量的时间.提出了一种方法级别的细粒度软件缺陷定位方法MethodLocator,以提高软件修复人员的工作效率.MethodLocator首先对缺陷报告和源代码方法体利用词向量(word2vec)和TF-IDF结合的方法进行向量表示;然后,根据源代码文件中方法体之间的相似度对方法体进行扩充;最后,通过对扩充后的方法体和缺陷报告计算其余弦距离并排序,来定位为修复软件缺陷所需做出变更的方法.在4个开源软件项目ArgoUML、Ant、Maven和Kylin上的实验结果表明,MethodLocator方法优于现有的缺陷定位方法,它能够有效地将软件缺陷定位到源代码的方法级别上.  相似文献   

2.
软件缺陷在软件的开发和维护过程中是不可避免的,软件缺陷报告是软件维护过程中重要的缺陷描述文档,高质量的软件缺陷报告可以有效提高软件缺陷修复的效率.然而,由于存在许多开发人员、测试人员和用户与缺陷跟踪系统交互并提交软件缺陷报告,同一个软件缺陷可能被不同的人员报告,导致了大量重复的软件缺陷报告.重复的软件缺陷报告势必加重人工检测重复缺陷报告的工作量,并造成人力物力的浪费,降低了软件缺陷修复的效率.以系统文献调研的方式,对近年来国内外学者在重复软件缺陷报告检测领域的研究工作进行了系统的分析.主要从研究方法、数据集的选取、性能评价等方面具体分析总结,并提出该领域在后续研究中存在的问题、挑战以及建议.  相似文献   

3.
姜佳君  陈俊洁  熊英飞 《软件学报》2021,32(9):2665-2690
软件缺陷是软件开发和维护过程中不可避免的.随着现代软件规模的不断变大,软件缺陷的数量以及修复难度随之增加,为企业带来了巨大的经济损失.修复软件缺陷,成为了开发人员维护软件质量的重大负担.软件缺陷自动修复技术有希望将开发者从繁重的调试中解脱出来,近年来成为热门的研究领域之一.搜集了94篇该领域最新的高水平论文,进行了详细的分析和总结.基于缺陷修复技术在补丁生成阶段所使用的技术手段不同,系统性地将软件自动修复技术分为4大类,分别是基于启发式搜索、基于人工模板、基于语义约束和基于统计分析的修复技术.特殊地,根据对近几年最新研究的总结,首次提出了基于统计分析的技术分类,对已有分类进行了补充和完善.随后,基于对已有研究的分析,总结了该领域研究所面临的关键挑战及对未来研究的启示.最后,对缺陷修复领域常用的基准数据集和开源工具进行了总结.  相似文献   

4.
软件缺陷定位是指找出与软件失效相关的程序元素. 当前的缺陷定位技术仅能产生函数级或语句级的定位结果. 这种粗粒度的定位结果会影响人工调试程序和软件缺陷自动修复的效率和效果. 专注于细粒度地识别导致软件缺陷的具体代码令牌, 为代码令牌建立抽象语法树路径, 提出基于指针神经网络的细粒度缺陷定位模型来预测出具体的缺陷代码令牌和修复该令牌的具体操作行为. 开源项目中的大量缺陷补丁数据集包含大量可供训练的数据, 且基于抽象语法树构建的路径可以有效捕获程序结构信息. 实验结果表明所训练出的模型能够准确预测缺陷代码令牌并显著优于基于统计的与基于机器学习的基线方法. 另外, 为了验证细粒度的缺陷定位结果可以贡献于缺陷自动修复, 基于细粒度的缺陷定位结果设计两种程序修复流程, 即代码补全工具去预测正确令牌的方法和启发式规则寻找合适代码修复元素的方法, 结果表明两种方法都能有效解决软件缺陷自动修复中的过拟合问题.  相似文献   

5.
基于机器学习的软件修复方法可以降低软件缺陷修复成本,无须人工干涉而自动修复软件缺陷,但不同的缺陷修复软件对不同类型缺陷的修复偏好不明确,且缺乏针对性而无法充分发挥深度学习模型的作用;为此在研究缺陷分类的基础上,研究几种具有代表性基于深度学习的软件自动修复方法对不同类型的缺陷总的修复概率,并比较分析不同学习模型对于修复不同类型缺陷的修复偏好,后续可以更好地进行模型选择以及软件自动修复工作。实验结果表明,基于深度学习的软件自动修复方法倾向于修复IF语句类型、方法语句类型、return语句类型的缺陷。基于自编码器的软件自动修复方法倾向于修复IF语句类型的缺陷,基于LSTM的编码器-解码器的修复方法倾向于修复与方法语句类型相关的缺陷,而基于CNNs的编码器-解码器的修复方法则对IF语句类型、方法语句类型以及return语句类型这三种类型缺陷的修复偏好相差不大。  相似文献   

6.
软件缺陷定位是软件缺陷修复任务的一个重要步骤。面向软件缺陷报告的缺陷定位方法以描述缺陷产生现象的软件缺陷报告作为查询,以项目的源代码作为语料库,通过分析缺陷报告与源代码单元之间的相关关系,设计缺陷报告与源代码单元之间相关度的计算方法;随后,挖掘各类软件历史仓库来创建缺陷定位数据集,构建缺陷定位模型,以识别缺陷报告所描述的缺陷对应的源代码单元(即缺陷位置),实现缺陷定位。对近年来国内外学者在该研究领域取得的成果进行了系统总结。首先,介绍了软件缺陷定位的相关概念,归纳了面向软件缺陷报告的缺陷定位方法的主要流程;其次,围绕定位流程中的3个关键步骤梳理了已有研究工作;然后,总结了缺陷定位领域常用的实验数据集和实验评估指标;最后,对未来研究可能面临的挑战进行了展望。  相似文献   

7.
软件缺陷的综合研究   总被引:6,自引:0,他引:6       下载免费PDF全文
软件缺陷的概念在软件质量范畴中处于举足轻重的地位,软件缺陷度量是软件质量度量范畴内的核心度量。该文区分了错误、缺陷、故障、失效4个软件缺陷相关的概念,采用正交缺陷分类法建立了软件缺陷的分类分级模式,剖析了软件缺陷的生存周期,给出了缺陷密度、缺陷泄漏矩阵、缺陷注入率和缺陷消除率等基本的、实用的软件缺陷度量。  相似文献   

8.
软件缺陷报告的严重性对缺陷的解决具有关键作用。随着软件规模的不断扩大,使用开源的软件缺陷跟踪系统成为海量缺陷信息数据的主要处理方法。分析缺陷报告严重性在数据仓库中的作用,是处理软件缺陷的重要内容。通过对Bugzilla缺陷跟踪系统数据的研究和分析,发现不同项目的属性特征差异较大,同时在修复率、解决时长、开发者、组件等属性上的统计特征具有一致性。对Mozilla项目和Eclipse项目的数据进行系统分析,并根据不同组件和项目中严重性程度分布情况,认为软件缺陷报告严重性程度的提升会导致缺陷修复率的提高,同时严重性程度为normal级别的缺陷解决时长最短,开发者持有缺陷的数量越高其修复率越低。  相似文献   

9.
缺陷定位是软件缺陷修复的关键步骤。随着计算机软件的日趋复杂和网络的迅速发展,如何快速高效的定位缺陷相关代码成为了一个急待解决的问题。在研究现有基于信息检索技术的缺陷定位方法的基础上,综合考虑缺陷修复历史信息,提出了基于缺陷修复历史的两阶段缺陷定位方法。该方法不再单一依赖文本相似度,从缺陷修复的局部性现象入手,更多的考虑了缺陷修复的历史记录、变更信息及代码特征等因素,结合信息检索和缺陷预测方法来提高缺陷定位的精度。最后本文以两个开源项目为例,验证了方法的可行性和有效性。  相似文献   

10.
《软件》2019,(5):8-15
在软件开发过程中,软件缺陷是不可避免的。在缺陷跟踪系统中,一个重要的问题是如何根据用户所提交的缺陷报告,进行缺陷的自动定位。本文在综合考虑缺陷报告与源代码文件结构相似性的基础上,进一步分析已修复缺陷报告、缺陷报告中的异常堆栈(StackTrace)信息对软件缺陷定位的作用,从而提高定位的精度。在Eclipse、AspectJ和SWT开源项目数据程序集上进行相关实验,并与Buglocator、BRTracer和BLUiR缺陷定位方法进行了比较分析,实验结果表明,本文方法能显著提高软件缺陷定位的精度。  相似文献   

11.
提出一种基于K-Means和主题模型的软件缺陷分析方法,对软件缺陷的类别和关键词进行研究.获取缺陷报告进行预处理,获取有效特征,利用向量空间模型进行文本表示,计算权重,根据最终特征向量进行聚类;提取每一类缺陷的主题和关键词,帮助修复人员快速找到对应的修复方式.关键词提取结果以单词形式呈现给修复人员.实验结果表明,所提方法在bugzilla、firefox和SeaM onkey这3款软件的缺陷报告共1500条缺陷信息上最终聚类平均准确率能达到81%.  相似文献   

12.
提出一种基于K-Means和主题模型的软件缺陷分析方法,对软件缺陷的类别和关键词进行研究.获取缺陷报告进行预处理,获取有效特征,利用向量空间模型进行文本表示,计算权重,根据最终特征向量进行聚类;提取每一类缺陷的主题和关键词,帮助修复人员快速找到对应的修复方式.关键词提取结果以单词形式呈现给修复人员.实验结果表明,所提方法在bugzilla、firefox和SeaM onkey这3款软件的缺陷报告共1500条缺陷信息上最终聚类平均准确率能达到81%.  相似文献   

13.
半监督软件缺陷挖掘研究综述   总被引:3,自引:0,他引:3  
软件质量是计算机系统安全可靠运行的保障,而软件缺陷是导致软件质量低下的重要诱因。软件缺陷挖掘技术凭借其能够通过对软件代码及其相关数据进行分析建模,发现软件系统潜在的缺陷,已得到了软件质量保障领域的广泛关注。要准确发现软件模块中潜在的缺陷,需要利用大量带有缺陷情况标注的模块进行学习。然而,缺陷情况标注往往需要通过详细测试或人工代码检查获取,要消耗大量测试和人工资源,在实际应用中难以满足,这严重制约了软件缺陷挖掘的性能。针对这一问题,半监督学习技术被引入软件 缺陷挖掘,通过对大量缺少标注的模块进行利用,辅助提升软件缺陷挖掘的性能。本文对半监督缺陷挖掘技术的研究现状进行综述。首先综述了软件缺陷挖掘研究现状,然后简要介绍了半监督学习的4种学习范式;最后系统梳理了基于半监督学习进行软件缺陷挖掘的多种方法与技术。  相似文献   

14.
移动应用(APP)软件的版本更新速度正在加快,对软件缺陷的有效分析可以帮助开发人员理解和及时修复软件缺陷。然而,现有研究的分析对象大多较为单一,存在信息孤立、零散、质量差等问题,并且没有充分考虑数据验证及版本失配问题,分析结果存在较大误差,导致无效的软件演化。为了提供更有效的缺陷分析结果,提出一种面向版本演化的APP软件缺陷跟踪分析方法(ASD-TAOVE),首先从多源、异构的APP软件数据中抽取APP软件缺陷内容并挖掘缺陷事件的因果关系,接着设计了一种APP软件缺陷内容验证方法,基于信息熵结合文本特征和结构特征定量分析缺陷怀疑度用于缺陷内容验证并构建APP软件缺陷内容异构图。此外,为考虑版本演化带来的影响,设计了一个APP软件缺陷跟踪分析方法用于在版本演化中分析缺陷的演化关系,并将其转化为缺陷/演化元路径,最后通过一个基于深度学习的异构信息网络完成APP软件缺陷分析。针对4个研究问题(RQ)的实验结果证实了ASD-TAOVE方法在面向版本演化过程中对缺陷内容验证与跟踪分析的有效性,缺陷识别准确率分别提升约9.9%及5%(平均7.5%)。相较于同类基线方法,ASD-TAOVE方法可分析丰富的APP软件数据,提供有效的缺陷信息。  相似文献   

15.
为了评估软件缺陷的风险,提出了一种基于复杂网络分析的软件缺陷评估方法。该方法首先用一个网络模型表达程序实体之间的关系,将源代码中的方法抽象为节点,方法间的调用关系抽象为有向边,以此构造程序源代码网络;然后分别用介数算法和PageRank算法计算造成软件缺陷的方法节点在源代码全局网络中的地位,由此评估缺陷的风险高低。实验结果表明,该方法在评估内部高危缺陷时有较好的效果,有助于提高软件开发维护人员对一些隐蔽高危缺陷的关注度,进而为后续修复缺陷与软件演化提供有益的线索。  相似文献   

16.
在开源软件开发的维护阶段, 开源软件缺陷报告为开发人员解决缺陷提供了大量帮助。然而, 开源软件缺陷报告通常是以用户对话的形式编写, 一个软件缺陷报告可能含有数十条评论和上千个句子, 导致开发人员难以阅读或理解软件缺陷报告。为了缓解这个问题, 人们提出了开源软件缺陷报告自动摘要, 缺陷报告自动摘要可以减少开发人员阅读冗长缺陷报告的时间。本文以综述的方式对开源软件缺陷报告自动摘要的研究做了系统的归纳总结。首先, 根据摘要的表现形式, 将开源软件缺陷报告摘要分类为固定缺陷报告摘要和可视化缺陷报告摘要, 再将固定缺陷报告摘要研究方法分类为基于监督学习方法和基于无监督学习方法, 之后总结了基于监督学习和无监督学习的开源软件缺陷报告摘要生成的工作框架, 并介绍了开源软件缺陷报告摘要领域常用数据集、预处理技术和摘要评估指标。其次, 本文以无监督学习为切入点, 分类阐述和归纳了无监督开源软件缺陷报告摘要方法, 将无监督开源软件缺陷报告摘要方法分类为: 基于特征评分方法、基于深度学习方法、基于图方法和基于启发式方法, 并对每类方法进行讨论与分析。再次, 从缺陷报告摘要的实用性出发, 对现有的缺陷报告可视化摘要研究成果进行总结,并对固定缺陷报告摘要和可视化缺陷报告摘要的实用性做出分析。最后, 对现有研究成果及综述进行讨论和分析, 指出了开源软件缺陷报告摘要领域在缺陷报告数据集、抽取式摘要和黄金标准摘要三个方面面临的挑战和对未来研究的展望。  相似文献   

17.
针对传统电压频控软件缺陷检测技术未考虑软件缺陷分类,存在检测精度低的问题,提出一种电压频控中抗强干扰软件关联缺陷检测技术。对软件关联缺陷检测原理进行分析,采用判别函数对待测软件样本进行识别,引入统计模式识别算法处理软件原始数据,依据关联缺陷概率分配,确定关联缺陷类别,计算缺陷特征值,利用贝叶斯分类器对关联缺陷进行划分,完成抗强干扰软件关联缺陷的分类,从而实现关联缺陷的高精度检测。实验结果表明,该检测技术对软件缺陷进行准确分类,在保证强抗干扰性的前提下,有效提高了检测精度。  相似文献   

18.
软件缺陷数据处理研究综述   总被引:3,自引:0,他引:3  
软件缺陷数据是软件质量分析和改进的重要基础数据之一.如何在分析缺陷数据前对缺陷数据进行有效的预处理,如何根据缺陷特征对缺陷数据进行合理分类,如何对缺陷数据进行挖掘以及统计分析,是软件缺陷研究领域面临的问题.详细介绍了缺陷数据预处理、缺陷分类以及缺陷数据挖掘分析3个方面的研究内容、方法和技术,并对这些方法进行了比较和分析,最后提出了几个软件缺陷数据处理研究领域需要进一步研究的问题.  相似文献   

19.
刘海  郝克刚 《计算机应用》2008,28(1):226-228
提出系统的方法来指导软件缺陷数据的定义。根据软件缺陷管理的一般目标和过程提出软件缺陷数据定义的准则和缺陷管理工具应具有的特性,并举例说明了缺陷数据定义的方法。完整地提出了软件缺陷数据定义的方法。正确的缺陷数据定义方法对于软件缺陷管理具有非常重要的意义。  相似文献   

20.
任胜兵  陈军  谭文钊  左兴 《计算机应用研究》2021,38(11):3387-3392,3397
软件缺陷的存在导致软件无法满足用户的需求,如何高效高质量地定位缺陷是消除软件缺陷的关键.基于模型的缺陷定位技术是当前的研究热点,可以用于检测软件系统故障找到软件失效的原因.现有基于模型的缺陷定位技术中,未考虑非相邻节点间传递依赖和测试用例对可疑度的影响,导致缺陷定位精度和效率低.提出了基于概率模型检测的软件缺陷定位方法(probabilistic model checking method for software fault location,PMC-SFL),首先提出一种程序概率模型用于提高模型的推理能力;然后设计了基于执行路径构建程序概率模型的学习算法;最后设计了基于概率模型检测的软件缺陷定位算法,用于缺陷定位分析.通过在公共数据集Siemens上进行实验和分析,表明了PMC-SFL方法与五种现有的缺陷定位方法RankCP、BNPDG、Tarantula、SOBER和CT相比,具有更高的软件缺陷定位精度和效率.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司    京ICP备09084417号-23

京公网安备 11010802026262号