缺陷修复人推荐是近几年软工领域的主要研究方向之一。它的出现为了解决给新提交的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%的准确。对于推荐的结果还需要人工进行判断,事实上机器只是给出了可能性最高的候选人选,缩小了人为筛选的范围,提高了分配的效率。
参考文献