内容
用大模型的方法还原实际架构为原始设计架构
我的思考(不能白读啊):上一篇软件论文里,提到微服务的应用,其中场景之一就是“随着需求的扩展,实际软件结构脱离原始设计,此时改用微服务架构,接耦合的同时增加资源的利用效率,比如淘宝的订单模块。”
方法
总体描述:
构建关系图存储代码间的隐形逻辑,通过逐个文件生成功能总结、喂大模型软件架构与设计方面的知识,让大模型读懂 “代码意图 + 设计思路”。先定组件核心(由具备相关知识的大模型负责),再让相关代码向组件靠拢,最终形成模块。
结合图示对方法进行说明
通过工具(ENRE)提取显式依赖(如 import、函数调用)和隐式依赖(如动态语言的反射、鸭子类型),并设置关系权重得到w1
大模型给每个文件写功能描述(比如 “imalloc.c 实现安全内存分配”),再通过语义相似度计算:把功能描述转成语义向量,计算文件间的相似度,强化语义相关的边权重,得到w2
通过拥有软件架构知识的LLM,识别软件采用的架构,输出该架构的核心组件(componentk)
以核心组件(componentk)为锚点,计算文件与组件锚点的语义相似度,给文件打上候选组件标签,再强化同组件文件的边权重,得到w3
在 W3上用社区发现算法,把紧密关联的文件聚成模块,输出:最终的架构模块划分图d

结果
在15 个不同语言(C/C++、Java、Python)的软件项目,SemArc 平均比其他方法准32 个百分点,比目前最好的方法 SARIF 还准 11 个百分点;
