paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Software clusterings with vector semantics and the call graph

基于向量语义与调用图的软件聚类
FSE Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering2019匹配度 3/10 · 论文处于机器学习与程序分析的交叉地带(用 Doc2Vec + 调用图做软件模块聚类),与用户的“PL→AI / AI→PL”大方向有遥远关联;但它既非面向 ML 系统或 Agentic 程序的静态分析,也非用 LLM/Agent 改进分析或验证,更不涉及浮点或贝叶斯程序分析,属于传统的软件架构恢复任务。引用 10 inbox
Marios Papachristou
crossref: 2026-09-12

AI 速览

一句话:结合 Doc2Vec 向量语义与调用图,用 Louvain 社区发现实现无需架构知识的软件模块聚类。

论文研究在缺乏软件架构结构信息时,如何自动恢复大型软件系统的模块划分。方法将 Doc2Vec 生成的文件文档嵌入与静态图分析器提供的调用图结合为增广图,再使用 Louvain 算法进行社区发现,从而得到模块级聚类。评估在大型系统上比较多种先进聚类方法,以稳定性、权威性和极端性等指标衡量,并能较好地恢复 Linux 内核的真实模块结构。结果表明,向量语义信息与调用图的结合可为大规模软件聚类提供准确结果。

问题
如何在不知道软件架构结构的情况下,自动、准确地识别大型软件系统的文件模块聚类。
方法
将 Doc2Vec 文档嵌入与静态调用图融合为增广图,并利用 Louvain 算法进行社区发现,得到模块级聚类。
评估
在大型系统上与其他先进聚类方法比较稳定性、权威性和极端性等指标,并检验对 Linux 内核真实模块划分的恢复效果。
原文摘要(Abstract)

In this paper, we propose a novel method to determine a software's modules without knowledge of its architectural structure, and empirically validate the method's performance. We cluster files by combining document embeddings, generated with the Doc2Vec algorithm, and the call graph, provided by Static Graph Analyzers to an augmented graph. We use the Louvain Algorithm to determine its community structure and propose a module-level clustering. Our method performs better in terms of stability, authoritativeness, and extremity over other state-of-the-art clustering methods proposed in the literature and is able to decently recover the ground truth clustering of the Linux Kernel. Finally, we conclude that semantic information from vector semantics as well as the call graph can produce accurate results for software clusterings of large systems.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot5140,
  title = {Software clusterings with vector semantics and the call graph},
  author = {Marios Papachristou},
  booktitle = {FSE},
  year = {2019},
  doi = {10.1145/3338906.3342483}
}