一句话:结合 Doc2Vec 向量语义与调用图,用 Louvain 社区发现实现无需架构知识的软件模块聚类。
论文研究在缺乏软件架构结构信息时,如何自动恢复大型软件系统的模块划分。方法将 Doc2Vec 生成的文件文档嵌入与静态图分析器提供的调用图结合为增广图,再使用 Louvain 算法进行社区发现,从而得到模块级聚类。评估在大型系统上比较多种先进聚类方法,以稳定性、权威性和极端性等指标衡量,并能较好地恢复 Linux 内核的真实模块结构。结果表明,向量语义信息与调用图的结合可为大规模软件聚类提供准确结果。
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 原文 ·
@inproceedings{paperbot5140,
title = {Software clusterings with vector semantics and the call graph},
author = {Marios Papachristou},
booktitle = {FSE},
year = {2019},
doi = {10.1145/3338906.3342483}
}