浅谈缺陷修复人预测(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%的准确。对于推荐的结果还需要人工进行判断,事实上机器只是给出了可能性最高的候选人选,缩小了人为筛选的范围,提高了分配的效率。
参考文献
- Anvik, John, Lyndon Hiew, and Gail C. Murphy. "Who should fix this bug?."Proceedings of the 28th international conference on Software engineering. ACM, 2006.
- 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.
- 浅谈缺陷修复人预测(Bug Triaging)
- 软件测试Bug(缺陷)
- bug修复心得(1)
- 缺陷(bug)严重级别定义
- BUG修复
- Bug 修复
- Bug修复
- bug修复
- 缺陷修复小结
- bug和bug修复
- 【第二章】bug缺陷
- 报告缺陷bug原则
- 缺陷bug跟踪系统
- bug和bug修复--Css学习笔记(九)
- 精通css(9)bug和修复bug
- 精通css(4)bug和修复bug
- 浅谈消弧柜缺陷
- 软件缺陷修复流程初探
- struct和class的区别
- tomcat问题,jsp页面无法编译,web页面一片空白,log显示空指针,在tomacat的work文件夹下没有生成相应的Java文件
- 区间调度问题
- Maya: 菜单 编辑网格 >偏移循环边工具
- Python学习教程(五)
- 浅谈缺陷修复人预测(Bug Triaging)
- ios 代理和委托的区别
- Maya: 菜单 编辑网格 >添加分段
- poj3435
- 14条建议,使你的IT职业生涯更上一层楼
- 快速排序 代码实现
- GetWindowText 功能
- Spice代码分析(三)——red_worker: red_init
- Poj 1014 Dividing(多重背包)