论文部分内容阅读
由于开源软件的研发与维护采用自愿参与、分散组织方式,相对于商业软件,开源软件缺陷分派存在更多的不确定性、往往具有更长的缺陷修复过程。一些像Mozilla、Eclipse等具有广泛用户的大型开源软件,随着版本迭代升级,功能日趋复杂,每天都产生大量的缺陷报告。而由于缺陷提交者水平、经验参差不齐,存在大量低质量、重复甚至无效的缺陷报告,这些报告直接影响到整个缺陷分派与修复的效率;另一方面,缺陷需要大量的结构化、半结构化信息描述,哪些信息需要重点阐述?哪些信息可以简略描述?明确这些问题,不仅能够有效指导提交者提交高质量缺陷报告,也将辅助于缺陷分派者和修复者能够快速聚焦缺陷关键特征,形成缺陷有效性准确判定和难易程度准确预测,直接和间接提升缺陷分派的效率。传统的缺陷分派推荐多是基于缺陷的文本特征,采用各类机器学习方法进行的,但预测的准确率一直较低。本文综合考虑缺陷的各类特征,分析不同类特征的重要性,设计一种既可以完成相应的缺陷预测的又同时实现了特征重要度度量的深度学习模型,并在此基础上设计融合特征权重的相似度度量方法,并改进历史缺陷分派传递图(Tossing Graph)对推荐列表进行优化,提升缺陷分派的准确性。本文的主要贡献如下:1)设计一个Bug数据爬取与信息提取程序,完成Mozilla开源项目的数据爬取,并能实现自动化的数据抽取、数据清晰和特征提取,形成一个开放的开源缺陷数据集;2)设计一个包含发布者经验、完整度、可读性、社交网络以及文本5个维度、28种特征的缺陷报告描述信息结构,提出一种基于Attention机制的深度学习模型,可以实现缺陷报告有效性预测、修复快慢预测,并能够在预测过程中自动度量特征的重要度。实验结果显示,本文提出的模型在有效性判定、缺陷修复时间快慢预测要高于现存的方法,并能结合常见的特征选择方法,能够完成维度间和维度内的特征重要度排序;3)提出了基于缺陷报告特征重要度的开发者预测方法BFIR模型,模型通过基于特征重要度的缺陷报告相似度匹配方法,推荐修复相似缺陷的开发者列表,并进一步通过改进的Tossing Graph方法优化推荐列表。实验表明本文提出的方法在缺陷分派推荐中均优于常见的机器学习方法,也验证了本文考虑的多特征因素、特征重要度因素、改进Tossing Graph推荐列表优化等因素能够有助于提升缺陷分派的准确性。