论文部分内容阅读
软件bug仓库是软件开发与维护中的大规模数据库。面向Bug仓库的数据分析是软件工程和数据分析的交叉领域,用以应对bug仓库中遇到的复杂问题。Bug仓库数据分析的目标是通过分析bug数据解决bug仓库相关的软件问题。本论文专注于bug仓库数据分析及其应用。本文的主要贡献可分为三个层次,分别是挖掘与分析bug仓库(半监督bug分派算法设计、bug质量与数据归约)、理解与提高软件开发(软件债务高发bug建模、开发者优先级识别算法设计)和应用bug仓库分析(需求仓库迁移)①半监督bug分派算法设计。Bug分派是软件开发的典型任务,旨在为新bug分配合适的开发者。本工作设计了基于期望最大化的半监督分派方法,融合无标签bug报告,进而提高bug分派。实验表明半监督方法可以提高典型分类器的bug分派准确率。②Bug质量与数据归约。Bug报告的质量影响了修复bug的过程。由于bug报告多由开发者以自然语言填写,因此存在噪声和冗余。本部分工作展示了如何应用特征选择和实例选择技术,归约bug数据规模。为了决定应用特征选择和实例选择的顺序,bug历史数据集的属性用于构建分类器。归约后的bug数据集可用于提高bug分派。③软件债务高发bug建模。技术债务是软件质量和项目计划之间的一种权衡。本工作提出债务高发bug的概念。债务高发bug扩展了软件维护中的技术债务,包括三种类型,即标签bug、重开启bug和副本bug。基于Mozilla的实例研究显示软件产品平均bug修复时间与债务高发bug的属性有关联。监测债务高发bug有利于检验软件质量。④开发者优先级识别算法设计。开发者优先级用于区分bug仓库中开发者的活跃程度。本工作设计了获得开发者优先级的算法,并证明其收敛性。在bug评论的基础上构建的社会网络分析,生成开发者优先级。基于Eclipse和Mozilla的实验,本工作分析了开发者优先级的特性,并藉此改进bug仓库的三个典型任务,即bug分派、严重程度识别和重开启bug预测。实验表明开发者优先级有助于提高软件任务,尤其是bug分派。⑤需求仓库迁移。Bug仓库的数据分析可应用于软件开发维护之外的领域。本工作将bug仓库分析的知识,迁移至需求数据库,以弥补开放且大规模的需求数据不足的问题。需求工程中的典型问题,即软件下一版本发布问题,用于检验实验结果;在基于数据迁移的实例上,设计了基于骨架的多级算法求解该问题,并给出了相关性质及证明。本论文的工作,即bug仓库数据分析及其应用,改进了数据分析方法,并有助于理解开发过程和开发者合作行为。该研究的经验可以推广到软件工程的其它领域。