浅谈缺陷修复人预测(Bug Triaging)

来源:互联网 发布:装修接单软件 编辑:程序博客网 时间:2024/06/07 21:51

缺陷修复人推荐是近几年软工领域的主要研究方向之一。它的出现为了解决给新提交的BUG确定合适的修复人所造成的时间开销,提高BUG triaging的准度。

 

当前大型的开源软件都是用Bugzilla, Jira, GNATS, trac等BUG repository来跟踪管理项目的BUG。对于每一个提交的BUG来说,我们需要把他分给一个合适的开发人员来修复。分配的好坏对于软件质量的保证来说至关重要。如果把Bug分配给一个不合适的人,则会影响到BUG的修复进度,从而无法保证代码能够得到及时的维护。而对于像Eclipse,Mozilla这样的大型项目来说,每天提交的待分配的新BUG可达到数百条之多。早期Eclipse项目只安排一个开发人员负责BUG的分配,但后来随着项目规模的不断增大,BUG检测和分配改由各个模块的开发团队自己负责。不管怎样,使用人工的手段进行BUG分配在项目规模日渐庞大,BUG数量快速增加的情况下显然是不合适,这会占用大量的人力和时间资源,增加额外的成本。因此,我们希望能够有一些自动化的方法能够帮助解决或者减轻Bug triaging的负担。

 

这一问题早期是由University of British Columbia的John Anvik, Cail C.Murphy等人在2005年提出的,他们的研究成果在06年的ICES上发表,感兴趣的可以阅读一下他们的论文《Who Should Fix This Bug?》。他们把TextClassification的方法整体移植到Bug triaging中来,把Bug Triaging看做是一个文本分类问题,Bug Report对应于分类的文档,而修复该BUG的开发人员则是这个Bug Report的分类标签。他们分别使用SVM(在此次研究中确定为最佳分类算法),NB,Decision Tree在训练集上训练分类模型。对于一个新来的BUG,使用分类模型进行分类,分类模型会给出分配给每个Develper的概率或得分,取概率或得分最高的K个Developer作为最终的推荐结果。

 

在此后的几年里,一些新的推荐方法被不断的提出,如异构网络,LDA主题模型,KNN等等都被尝试用来进行推荐,并有不错的预测效果。

 

我们始终需要注意的是“缺陷修复人推荐方法的提出不可能代替人工方法”。自动化方法的提出只能是起到辅助人工判断,减轻人工分配负担的作用。推荐和预测本身不可能达到100%的准确。对于推荐的结果还需要人工进行判断,事实上机器只是给出了可能性最高的候选人选,缩小了人为筛选的范围,提高了分配的效率。


参考文献

  1. Anvik, John, Lyndon Hiew, and Gail C. Murphy. "Who should fix this bug?."Proceedings of the 28th international conference on Software engineering. ACM, 2006.
  2. Xie, Xihao, et al. "Dretom: Developer recommendation based on topic models for bug resolution." Proceedings of the 8th International Conference on Predictive Models in Software Engineering. ACM, 2012.