论文部分内容阅读
软件缺陷作为衡量软件质量的重要指标,一直受到学术界和工业界的关注。软件缺陷管理是软件开发过程中较为重要的环节之一,软件缺陷的数量及分布直接关系到软件项目的时间成本和金钱开销。在软件开发过程中,及时发现并修复软件产品中的缺陷可有效地提高软件产品质量。软件缺陷的存在会导致软件产品在一定程度上无法满足用户的需求。
为了有效管理缺陷,软件组织通常使用Bugzilla、JIRA、Mantis或Trac等缺陷跟踪系统管理软件的缺陷及需求。通过缺陷跟踪系统,软件使用者及开发者可以方便地向系统提交及时发现的软件缺陷。缺陷跟踪系统记录、跟踪每个缺陷报告的状况,有效地展示软件产品的整体质量现状,同时还提供搜索缺陷、分配缺陷等功能。在缺陷跟踪系统中,开发者讨论缺陷的修复,QA分发缺陷报告、测试缺陷报告,项目管理者跟踪软件质量现状。由此看出,缺陷跟踪系统是软件开发过程中开发者、QA及项目管理者等角色的重要交流枢纽。在大型软件开发组织中,每天会有大量的软件缺陷被提交到缺陷跟踪系统,这给软件组织成员,包括软件开发者、软件项目管理人员,带来沉重的负担。面对大量新增缺陷报告,将缺陷报告个性化地推荐给相关修复者,减少人工参与时间花费,替代人工分发缺陷报告。
本文研究了现有的缺陷报告分发技术,重点探讨了基于机器学习分类算法和基于开发者经验模型的两类方法,并总结了在软件开发过程中典型缺陷修复过程,介绍了开源软件社区社会网络分析研究。基于以上研究,本文提出了一种新的缺陷修复相关开发者推荐方法DREX(Developers Recommendation with KNNSearch and EXpertise Ranking),该方法通过挖掘缺陷跟踪系统的缺陷数据库,使用K近邻搜索相似历史缺陷报告;基于开发者参与这些相似历史缺陷报告的讨论交流情况,建立开发者交流网络,通过社会网络分析对候选开发者经验进行排序,选取Rop Q个开发者作为被推荐的软件缺陷修复者。同时,基于提出的方法实现了缺陷修复者推荐系统,此系统支持DREX方法、及用于对比的ML-KNN方法和BR-SVM方法。最后在实际项目数据进行试验,与其他的算法进行比较,验证了方法的效果。