【ICSE'25 论文 | 软件追溯性】从需求到代码,这条链断了多少年了?RAG 来帮它重建软件系统在演化过程中,需求、架构文档和源代码之间的追溯链接(Traceability Link)往往早已断裂。AI 能自动把这些联系重新找回来吗?
英文标题:LiSSA: Toward Generic Traceability Link Recovery Through Retrieval-Augmented Generation发表会议:IEEE/ACM ICSE 2025(第 47 届国际软件工程大会)研究机构:Karlsruhe Institute of Technology (KIT) 等在大型软件项目中,需求文档、架构设计文档和源代码之间的追溯链接(Traceability Links)是软件质量保障、变更影响分析和合规审计的重要基础。然而,这类链接在项目初始阶段建立之后,随着代码和文档的持续迭代演化,往往迅速老化断裂——维护追溯链接本身就是一项极为耗时的工作,实践中常常被优先级较低的任务取代。追溯链接恢复(Traceability Link Recovery,TLR)因此成为软件工程研究的长期命题。传统 TLR 方法依赖信息检索(IR)技术,通过词袋模型或 TF-IDF 等方式度量工件间的词汇相似度,但这类方法对语义差距(Semantic Gap)的处理能力十分有限。这篇 ICSE 2025 的工作提出 LiSSA,将检索增强生成(RAG)引入 TLR 任务,探索 LLM 能否以更具语义感知力的方式恢复追溯链接。一、TLR 的三类核心任务与语义挑战
LiSSA 聚焦于三种具有代表性的 TLR 任务,论文 Figure 1 以一个具体的图像处理软件系统为例,展示了四类工件(需求文档、源代码类、组件架构、架构文档)以及跨它们建立追溯链接的三类任务,直观呈现了 TLR 所面临的多样化场景。● 需求到代码的追溯(Requirements-to-Code):将需求条目映射到实现该需求的代码类或方法;● 架构文档到代码的追溯(Architecture Documentation-to-Code):将描述系统架构的文档段落映射到对应的代码组件;● 架构文档到架构模型的追溯(Architecture Documentation-to-Architecture Model):将架构文档中的描述映射到形式化的架构模型实体。这三类任务共同的挑战在于:文档和代码使用的是不同层次的语言——需求用自然语言描述业务意图,代码用技术命名表达实现细节,两者之间存在显著的词汇鸿沟(Lexical Gap)和语义鸿沟(Semantic Gap)。传统 IR 方法对词汇重叠度的依赖,使其在处理这类跨语义层次的追溯时效果欠佳。二、LiSSA 的 RAG-based 架构
LiSSA(Linking Software System Artifacts)的核心设计是将 RAG 范式应用于 TLR,其整体工作流由论文 Figure 2 展示,涵盖了工件预处理、检索、LLM 生成与链接判断的完整 pipeline。第一步是工件预处理。LiSSA 针对不同类型的工件(需求文本、代码、架构文档等)设计了对应的预处理器,将工件转化为适合检索的形式,包括代码文件的结构提取(类名、方法签名等)和自然语言文档的语义分块。第二步是检索(Retrieval)。对于给定的查询工件(如一条需求),LiSSA 使用基于嵌入的语义相似度检索,从候选工件库(如代码库)中召回最相关的候选工件。这一步引入了 LLM 的语义编码能力,能够捕捉词汇不重叠但语义相关的工件对。第三步是 LLM 生成与链接判断。将查询工件和检索出的候选工件组合输入 LLM,要求模型基于语义理解判断两者之间是否存在追溯关系,并给出判断依据。LLM 的生成输出同时提供了链接存在性判断和支撑该判断的自然语言解释,具备一定的可解释性。三、实验结果:代码相关任务显著超越最新方法
研究者在多个包含不同类型工件的开源项目数据集上,针对上述三类 TLR 任务进行了系统评估,对比方法包括多个当前最优的 IR-based 和 ML-based TLR 方法。● 在需求到代码和架构文档到代码这两类涉及代码的 TLR 任务上,LiSSA 的 RAG 方法相比最优基线取得了显著的性能提升,LLM 的语义理解能力在跨越词汇鸿沟方面发挥了明显作用;● 在架构文档到架构模型这一任务上,RAG 方法的提升幅度相对有限。研究者分析认为,这类任务涉及更结构化的形式化工件,LLM 的自由生成能力在此场景下的优势不如代码相关任务突出,仍需进一步研究;● 不同 LLM 骨干模型(包括 GPT 系列和部分开源模型)在 LiSSA 框架下的表现差异说明,模型的代码和技术文档理解能力是影响 TLR 效果的重要因素。四、TLR 的研究意义与 RAG 的适配性
追溯链接恢复在软件工程实践中有多个重要应用场景:变更影响分析(修改某条需求时,快速定位所有受影响的代码)、合规审计(证明代码实现满足特定需求)、代码理解(帮助新成员理解代码与需求的映射关系)。LiSSA 的工作说明 RAG 为这类任务提供了一种通用且适应多种工件类型的技术路线,避免了针对每对工件类型分别设计专用方法的高昂开发成本。五、总结与启示
LiSSA 代表了 RAG 技术在软件工程领域一个较为系统的落地探索,其在代码相关 TLR 任务上的显著提升,为该方向的后续研究提供了清晰的起点与参考基准。●RAG 结合 LLM 在代码相关 TLR 任务上能够有效弥补传统 IR 方法的语义鸿沟局限,这对软件维护和演化分析工具的开发具有直接的工程参考价值;● LiSSA 面向多类型工件的通用设计思路,与当前软件工程 AI 工具中"一个框架支持多任务"的整体趋势一致,有助于降低大规模工具落地的集成成本;● 在纯形式化工件(如 UML 模型)之间的 TLR 上,纯语言模型方法的局限仍然存在,结合图结构分析或形式化推理可能是提升这类任务效果的必要补充;● 对于长期缺乏追溯链接维护能力的中大型软件团队,LiSSA 类工具提供了一条从现有代码库和文档中重建追溯信息的可行路径,有助于降低技术债务中的"追溯欠缺"部分。ICSE 2025 DOI:https://doi.ieeecomputersociety.org/10.1109/ICSE55347.2025.00186素材来自于网上公开开源内容,内容经LLM辅助,如有侵权,随时可删。 更多信息请关注本公众号。
喜欢就关注哦