论文部分内容阅读
软件缺陷在软件开发和维护过程中是不可避免的。及时地发现并修复软件产品的缺陷可以有效的提高软件产品的质量,减少产品开发和维护的成本。软件组织通常采用缺陷跟踪系统来管理软件产品的缺陷,并将缺陷以缺陷报告的形式存储在跟踪系统中。缺陷报告提供了关于缺陷的详细信息,开发者可以基于这些信息对缺陷进行定位和修复,从而提高产品质量。在软件开发过程中,大量的缺陷报告存在于缺陷跟踪系统中,项目管理者需要对缺陷报告进行管理,以便尽快对缺陷进行修复,提高软件开发效率。在管理过程中,通常面临以下三个问题:如何自动识别含有重复缺陷的报告,从而减少重复缺陷带来的额外工作量;如何快速确定缺陷报告的优先级,以便合理的分派修复资源;如何精准地为缺陷报告推荐合适的修复人员,从而降低缺陷报告的修复周期,提升修复效率。本文对这些问题进行了较系统的研究,主要贡献如下:(1)为了有效识别含有重复缺陷的报告,提出了基于词向量模型和卷积神经网络模型的重复缺陷报告识别方法。词向量模型解决了重复缺陷报告识别中的词语层面的匹配缺口,卷积神经网络模型解决句子层面的匹配缺口。实验结果显示,该方法能够有效地对重复缺陷报告进行识别,并且词向量和卷积神经网络模型均有助于提升重复缺陷报告识别的性能。(2)为了快速确定缺陷报告的优先级,提出了主动半监督的缺陷报告优先级预测方法。从缺陷报告中抽取多维度的特征信息,采用机器学习中的主动学习和半监督学习方法,有效解决了当训练数据缺失时如何对缺陷报告的优先级进行预测的问题。实验结果表明了该方法的有效性。(3)为了精准地为缺陷报告推荐合适的修复人员,提出了基于人员能力和活跃度的缺陷修复人员推荐方法。首先采用三个启发式实验分析了人员能力、人员时间活跃度和空间活跃度在缺陷修复中的作用,然后提出了基于人员能力的模糊集模型、基于人员活跃度的缓冲池模型、及基于人员能力和活跃度的混合推荐算法。实验结果显示,该方法能够以较高的推荐准确度和较低的处理时间为缺陷报告推荐修复人员。(4)为了有效实现修复人员和缺陷的准确匹配,提出了基于人员-缺陷契合程度和完成时间的最优化缺陷修复人员匹配方法。用开发者能力与缺陷报告类型之间的匹配程度及缺陷报告的优先级来共同建模人员-缺陷契合程度,用当前所有开发者中最晚完成其所有任务的时间来衡量这批报告的最长时间;将该问题建模成多目标优化问题,并用实验比较了贪心算法、遗传算法以及深度优先搜索算法的效果。