Page 146 - 《软件学报》2025年第5期
P. 146
2046 软件学报 2025 年第 36 卷第 5 期
测模型的不完备或不准确. (3) 无法适应版本变化. 软件系统的版本演化导致元素之间的交互模式随之变化, 版本
间交互关系的差异产生数据不足和概念漂移等新问题, 使得模型泛化能力变差甚至失效.
针对上述问题, 本文提出了一种综合考虑局部和全局交互特征的交互关系预测方法 LGCGT, 融入了具有多头
注意力机制的动态归纳式学习模型 Graph Transformer, 并在软件包、类和函数这 3 种粒度上进行了版本内和跨版
本的实验验证. 在这项研究中, 本文将重点围绕以下两个问题进行探讨.
RQ1: 本文 LGCGT 方法是否能够提高软件系统中版本内多粒度交互关系预测能力?
原理: 了解软件系统内部元素之间的交互关系, 有助于理解软件系统的组织架构、快速定位缺陷和减少代码
冗余等作用, 从而提高代码的可读性和可维护性. 但是现有特征提取多是基于局部特征, 将全局位置编码和局部特
征相结合是否有利于提高多粒度交互关系预测能力还有待验证.
RQ2: 对于跨版本多粒度交互关系预测, LGCGT 方法是否优于已有方法?
原理: 软件工程领域中, 跨版本缺陷预测研究已被证明有效. 相比之下, 跨版本交互关系预测研究是否可行还
没有被探索过. 如果通过比较不同版本间的交互关系, 可以识别出系统变化的规律和模式, 这将有助于优化系统迁
移和兼容性, 增强版本管理和引导功能更新. 因此, 本文将测试 LGCGT 方法是否在不同版本间具有良好的泛化性.
2 研究方法
本节详细介绍本文的研究方法, 整体架构见图 1. 主要包含 4 部分: 多粒度软件网络建模、局部和全部特征提
取、图神经网络表征优化和交互关系预测. 具体来说, 首先从项目源码中逆向抽取不同粒度元素的依赖关系, 分别
构建软件包、类和函数粒度网络模型. 其次, 使用 node2vec 嵌入网络节点的局部特征表示, 再同拉普拉斯全局位
置信息特征编码相融合, 得到节点高质量初始化属性. 然后, 将该属性输入两层 Graph Transformer 模型, 每层模型
具有 8 头注意力机制, 进一步优化节点属性的特征向量. 最后, 实现交互关系预测的下游任务.
网络建模 局部+全局特征融合
...
Node attribute λ
关系抽取 节点 x 11 x 12 x 13 ... x1(d−1) x 1d
采样
源文件 ... Embedding x 21 x 22 x 23 ... x2(d−1) x 2d +
...
x m1 x m2 x m3 ... xm(d−1) x md
...
特征优化 ×L
layers
×H
Add & Norm heads Q l , k
features vector
Scaling Product
f 11 f 12 f 13 ... f 1(d−1) f 1d Softmax j
FFN l O l Concat k
f 21 f 22 f 23 ... f 2(d−1) f 2d h h h K l , k
...
f m1 f m2 f m3 ... f m(d−1) f md
Add & Norm l , k
Sum j · V
交互关系预测
±Link +Label Classifier
sampling Predicted 交互关系预测
dataset
图注:
x m1 x m2 x m3 ... x m(d−1) x md λ f 11 f 12 f 13 ... f 1(d−1) f 1d
代码文件 包 类 方法 节点局部特征 全局位 优化特征 Graph 数据集 正负采样 分类器
(图中用颜色区分不同包下的内容) 置编码 Transformer
图 1 研究方法整体架构