Page 128 - 《软件学报》2025年第9期
P. 128
谢生龙 等: 基于多模态融合的软件缺陷协同分派方法 4039
设性参考.
以上为本文的研究背景. 本文第 1 节介绍 3 类 bug 分派方法与相关研究工作. 第 2 节介绍本文所需的基础知
识, 包括 bug 分派的定义, bug 向量和开发人员向量的初始化等. 第 3 节详细介绍 CBT-MF 方法步骤. 第 4 节通过
一系列实验验证所提方法的优越性和有效性. 第 5 节对本文的工作进行总结与展望.
1 相关工作
本文主要研究如何融合多模态数据进行软件 bug 的协同分派, 实现更高效、更准确的 bug 修复. 本节将从文
本分类、相关性分析及推荐这 3 个方面的 bug 分派技术出发, 对相关工作进行阐述.
1.1 基于文本分类的 bug 分派
Bug 分派长期以来被认为是一种文本分类问题 [17] . 早期就有学者研究了基于文本分类的 bug 分派方法, 他们
将每个开发者看作是一个类标签, 而将 bug 报告作为分类的对象, 对其进行分类预测, 大量的实验也证明了该类方
法的有效性 [5,18] . 后来, 为了进一步提高 bug 分派的效率, 诸如支持向量机 (SVM) [7,18] 等机器学习技术逐步应用于
[5]
bug 分派的研究中. 例如, CBR 将 bug 文本转换为向量, 并使用 SVM 分类器对它们进行分类后分派. 再后来, 随
着自然语言处理技术的发展, 一些研究借助循环神经网络 [19] 等模型增强了 bug 报告的语义表示. 如, DBRNN-A [16]
作为一种深度双向带注意机制的递归神经网络, 能够在更长的上下文中保留单词的顺序和语义关系. 然而, 此类方
法多数是基于收集的 bug 报告数据集进行的, 其中普遍存在不均衡性问题 [10] . 原因在于, bug 数据在软件模块中的
分布大致符合帕累托法则. 例如, 在实际的 bug 数据集中, 高活跃度开发者的 bug 修复数量要远超过低活跃度开发
者修复的 bug 数量, 这导致分类模型在预测时偏向高活跃度开发者, 而对低活跃度开发者的预测精度较低. 因此,
在分类的过程中难以对低活跃度开发者修复的 bug 进行有效的预测. 故这类方法只适用于 bug 数据较为均衡的情
形. 此外, 在这些分类模型中, 通常将开发人员作为简单的标签, 事实上开发人员的编程兴趣可能比较广泛, 以至于
用简单的标签不足以表征其 bug 修复的经验或特长. 于是部分研究工作就把希望寄托在了与开发人员有关的上下
文信息, 比如他们在开源代码管理平台上的活动 [20] 和提交 bug 报告的历史记录 [21] 等. 尽管获取到的这些信息与开
发人员的兴趣或能力有关, 但是仅凭分类模型还是难以深入地挖掘 bug 与开发人员之间的相关性, 这在很大程度
上影响了 bug 分派效能.
1.2 基于相关性分析的 bug 分派
从分派的结果来看, bug 分派是 bug 报告与开发人员的匹配问题, 其主要任务是相关性分析. 因此, 有研究人
员提出了诸如图学习等信息检索的方法来捕获他们之间的相关性. 例如, GRCNN [22] 作为一个图循环卷积神经网
络, 采用一种映射变化的方法来学习每个节点的时空隐含表示, 并取得了较好的效果; BERT [23] 在对现有的目标模
型微调后, 能够为手动分类的历史记录添加新开发人员; Yang 等人 [24] 提出了一种基于多特征模型和主题模型的
bug 严重性预测方法, 希望提升 bug 分派效能. 然而, 这类方法的基本观点是, 认为具有某种 bug 专业知识的开发
人员就能够解决与其相似类型的新 bug. 因此, 不难看出这类技术同样是基于 bug 报告中开发人员过去修复的
bug 和新 bug 的相似性进行的, 这同样存在文本分类技术遇到的问题.
为了缓解这一问题, 近年来有部分研究将相关性分析工作的重点从 bug 报告文本转向了与其有关的图模态数
[15]
据. 例如, PMGT 采用共同的用户活动来关联项目, 并基于多源辅助信息构建一个同质的项目关系图, 从而为项目
的推荐提供了统一的相关性视图. 此外, 二部图作为一种特殊的图模态数据, 是软件维护过程中描述二元关系的有
效工具, 其能够通过边来增强节点之间的语义关系, 进而支持实体相关性分析, 现已被广泛用于与相关性分析有关
的场景中. 例如, 在电商平台中 [25,26] , 为了构建用户和商品之间的关系, 可以将用户和商品分别看作二部图的两个集
合, 从而实现个性化商品匹配; 在社交网络中 [27,28] , 可以将所有用户分为两个不同的集合, 分别表示用户和其好友,
从而基于二部图来挖掘用户和好友之间的关系. 二部图在这些场景中的广泛应用, 为本文的研究工作提供了启发.
1.3 基于协同推荐的 bug 分派
推荐系统也常被用于 bug 报告的分派, 尤其是基于 CF 的推荐系统, 其可以将用户和项目视为独立的个体. 例

