论文部分内容阅读
许多开源软件都是Internet的重要组成部分,例如Sendmail、Apache、Linux、MySQL等。同时,开源软件也是支持全球电子商务的IT基础架构的重要组成部分。Gartner在2011年发布的一项调查报告中指出,超过一半的被调查公司已经采用了开源软件作为其IT战略的组成部分。开源软件的流行,固然是因为开源软件开放、灵活、低成本等诸多优势,然而不可否认的是,开源软件的高质量才是其成功的基石。开源软件的缺陷管理是其软件质量保障的一种重要手段。目前,大型的开源软件项目大多利用缺陷追踪系统(如Bugzilla、GNATS、JIRA等)收集和管理缺陷信息,并协助开发者处理这些缺陷。开源软件的缺陷是由软件的开发者、测试人员和普通用户,以缺陷报告的形式提交到缺陷追踪系统。随着缺陷报告的不断提交,缺陷数目变得十分庞大,人工进行缺陷的分派也成为一个非常耗时、易错的过程。所以,如何进行缺陷的高效分派是大型开源软件缺陷管理的一个棘手问题。为了提高缺陷分派的效率,许多自动或半自动化的缺陷分派方法被相继提出。这些方法归结起来就是利用缺陷报告的各种信息,采用信息检索和机器学习的方法,同时结合多种手段,例如图理论、主题模型、评分机制等,进行开发者的推荐。为了提高推荐的准确率,往往同时推荐多个开发者来解决同一个缺陷。针对缺陷的分派问题,首先,本文提出了一种简单易用的针对软件缺陷自动分派的开发者推荐方法,其核心思想是利用LDA主题模型(刻画开发者技能)、开发者合作网络(刻画开发者之间的合作关系)构造(内容+关系)混合策略。针对大型开源软件项目Eclipse和Mozilla的十万级已修复缺陷的实验表明,在选取合适的参数和分派策略情况下,本文所提方法的开发者推荐的准确率分别达到了 46.7%和33.4%,比基准的LDA + kNN方法的推荐准确率分别提高了 209.3%和131.9%,从而验证了其有效性。另外,通过对缺陷分派过程中缺陷再分配次数较多的缺陷进行深入分析,结合开源软件开发者协作网络,总结了关于开发者的16个特征,通过统计方法确认9个与开发者再分配路径长度(再分配次数)的相关因素(特征),并进一步约简到4个核心特征,以此构建基于机器学习方法进行开发者分派的特征。将缺陷分派问题视作分类问题的一个实例,通过这些构造的开发者特征构建分类器,进行开发者的推荐,取得了较高的推荐准确率。