Page 145 - 《软件学报》2025年第5期
P. 145

邓文涛 等: 基于图神经网络的多粒度软件系统交互关系预测                                                    2045


                 model, LGCGT), 综合考虑了软件系统的局部交互和全局交互特征, 并将二者相结合, 从而提高链路预测的准确性. 具
                 体来说, 首先获取开源软件项目, 使用解析工具逆向提取多种元素粒度, 从而构建软件网络模型, 然后使用                             node2vec
                 方法学习软件网络的局部节点特征, 并结合拉普拉斯特征向量编码以综合表征节点的全局位置信息. 随后, 利用
                 Graph Transformer 模型进一步优化节点属性的特征向量, 最终完成软件系统的交互关系预测任务. 为了最大程度评估
                 模型的预测准确率、增强模型的泛化能力和可靠性, 本研究采用十折交叉验证                       [14] 来确保实验的可靠性和准确性.
                    本文针对软件系统中交互关系预测任务展开研究, 主要贡献归纳如下.
                    (1) 提出了一种综合考虑局部和全局交互特征的交互关系预测方法                      LGCGT. 针对软件系统中复杂的网络结
                 构, 分别构建了包、类和函数粒度的软件网络模型, 充分利用软件系统中元素的局部结构特征和全局位置特征, 结
                 合图神经网络模型, 提高了软件系统的表征能力和多粒度软件系统交互关系预测的准确性.
                    (2) 在多个  Java  开源项目上进行了广泛实验验证, 在版本内和跨版本的多粒度交互关系预测任务中, 平均
                 AUC  和  AP  值均有提升, 证明了本方法对软件系统动态变化的适应性.
                    本文第   1  节归纳介绍该研究领域的相关工作. 第           2  节介绍本文的理论基础和研究方法. 第           3  节给出实验设计
                 及结果分析. 第    4  节概述实验的问题、意义和不足. 第          5  节讨论对研究结果有效性构成威胁的原因. 第             6  节是全文
                 工作总结.

                 1   相关工作

                    软件系统中交互关系预测, 旨在探究软件系统中不同组件或模块之间的连接方式或潜在关联. 随着软件规模
                 增大、功能增多、演化加快, 各文件间的交互关系也愈发错综复杂, 这个过程中可能会产生不合理的关系设计, 若
                 不对软件系统全局结构做出适当调整, 可能会产生软件衰退或软件设计偏移等现象, 从而加重维护成本                                  [15,16] . 因
                 此, 如何准确预测软件系统中缺失关系或已存在关系的合理性, 对优化软件架构和提高软件质量有重要意义.
                    早期软件交互关系预测使用的是链路预测的方法来研究软件网络, 其原因在于软件系统中, 节点代表各种构
                 成要素   (如函数、模块等), 通过分析它们之间的关联, 能有效预测系统元素间的交互行为. 该类方法基于节点的拓
                 扑结构和相似性来推断节点间的未来连边, 为理解软件结构和元素间的潜在关系提供了有价值的工具和方法. Xu
                 等人  [17] 基于局部信息的相似性度量方法提出一种新的链路预测算法, 该算法考虑了待预测节点对之间共同邻居
                 的数量和紧密程度. Sun     等人  [18] 提出一种基于图形马尔可夫模型的关系信息来设计相似性指数. Chen                  等人  [19] 提出
                 一种增强型局部路径链路预测相似度指标, 该方法认为三阶路径的贡献应该与路径两端节点的度有关. Xia 等人                                [20]
                 基于  Makefile 构建了一个依赖图用以捕获        Makefile 中定义的各种依赖关系, 将依赖挖掘问题映射到链路预测的
                 相似性问题, 证明了这一方法的有效性.
                    近年来, 深度学习在非欧氏结构的图数据处理中展现了强大的能力并取得了显著成果, 为软件交互关系预测
                 提供了一种全新方法. 该方法基于图嵌入的思想, 是使有连边的节点在向量空间内的特征表示更加相似. Chen                                等
                 人  [21] 提出一种基于深度非负矩阵分解的链路预测模型, 该模型有效的融合了拓扑和稀疏约束来执行链路预测任
                 务, 且准确率较高. Nicholson  等人  [15] 通过数据驱动的方法自动评估问题链接的类型, 并在              66  个开源项目的跟踪系
                 统上分析了各标签之间的联系, 设计了一种监督学习的交互预测方法. 实验表明, 当有足够的历史数据时, 该项工
                 作的未来链接标签预测方法的准确率是令人信服的. Liao                 等人  [22] 提出一种基于随机游走和深度信念网络的机会
                 网络链路预测新方法        (IRWR-DBN), 计算了每个指标的相似度矩阵, 提取了机会网络动态演化过程中的时域特征.
                 Islam  等人  [23] 比较了基于相似性和基于    GNN  的链路预测方法, 得出了基于         GNN  的方法优于基于相似性的方法,
                 但是基于相似性的方法处理速度则快于              GNN  的方法等结论. Diaz-Pace 等人    [24] 使用链路预测和机器学习技术对
                 两个跨多个版本的       Java 项目进行了评估, 评估了从一个项目版本到下一个版本的新依赖关系方面的准确率, 表明
                 链路预测方法对于包依赖性是可行的, 此外也为进一步开发用于依赖性预测的软件提供了特定策略.
                    综上所述, 虽然针对软件系统中交互关系预测的研究取得了丰硕的成果                        [15−24] , 但是依旧存在如下难点: (1) 粒
                 度差异. 软件系统涉及多种元素粒度           (如软件包、类和函数等), 不同粒度间的交互关系建模复杂. (2) 特征不足. 传
                 统方法大多只考虑元素的局部交互信息, 难以全面考虑到局部和全局交互特征对于交互关系的综合影响, 导致预
   140   141   142   143   144   145   146   147   148   149   150