跳到正文
研踪PaperTrail
← 研踪 PaperTrail

软件学报:jos:7556 · 记录 #1

面向复杂头文件的自动化分解与重构方法

来源日期 2026-01-07
来源记录日期 2026-01-07
雷达观测 2026-11-01 16:34
软件学报 ↗PDF ↗

摘要

许多代码文件随着软件演化逐渐膨胀并承担了过多职责, 严重影响了软件的可维护性和可理解性. 开发者常需要重构这些文件, 将一个大的代码文件分解成多个较小的子文件. 现有研究工作主要聚焦类文件的分解重构, 并不完全适用于分解复杂头文件. 这是因为分解头文件面临一些独有的挑战: 既需要考虑整个软件项目的构建依赖以降低编译成本, 也需要确保分解后的子文件之间不会存在循环依赖. 为此, 提出一种面向复杂头文件的自动化分解与重构方法——HeaderSplit. 该方法首先为复杂头文件构造蕴含多种代码关系的代码元素图, 其中就包括体现项目构建依赖的共同使用关系; 然后通过节点合并与多视图聚类算法识别关联紧密的代码元素聚类; 随后引入启发式的循环依赖修正算法生成可行的文件分解方案. 用户确认分解方案后, HeaderSplit能够自动执行重构, 生成新的子文件内容, 并更新软件项目内直接或间接引用原头文件的代码语句. 在合成复杂头文件与真实复杂头文件上对HeaderSplit进行评估, 结果表明: 1) HeaderSplit在准确率上比现有方法提升了11.5%, 并且具有更强的跨软件项目稳定性; 2) HeaderSplit分解得到的子文件模块度更高且无循环依赖, 具有更好的架构设计; 3) 使用HeaderSplit分解复杂头文件可以降低其演化历史中15%–60%的重编译成本; 4) HeaderSplit可以高效实施自动化重构, 在5 min以内完成百万行软件项目内的头文件分解重构, 具有很高的实用价值.

论文发现出处

这些页面提供论文线索,不代表同行评审或质量认证。

AI 论文解读

基于摘要 · 非全文审阅

此版本尚未生成 AI 解读。解读由后台任务生成并按论文版本保存,登录后共享已有结果。

发表信息与关联版本

软件学报 ↗

2026 · 正式发表 · DOI: 10.13328/j.cnki.jos.007556

版本差异

目前只观测到一个版本,无法比较变化。之后收录新版本时,会在这里对照标题、作者、分类和摘要。

观测到的版本

平台记录号代表本站观测到的元数据变化,不是作者修订号。来源日期仅到月份或年份时,按该月或该年首日存档。

记录 #1 · 2026-01-07 · 最新观测版本

面向复杂头文件的自动化分解与重构方法

许多代码文件随着软件演化逐渐膨胀并承担了过多职责, 严重影响了软件的可维护性和可理解性. 开发者常需要重构这些文件, 将一个大的代码文件分解成多个较小的子文件. 现有研究工作主要聚焦类文件的分解重构, 并不完全适用于分解复杂头文件. 这是因为分解头文件面临一些独有的挑战: 既需要考虑整个软件项目的构建依赖以降低编译成本, 也需要确保分解后的子文件之间不会存在循环依赖. 为此, 提出一种面向复杂头文件的自动化分解与重构方法——HeaderSplit. 该方法首先为复杂头文件构造蕴含多种代码关系的代码元素图, 其中就包括体现项目构建依赖的共同使用关系; 然后通过节点合并与多视图聚类算法识别关联紧密的代码元素聚类; 随后引入启发式的循环依赖修正算法生成可行的文件分解方案. 用户确认分解方案后, HeaderSplit能够自动执行重构, 生成新的子文件内容, 并更新软件项目内直接或间接引用原头文件的代码语句. 在合成复杂头文件与真实复杂头文件上对HeaderSplit进行评估, 结果表明: 1) HeaderSplit在准确率上比现有方法提升了11.5%, 并且具有更强的跨软件项目稳定性; 2) HeaderSplit分解得到的子文件模块度更高且无循环依赖, 具有更好的架构设计; 3) 使用HeaderSplit分解复杂头文件可以降低其演化历史中15%–60%的重编译成本; 4) HeaderSplit可以高效实施自动化重构, 在5 min以内完成百万行软件项目内的头文件分解重构, 具有很高的实用价值.

查看此版本解读 →查看此版本原文 ↗