缺陷报告 开源软件系统缺陷报告如何管理和分析( 二 )


修复者推荐是指找到合适的开发人员进行缺陷修复,可以减少相关人员的工作量,提高缺陷修复的效率。有人用机器学习技术推荐缺陷报告修复者。首先提取缺陷报告的摘要和描述字段,通过词干提取、停用词去除等自然语言处理方法将文本转化为词包,然后通过机器学习相关算法推荐修复者。有人提出了一种基于模糊集的算法Bugzie,缓冲每个开发人员的最佳描述词,然后用这些词来衡量开发人员对缺陷报告的适用性。有人讨论了Mozilla和Eclipse开源社区中的缺陷报告修复器重置现象,通过建立修复器关系重置图,采用基于马尔可夫链的图模型,提高了推荐缺陷报告修复器的准确性。
【缺陷报告 开源软件系统缺陷报告如何管理和分析】缺陷报告修复者推荐是缺陷管理和分析自动化的经典研究问题,目前已经有很多相对成熟的工作。这类问题的难点之一就是如何从大量的开发者中找到最合适的与缺陷相关的修复人员。因此,可以将推荐系统、文本挖掘和社会网络挖掘结合起来,进一步提高预测精度。
2.预测缺陷严重程度和优先级
对缺陷严重性和优先级的预测可以帮助开发人员安排工作进度。一般严重程度高的缺陷修复优先级较高。有人通过分析NASA相关系统的缺陷报告,提出了预测缺陷报告严重程度的问题。在此基础上,有人预测缺陷报告是否严重。有些人使用不同的分类算法来预测缺陷报告的严重程度。实验结果表明,多项式朴素贝叶斯效果最好。有人通过集成最近邻搜索和扩展BM25方法来预测缺陷报告的严重程度。
目前,关于缺陷优先级预测的研究很少。缺陷的优先级别不同于缺陷的严重级别。田等指出,“缺陷的严重程度由缺陷报告的提交者决定,而缺陷的优先级由最终修复缺陷的开发者决定”。因此,需要不同的策略来预测缺陷的优先级。田等分析了多特征缺陷报告的优先级别,并建立了logistic回归模型来预测新的缺陷报告优先级别。
预测缺陷的严重程度和优先级的难点在于数据集的不平衡,即只有少数缺陷报告属于严重程度,使得预测精度难以达到理想值,从而影响实际使用效果。这个问题的未来解决方案可以集中在提取表示严重缺陷报告的特征和研究先进的不平衡数据处理机器学习的相关算法。
3.重复缺陷报告的发现
开源软件项目中存在大量的历史缺陷报告,用户和开发者会不断提交新的缺陷报告。新提交的缺陷报告可能会重复历史缺陷报告。开发人员修复这些重复的缺陷会造成资源的极大浪费,导致那些真正的缺陷无法及时修复。因此,研究重复缺陷报告的发现具有重要意义。信息检索算法可以帮助解决发现重复缺陷的问题。这种方法的基本思想是给出一个缺陷报告,并推荐与其相似度最高的缺陷报告作为可能的重复报告。有些人使用vector 空之间的模型来建模缺陷报告,并将其转换为文本特征向量。每个文本向量的值是对应单词的词频和逆文件频率。已经提出将向量空模型与自然语言处理技术相结合来提高预测性能。有些人使用执行轨迹上的信息来发现重复的缺陷报告。有人将BM25与主题模型相结合,提高发现重复缺陷报告的效率。
机器学习相关算法也可以用来解决发现重复缺陷的问题。有人根据缺陷报告的文本特征,利用线性回归方法形成二进制分类器。有人提出了一种判别模型,利用支持向量机来识别重复的缺陷报告。有人基于缺陷报告的不同领域对发现重复缺陷报告的影响,对BM25算法进行了扩展。目前,在重复缺陷报告的发现方面已经做了大量的工作,研究方向也比较成熟。其中,国际会议ASE2013优秀论文奖提出的算法将主题模型与信息检索模型相结合。未来对重复缺陷报告发现的研究需要更加注重与深度学习技术的结合,从而提出更加完善的解决方案。

推荐阅读