使用软件工程领域知识检测重复的缺陷报告
- 论文下载地址: 下载链接
- 作者: Karan Aggarwal、Finbarr Timbers、Tanner Rutgers、Abram Hindle、Eleni Stroulia以及Russell Greiner
- 学校: 加拿大艾伯塔大学(University of Alberta)的计算机科学系(Department of Computing Science)
- 论文期刊: Journal of Software Evolution and Process
- 发表年份*: 2017年
- 期刊等级: JCR分区Q3
- 关键词: 缺陷报告去重、文档、重复的缺陷报告、信息检索、机器学习、软件工程教材、软件文献
摘要
Bug deduplication,即识别引用相同问题的重复缺陷报告,是软件工程生命周期中具有挑战性的任务。研究人员提出了几种主要依赖于信息检索技术的方法。本文的工作受到了领域知识可以提供相关上下文以增强效果的直觉的启发,试图通过增加软件工程知识来改进信息检索的使用。在先前的研究中,他们提出了软件文献上下文方法,用于使用软件工程文献作为上下文信息源来检测重复。如果缺陷报告涉及类似的主题,它们更有可能是重复的。他们的方法主要是自动化的,有潜力大大减少传统方法中的手动工作量,同时在精度上有轻微的折衷。
在这项研究中,他们通过展示领域特定特征可以在项目之间应用来扩展他们的工作,同时仍然保持性能。他们还引入了上下文空间中的软件工程知识的层次结构,以产生性能增益。他们还通过跨领域上下文突出了领域特定上下文特征的重要性:添加上下文提高了准确性;每个项目的Kappa得分提高了至少3.8%到10.8%。
创新点与借鉴点
创新点: 1. 软件工程领域知识的引入:文章的主要创新点是引入了软件工程领域知识作为上下文信息,用于改进重复的缺陷报告检测。这一概念的创新在于利用领域知识来增强信息检索技术,从而提高了缺陷报告去重的效果。
层次结构的上下文:文章提出了一种层次结构的上下文概念,包括通用的软件工程上下文、领域特定上下文和项目特定上下文。这种上下文层次结构的使用有助于更全面地捕获软件工程知识,从而提高了性能。
领域特定特征的跨项目应用:研究表明,领域特定特征可以跨不同项目应用,仍然保持性能。这一点对于在不同项目中实施缺陷报告去重方法的实用性具有重要意义。
性能改进:文章强调了引入上下文对于提高缺陷报告去重准确性和Kappa得分的积极影响。通过引入领域特定上下文,性能得到了显著提升,这对于降低手动工作量和提高自动化去重的效果具有重要价值。
借鉴点: 1. 信息检索技术的应用:文章借鉴了信息检索技术的方法,如BM25F算法,来进行文本相似性比较。这些技术已经在其他领域广泛使用,文章成功地将它们引入了缺陷报告去重的领域。
机器学习分类器:文章使用了C4.5决策树分类器进行缺陷报告去重的性能评估。这是一个常见的机器学习分类器,文章借鉴了这一方法来进行实验和性能评估。
上下文特征提取:文章借鉴了上下文特征的提取方法,包括从软件工程文献和项目文档中提取关键词列表。这些方法可以应用于其他文本相似性任务中。
总的来说,这篇文章的创新点在于引入软件工程领域知识和上下文层次结构,以提高缺陷报告去重的性能,同时借鉴了信息检索技术、机器学习分类器和上下文特征提取的方法来支持其研究。
实验与方法
实验数据集: - 作者使用了四个不同的缺陷报告跟踪系统的数据集,分别是Android、Eclipse、Mozilla和Open Office。这些数据集包含了不同数量和时间跨度的缺陷报告。
方法概述: - 本文的方法基于软件工程领域知识来改进缺陷报告去重过程,通过引入上下文信息来提高去重的准确性。 - 主要方法包括文本相似性计算、上下文特征提取和机器学习分类。
文本相似性计算: - 作者使用了BM25F算法来计算文本相似性,这包括了文本和分类字段的相似性计算。这些相似性计算用于构建特征矩阵。
上下文特征提取: - 文章引入了上下文特征,这些特征来自不同的上下文层次,包括通用的软件工程上下文、领域特定上下文和项目特定上下文。 - 上下文特征是从文本中提取的关键词列表,这些关键词列表来自软件工程文献、项目文档等不同来源。
特征构建: - 作者将文本相似性计算结果与上下文特征合并,构建了特征矩阵,用于后续的机器学习分类。
机器学习分类: - 作者使用了C4.5决策树分类器来对缺陷报告对进行分类,判断它们是否为重复的缺陷报告。
实验设计: - 作者进行了大量实验,比较了不同上下文层次、不同数据集和不同特征组合对缺陷报告去重性能的影响。 - 实验中还考虑了不同比例的重复和非重复缺陷报告,以评估模型的性能。
性能评估: - 作者使用了准确性和Cohen’s Kappa系数来评估模型的性能。他们比较了不同上下文特征组合和分类器的性能,以确定最佳配置。
总结
这篇文章探讨了如何利用软件工程领域的知识和上下文信息来改进缺陷报告去重的过程。
主要创新点: - 引入软件工程领域知识:文章的主要创新在于引入了软件工程领域知识作为上下文信息,用于增强重复的缺陷报告检测的准确性。 - 上下文层次结构:作者提出了一种上下文层次结构的概念,包括通用的软件工程上下文、领域特定上下文和项目特定上下文,以更全面地捕获软件工程知识。
关键方法: - 文本相似性计算:使用BM25F算法来计算文本相似性,包括文本和分类字段的相似性,用于构建特征矩阵。 - 上下文特征提取:从不同来源的文本中提取关键词列表,作为上下文特征,这些关键词列表包括了软件工程文献和项目文档等信息。 - 机器学习分类:使用C4.5决策树分类器对缺陷报告对进行分类,判断它们是否为重复的缺陷报告。
实验和发现: - 作者进行了大量实验,比较了不同上下文层次、不同数据集和不同特征组合对缺陷报告去重性能的影响。 - 实验结果表明,引入上下文信息显著提高了缺陷报告去重的准确性,特别是领域特定上下文对性能的影响最大。 - 作者还研究了不同比例的重复和非重复缺陷报告对对性能的影响,以及不同的特征组合和分类器的性能比较。
结论和未来方向: - 文章的结论强调了领域特定上下文的重要性,它可以跨不同项目应用,提高了缺陷报告去重的效果。 - 未来研究方向包括自动化上下文提取、利用本体关系、以及探索不同上下文表示方法,以进一步提高缺陷报告去重的性能。