论文部分内容阅读
高质量软件的开发需要及时、高效的缺陷收集和处理机制。在开源项目中,缺陷追踪系统(Issue-tracking System)被广泛用于记录和追踪用户反馈,特别是软件缺陷。因为开源项目中存在许多缺乏技术经验的用户,因此项目中存在相当数量的、由他们提交的低质量缺陷报告1。其中,信息缺失和重复报告是报告质量低下的主要原因。为了完善缺失的信息,项目成员(包括审核者、开发者和管理者)和报告者需要花费大量时间和精力进行交流。这不但降低了报告修复的效率,还损害了报告者的体验。重复报告很可能导致项目成员重复的工作,而发现、检测重复报告的工作本身也耗时耗力。项目成员的时间极为宝贵,如果他们被过多的低质量缺陷报告干扰,就无法及时高效地修复软件缺陷。 目前,许多研究工作致力于提高报告的质量,主要分为重复检测和质量反馈两个方面。前者主要采用自然语言分析等方法,计算缺陷报告间的相似度,并由此检测重复报告。这部分工作大都假定被检测的报告具有完整的信息,然而这个假设对于大量存在的、信息缺失的报告并不成立(它们往往由缺乏经验的报告者提交)。后者主要探索影响报告质量的因素,通过对缺陷报告质量进行建模,指导报告者完善缺陷报告。这部分工作主要针对报告中存在的基本的、具有共性的问题,指导报告者完善报告(例如,提示报告者添加相关截屏)。然而,缺陷往往有各自的特殊性,报告者需要更有针对性的建议来完善报告信息。 针对上述问题,本文通过挖掘和分析Gnome、Mozilla等项目的近941k条缺陷报告2,总结现有的缺陷处理流程,分析低质量报告的特点,并设计和实现了一个基于相似检测的交互式报告工具Intereport。Intereport以挖掘项目的缺陷历史为基础,采用交互的方式,根据提交报告的描述,提示报告者提交报告所需要补充的信息,并检测重复报告,从而减少信息缺失的报告及重复报告的提交。本文的贡献在于:1、提出了一个基于相似检测的交互式报告完善方法。对新提交报告,该方法根据自然语言相似度及堆栈相似度检测相似报告及重复报告,根据相似度分布判断信息是否缺失,并利用最大信息增益原理分析相似报告,进而生成建议,指导报告者完善报告。2、基于上述设计,本文使用MongoDB、Flask及Bootstrap实现了基于B/S架构的交互式缺陷报告工具Intereport。作为实验评估,本文从Gnome项目中随机抽取了5条报告,使用Intereport检测它们在项目中的重复报告。结果显示,Intereport检测出的重复报告列表(最大长度为7)中,有50%~60%的列表包含了真正的重复报告。此外,本文还提供了3个案例,展示了报告者如何通过Intereport的指导,逐步完善报告的过程。