近年来,大语言模型(Large Language Models, LLMs)的能力持续提升,在自然语言处理、计算机视觉、多模态理解等任务上均取得了优异表现,并逐步应用于软件开发的实际场景。目前,代码生成、缺陷修复、测试生成、程序理解等任务已普遍引入 LLM,软件工程的智能化水平显著提高。然而,要全面把握这一发展态势并非易事:现有综述大多聚焦于传统机器学习、深度学习与软件工程的结合(ML4SE、DL4SE),且讨论范围常局限于个别子方向,难以完整呈现当前 LLM4SE 的整体格局。当前研究亟需一项覆盖范围广、任务划分细、样本规模大的系统性调研,以厘清模型的发展脉络、架构类型、预训练方式与下游任务之间的关系,并明确 LLM 在需求、开发、测试、维护、管理各环节中所面临的挑战与机遇。
为此,iSE实验室张犬俊博士以三个研究问题(RQ)作为主线,对上述问题分别给出了系统回答,具体包括:哪些 LLM 被提出以服务于软件工程任务(RQ1,大模型视角)、LLM 已能够支持哪些软件工程任务(RQ2,软工任务视角),以及将 LLM 集成至软件工程时存在哪些关键因素(RQ3,融合视角)。该研究归纳总结了62个具有代表性的代码大模型,涵盖Encoder-only、Decoder-only和Encoder-Decoder三大主流架构、15种预训练目标以及16类典型下游任务,并系统分析了各模型的开源可用性与代码任务支持能力。在软工任务视角下,该研究围绕软件工程的需求、开发、测试、维护和管理五大阶段,系统梳理了926篇研究中涉及的112种具体任务类型,涵盖需求建模、代码生成、缺陷检测、测试生成、程序修复和项目管理等,构建出大语言模型驱动的软件工程任务图谱。此外,研究团队建立并持续维护开放知识库 AwesomeLLM4SE(https://github.com/iSEngLab/AwesomeLLM4SE),用于追踪最新研究进展并支持开源社区协作,推动LLM4SE研究的系统化与可持续发展。

针对 RQ1,张博士梳理了 62 个具有代表性的代码大模型,按 Encoder-only、Decoder-only、Encoder-Decoder 三类架构进行归纳,整理出 15 种预训练目标与 16 类典型下游任务,并逐一分析了各模型的开源情况及其对代码任务的支持能力。分析表明,主流架构已由早期的 Encoder-only、Encoder-Decoder 明显转向 Decoder-only,模型在代码生成与理解方面的能力随之增强;随着预训练语料中代码比例不断提高,模型所掌握的知识由自然语言扩展至程序语言,形成自然语言与源代码双模态联合训练的格局,使模型从"理解代码"进一步发展为"能够编程、能够进行代码推理"。在开源方面,超过八成的模型公开了实现或权重,有力促进了社区协作与开放科学的发展。
针对 RQ2,张博士围绕需求、开发、测试、维护、管理五个阶段,对 926 篇文献中涉及的 112 种任务类型进行了归并,涵盖需求建模、代码生成、缺陷检测、测试生成、程序修复、项目管理等,进而构建出一幅由 LLM 支撑的软件工程任务全景。研究发现,各类任务的关注度并不均衡:开发与测试两个阶段合计占比超过七成,主要集中于代码生成、自动补全、测试生成、缺陷修复等任务,而需求建模、设计分析、项目管理等环节相对薄弱,仍有较大的拓展空间。这一趋势表明,LLM 的角色正在发生转变,由单纯的开发辅助工具逐步向能够主动参与协作的主体演进,但其在不同任务上的成熟度仍存在明显差异。
针对 RQ3,张博士归纳了模型落地过程中难以回避的若干问题,涉及评测基准的构建、模型的可靠性与安全性、领域微调策略,以及模型压缩与知识蒸馏等,并对其中的典型技术路线、共性难点与可复用经验进行了总结。研究指出,模型在多数任务上虽已具备可观的代码能力,但一旦进入真实工程环境,便面临性能不稳定、幻觉输出、潜在安全漏洞、评测体系缺失等问题;研究重心也因此由性能优化转向可信性、安全性与工程化的融合,统一评测基准、领域微调、知识蒸馏、模型压缩等思路被反复探索,检索增强、人机协作、多智能体等框架亦被陆续引入,以增强模型的可解释性与可约束性。

在此基础上,该研究进一步探讨了仍待解决的挑战与相应机遇,大致可归纳为三个层面。其一为模型部署,模型参数规模的不断扩大虽带来了性能的提升,却也显著增加了训练与推理成本,使其难以在移动端、嵌入式等资源受限设备上运行,因此如何在保持性能的前提下压缩模型规模(包括剪枝、量化、知识蒸馏及分布式与轻量化方案)值得持续投入;类似地,现有模型多为通用设计,包含大量与具体任务无关的知识,面向单元测试、代码编辑等特定场景构建专用领域模型往往更具价值;此外,模型大多以黑盒形式输出结果,开发者难以判断其可靠性,引入可解释技术或借鉴传统规则方法的透明性,是提升结果可信度的可行路径。其二为领域泛化,LLM 目前在开发、测试、维护等阶段应用较多,而在需求工程、软件设计、软件管理等方向仍较为薄弱,对这些环节而言,将 LLM 作为组件嵌入既有研究流程通常比构建端到端方案更为务实;同时,软件工程中存在大量以图像为输入的场景(如 GUI 测试),值得借助多模态模型将文本、代码与界面信息相结合;此外,开源生态既为模型提供了训练数据,自身也因模型的引入而改变着协作方式,从代码生成、Issue 处理到代码评审,人与智能体的协作模式有待深入探索。其三为模型评测,由于训练语料几乎取自全网公开仓库,评测集易与之重叠而产生数据泄漏,构建未受污染的"干净"基准并设法识别模型是否存在数据记忆,显得尤为关键;另一方面,现有基准多集中于少数热门任务,评价维度也偏重性能指标,未来应覆盖更多任务类型,并将鲁棒性、效率等维度纳入评估。
总体来看,大语言模型正推动软件工程从"自动化"迈向"智能化",实现从"以语言驱动代码"到"以代码塑造模型"的跃迁。该研究为理解和把握LLM4SE领域的发展脉络提供了系统性参考,为后续研究的选题与开展提供了重要指引。相关成果《A Survey on Large Language Models for Software Engineering》已发表于中国计算机学会推荐A类(CCF-A)期刊Science China Information Sciences(《中国科学:信息科学》英文版),论文第一作者张犬俊为iSE实验室博士毕业生,南京大学为第一完成单位。
夜雨聆风