面向软件工程的AI智能体最新进展,复旦、南洋理工、UIUC联合发布全面综述

本文转发自机器之心

彭鑫教授,娄一翎青年副研究员,数据科学重点实验室成员


本篇综述的作者包括来自复旦大学 CodeWisdom团队的研究生刘俊伟、王恺欣、陈逸轩和彭鑫教授、娄一翎青年副研究员,以及南洋理工大学的陈震鹏研究员和伊利诺伊大学厄巴纳 -香槟分校(UIUC)的张令明教授。

自从首个全自动 AI软件工程师 Devin问世以来,面向软件工程的 AI智能体广受关注、层出不穷,例如最近的 GenieReplitCursor等,它们正在对传统软件开发的范式产生着深刻影响。基于大模型的 AI智能体(LLM-based Agents,后简称 Agent)通过增强推理、记忆、规划以及使用拓展工具的能力,极大地提升了大模型解决复杂软件开发维护任务的能力,为进一步实现自动化、智能化的软件开发提供了新思路。AI智能体正在成为软件工程领域的研究新热潮。

复旦大学 CodeWisdom团队联合南洋理工大学、UIUC共同对 106篇相关文献进行梳理和解读,分别从软件工程和 Agent两个视角全面展现了 Agent在软件工程领域的最新进展。从软件工程视角,该综述梳理了 Agent在软件开发全周期各个任务上的应用现状;从 Agent视角,该综述展示了目前应用于软件工程领域的 Agent的基础架构、多智能体设计模式以及人机协同模式。最后,该综述展望了 Agent在软件工程领域的研究机会与发展方向。


论文地址:https://arxiv.org/pdf/2409.02977



Agent4SE论文列表:https://github.com/FudanSELab/Agent4SE-Paper-List



一、Agent覆盖软件开发维护全流程


如图 1所示,目前 Agent已基本覆盖了软件开发和维护的全流程,不仅可以解决某个特定的软件开发环节(例如静态检查和测试),而且在应对更复杂的端到端的软件开发和维护任务上也表现出了巨大潜力,包括:



端到端软件开发(End-to-end Software Development):Agent通过执行多种开发子任务,包括需求工程、设计、代码生成和质量保证(包括静态检查和测试等),完成从需求到最终程序的全流程开发。



端到端软件维护(End-to-end Software Maintenance):Agent支持多种维护活动,如故障定位、修复和特性维护,完成从问题报告到补丁生成的端到端维护。


1:软件开发与维护任务流程上的 Agent分布


端到端软件开发


目前面向端到端软件开发的 Agent主要模拟真实的软件开发团队,设计不同的软件开发角色,互相协作共同完成软件开发任务。


1:面向端到端软件开发任务的 Agent文献列表


其中,有些 Agent在工作流设计上主要遵循了现实软件开发中常见的软件过程模型,包括瀑布模型和敏捷开发(测试驱动开发和 Scrum)。


2:面向端到端软件开发的 Agent中采用的过程模型


端到端软件维护


目前,面向端到端软件维护任务的 Agent遵循着 “缺陷定位 -补丁生成 -补丁验证” 的基本工作流程;在此基础上,不同 Agent选择性地引入了预处理、故障重现、任务分解、补丁排名等步骤。


2:面向端到端软件维护任务的 Agent文献列表


3:面向端到端软件维护任务的 Agent中常用的工作流


这类 Agent往往以 SWE-bench及其衍生的数据集作为评测基准。


4:端到端维护软件任务的数据集演化示意图


特定的软件开发 /维护任务


除了端到端的软件开发和维护任务,目前 Agent在面向单个特定的软件开发或维护环节也有着广泛应用,包括需求工程、代码生成、代码静态检查、测试、缺陷定位与修复等。该综述梳理了面向特定不同软件开发 /维护任务的 Agent的工作流。


5:面向特定软件开发 /维护环节的 Agent工作流


二、面向软件工程的 Agent设计


根据 Agent的基础结构划分(即 规划(Planning)、记忆(Memory)、感知(Perception)、行动(Action)),该综述进一步总结目前面向软件开发和维护的 Agent在每部分的设计特点。


Agent中的常用工具


为了进一步提升 Agent在软件开发和维护任务上的能力,目前 Agent的行动模块中集成和使用了大量的工具,主要包括搜索、文件操作、静态程序分析、动态分析、测试、版本管理工具等。


6:面向软件开发和维护的 Agent中的常用工具分类


人机协作范式


目前在面向软件开发维护任务上,开发者和 Agent的协作主要发生在规划、需求工程、开发和评估四个环节。主要的协同方式,是由人类提供反馈,引导、澄清或直接纠正 Agent的输出。


7:面向软件开发和维护任务的 Human-Agent协作范式


三、未来的研究方向


该综述进一步探讨了面向软件开发和维护的 Agent的未来研究方向。


更全面的评测基准和更真实的评测数据。当前针对软工任务的 Agent的评测主要集中在其端到端解决特定任务的能力上,缺少对决策过程和失败原因的深入分析,以及对鲁棒性等可信指标以及效率指标的关注。此外,当前用于评测 Agent的数据集也存在一些问题,如逻辑过于简化,与现实场景相差较远等。因此,设计更多样化的评估指标和构建更高质量、更现实的数据集基准是准确评估 Agent能力的重要方向。


探索人机协同新范式。当前针对软工任务的 Agent人机协同主要局限于需求工程、设计、测试评估等环节,同时缺少对高效友好的交互接口的系统研究。因此,未来研究可关注于拓展人机协同的应用场景,以及提供更加流畅的人机协作模式。


多模态感知。目前针对软工任务的 Agent主要依赖于文本或视觉感知。探索和整合多样化的感知模态,如语音命令或用户手势,会显著提高 Agent编码助手的灵活性和可访问性。


Agent应用于更多软工任务。尽管现有的 Agent已经被部署在各种软工任务中,但一些关键阶段(如设计、验证和功能维护)仍未被充分探索,为这些阶段开发 Agent系统可能会面临各方面的新挑战。


训练面向软件工程的基座大模型。目前 Agent通常构建在以通用数据或者代码数据为主要训练数据的大模型之上,而软件开发的全周期往往涉及设计、架构、开发者讨论、程序动态执行、历史演化等代码以外的重要信息。有效利用这些信息可以构建面向软件工程领域的基


将软件工程领域知识融入 Agent设计。正如最近 Agentless研究所揭示,流程复杂且高度自主的 Agent在某些软件维护任务上的效果不如基于传统缺陷定位和程序修复流程所设计的简单工作流。软件工程领域的经典方法论和思想对于设计 Agent的工作流有着重要的借鉴和指导意义,可以进一步提高 Agent解决方案的有效性、鲁棒性和效率。


友情链接
联系我们
地址: 中国 上海市杨浦区淞沪路2005号复旦大学江湾校区2号交叉学科楼
邮编: 200438
电话: +86-21-31242153
传真: +86-21-31242153
E-mail: dataology@fudan.edu.cn