SWE 软件工程

SWE 软件工程

总览

2025-06-23 11:46:23 Monday | Amazon Q Developer https://mp.weixin.qq.com/s/8JfR11MUxZneJBDnLDCX_g

250609|SWE-Flow:以测试驱动方式合成软件工程数据

250607|SWE-Dev:构建具备训练与推理扩展能力的软件工程智能体

250516|SWE-Dev:评估与训练自主功能驱动的软件开发

概念

软件开发方法论

by豆包

是指导软件开发过程的哲学和实践框架,它们各有侧重,适用于不同的项目需求和团队文化。

以下是对主流方法论的系统整理,包括核心特点、适用场景和典型工具:

一、敏捷开发(Agile Development)

核心思想 :快速迭代、客户反馈、团队协作,应对需求变化。

典型方法

  1. Scrum
    1. 特点 :通过短周期迭代(Sprint)、每日站会、产品待办列表(Backlog)管理项目。
    2. 角色 :产品负责人(Product Owner)、Scrum Master、开发团队。
    3. 工具 :Jira、Trello、Azure DevOps。
  2. Kanban
    1. 特点 :可视化工作流程(看板),限制在制品(WIP),持续交付。
    2. 适用场景 :需求稳定、流程明确的项目。
    3. 工具 :Notion、Monday.com、GitHub Projects。
  3. 极限编程(XP, Extreme Programming)
    1. 特点 :结对编程、测试驱动开发(TDD)、持续集成、现场客户。
    2. 实践 :小型发布、简单设计、重构、集体代码所有权。

二、测试驱动开发(TDD, Test-Driven Development)

核心思想 :先写测试,再实现代码,最后优化(红-绿-重构)。

流程

  1. 编写测试用例 (失败状态)。
  2. 实现功能代码 (使测试通过)。
  3. 重构代码 (优化结构,保持测试通过)。

工具 :JUnit(Java)、PyTest(Python)、Jest(JavaScript)。

适用场景 :对质量要求高、需要频繁重构的项目。

三、行为驱动开发(BDD, Behavior-Driven Development)

核心思想 :以用户行为为中心,通过自然语言描述需求(Gherkin 语法)。

流程

  1. 编写场景 (Given-When-Then)。
  2. 实现自动化测试 (Cucumber 或 SpecFlow)。
  3. 开发功能 (使测试通过)。

工具 :Cucumber(多语言)、Behave(Python)、SpecFlow(.NET)。

适用场景 :需要跨团队协作(开发、测试、产品)的项目。

四、功能驱动开发(FDD, Feature-Driven Development)

核心思想 :以功能为单位,分阶段规划和实现。

流程

  1. 开发整体模型 (Domain Model)。
  2. 列出功能列表 (Feature List)。
  3. 规划功能开发 (按周/月分配)。
  4. 设计并实现功能 (迭代交付)。

特点 :轻量级文档、频繁交付、明确责任分工。

适用场景 :需求明确、需要快速交付的项目。

五、精益软件开发(Lean Development)

核心思想 :消除浪费,最大化客户价值(源自丰田生产系统)。

原则

  • 消除浪费(如过度设计、等待、缺陷)。
  • 快速反馈,持续改进。
  • 尊重团队成员,授权决策。

实践 :价值流分析、最小可行产品(MVP)、看板管理。

适用场景 :资源有限、需要快速验证的创业项目。

六、持续集成/持续交付(CI/CD, Continuous Integration/Deployment)

核心思想 :自动化构建、测试、部署,确保代码质量和交付效率。

流程

  1. 持续集成 :频繁合并代码,自动构建测试。
  2. 持续交付 :自动部署到预发布环境。
  3. 持续部署 :自动部署到生产环境(最高级阶段)。

工具 :Jenkins、GitLab CI/CD、GitHub Actions、CircleCI。

适用场景 :需要快速迭代、频繁发布的项目。

七、领域驱动设计(DDD, Domain-Driven Design)

核心思想 :以业务领域为中心,通过领域模型连接业务与技术。

关键概念

  • 限界上下文 (Bounded Context):划分业务边界。
  • 聚合根 (Aggregate Root):管理实体关系。
  • 领域事件 (Domain Event):捕获业务状态变化。

工具 :UML、EventStorming(工作坊)。

适用场景 :复杂业务逻辑、需要长期维护的大型系统。

八、设计思维(Design Thinking)

核心思想 :以人为本,通过同理心解决问题。

流程

  1. 共情 (Empathize):理解用户需求。
  2. 定义 (Define):明确问题。
  3. 构思 (Ideate):头脑风暴解决方案。
  4. 原型 (Prototype):快速验证想法。
  5. 测试 (Test):收集反馈迭代。

适用场景 :产品创新、用户体验设计。

九、传统瀑布模型(Waterfall Model)

核心思想 :线性顺序执行,每个阶段完成后进入下一阶段。

阶段 :需求分析 → 设计 → 编码 → 测试 → 维护。

特点 :文档驱动、严格阶段评审。

适用场景 :需求稳定、规模较大、对文档要求高的项目。

十、混合方法论

特点 :结合多种方法的优势,根据项目需求灵活调整。

常见组合

  • Scrum + Kanban :Scrum 框架 + Kanban 可视化管理。
  • 敏捷 + DevOps :敏捷开发 + CI/CD 自动化。
  • TDD + BDD :单元测试(TDD)+ 集成测试(BDD)。

选择方法论的关键因素

  1. 项目规模 :大型项目可能需要更结构化的方法(如 FDD、DDD),小型项目可采用敏捷。
  2. 需求稳定性 :需求频繁变化选敏捷,稳定选瀑布。
  3. 团队文化 :强调协作选 Scrum,偏好自治选 Kanban。
  4. 交付时间 :快速迭代选敏捷,长期规划选传统方法。

不同方法论并无绝对优劣,关键是根据项目特性和团队能力选择合适的实践组合。例如,互联网产品通常采用敏捷 + CI/CD,而航天软件可能更依赖瀑布 + 严格测试。

相关研究

2025-06-30 19:05:10 Monday |

比您想象的更脆弱:关于工具集成的 LLM 代理的稳定性 [PDF(4)] [Copy] [Kimi(1)] [REL]

Authors : Weimin Xiong, Ke Wang, Yifan Song, Hanchao Liu, Sai Zhou, Wei Peng, Sujian Li

当前对工具集成的 LLM 代理的评估通常侧重于端到端的工具使用评估,而忽视了它们的稳定性。这限制了它们在现实世界中的适用性,因为各种内部或外部因素都可能导致代理崩溃或行为异常。我们的研究通过调查代理在整个工具调用过程中是否容易受到错误的影响来解决这个问题,包括阅读工具文档、选择工具和生成参数以及处理工具的响应。通过广泛的实验,我们观察到代理在每个阶段都极易出错,并且基于开源模型的代理比基于专有模型的代理更容易受到攻击。我们还发现,增加模型大小并不会显著改善工具调用推理,并且可能会使代理更容易受到类似于正常用户指令的攻击。这突出了评估代理稳定性的重要性,并为未来的 LLM 开发和评估提供了有价值的见解。

  1. 2025-06-23 11:33:42 Monday |

arXiv:2506.17208(交叉列表自 cs.SE)[pdf,html,其他]

剖析 SWE-Bench 排行榜:基于 LLM 和智能体修复系统的提交者与架构分析

马蒂亚斯·马丁内斯,泽维尔·弗兰奇

学科分类: 软件工程(cs.SE); 人工智能(cs.AI); 计算与语言(cs.CL)

  1. 2025-06-24 12:52:59 Tuesday |

Dissecting the SWE-Bench Leaderboards: Profiling Submitters and Architectures of LLM- and Agent-Based Repair Systems 链接 :https://arxiv.org/abs/2506.17208

作者 :rtinez, Xavier Franch 摘要 :自动程序修复(APR)的快速发展是由人工智能的进步推动的,特别是大型语言模型(LLM)和基于代理的系统。SWE-Bench是最近的一个基准测试,旨在使用从12个流行的开源Python存储库中挖掘的真实问题和拉取请求来评估基于LLM的修复系统。其公共排行榜SWE-Bench Lite和SWE-Bench Verified已成为跟踪进度和比较解决方案的中心平台。然而,由于提交过程不需要详细的文件,许多解决方案的架构设计和起源仍然不清楚。在本文中,我们对SWE-Bench Lite(68个条目)和Verified(79个条目)排行榜的所有提交进行了首次全面研究,分析了67种独特的方法,包括子系统类型,产品可用性,LLM使用和系统架构。我们的研究结果揭示了专有LLM(特别是Claude 3.5/3.7)的主导地位,代理和非代理设计的存在,以及从个人开发人员到大型科技公司的贡献者基础。

  1. 2025-06-25 11:12:16 Wednesday |

Skywork-SWE:揭示 LLM 中软件工程的数据缩放定律 [PDF(3)] [Copy] [Kimi(1)] [REL]

Authors : Liang Zeng, Yongcong Li, Yuzhen Xiao, Changshi Li, Chris Yuhao Liu, Rui Yan, Tianwen Wei, Jujie He, Xuchen Song, Yang Liu, Yahui Zhou

软件工程 (SWE) 最近已成为下一代 LLM 代理的关键测试平台,它要求在两个关键维度上具有固有的能力: 持续迭代问题解决(例如,>50 轮交互)和长上下文依赖关系解析(例如,>32k 令牌) 。然而,SWE 中的数据管理过程仍然非常耗时,因为它严重依赖手动注释来筛选代码文件,并设置专用运行时环境来执行和验证单元测试。因此,大多数现有数据集仅限于几千个 GitHub 来源的实例。为此,我们提出了一 种增量的自动化数据管理管道 ,可以系统地扩展 SWE 数据集的数量和多样性。我们的数据集包含来自 2531 个不同 GitHub 存储库的 10169 个真实 Python 任务实例,每个实例都附有一个以自然语言指定的任务和一个用于自动单元测试验证的专用运行时环境图像。我们从我们提议的 SWE 数据集中精心策划了 8,000 多个成功运行时验证的训练轨迹。当在这些轨迹上微调 Skywork-SWE 模型时,我们发现了一个引人注目的数据缩放现象:随着数据量的增加,训练模型在 LLM 中的软件工程能力性能不断提高,没有显示出饱和的迹象。值得注意的是,我们的 Skywork-SWE 模型在 SWE-bench Verified 基准测试中实现了 38.0% 的准确率 pass@1 无需使用验证器或多次部署,在基于 OpenHands 代理框架构建的基于 Qwen2.5-Coder-32B 的 LLM 中建立了新的最先进的 (SOTA)。此外,随着测试时间缩放技术的结合,性能进一步提高到 47.0% 的准确率,超过了之前 sub-32B 参数模型的 SOTA 结果。我们发布了 Skywork-SWE-32B 模型检查点,以加速未来的研究。

数据

SWE-Dev:评估与训练自主功能驱动的软件开发

250516

标题 :SWE-Dev: Evaluating and Training Autonomous Feature-Driven Software Development

链接 :https://arxiv.org/abs/2505.16975

作者Yaxin Du, Yuzhu Cai, Yifan Zhou, Cheng Wang, Yu Qian, Xianghe Pang, Qian Liu, Yue Hu, Siheng Chen

摘要

  • 大型语言模型(LLMs)在各类软件工程任务中展现出强大能力,例如代码补全、错误修复和文档生成。然而针对现有大型代码库开发新功能这一高度普遍的现实任务—— 特性驱动开发(FDD) ,目前仍缺乏深入探索。
  • 为此我们推出 SWE-Dev 数据集,这是首个专为评估和训练现实世界功能开发任务中自主编码系统而设计的大规模数据集(包含 14,000 个训练样本和 500 个测试样本)。为确保可验证且多样化的训练,SWE-Dev 创新性地为所有实例提供可运行环境及开发者编写的可执行单元测试。该数据集不仅为监督微调(SFT)提供高质量数据,还能通过单元测试的执行结果生成精确奖励信号,从而支持强化学习(RL)训练。
  • 我们在 SWE-Dev 上开展的广泛评估覆盖 17 个聊天机器人 LLMs、10 个推理模型和 10 个多智能体系统(MAS),结果表明 FDD 对当前 AI 技术构成严峻挑战(例如 Claude-3.7-Sonnet 在困难测试集上仅达到 22.45%的 Pass@3 通过率)。 关键的是,我们证明了 SWE-Dev 可作为模型改进的有效平台:在训练集上进行微调后,7B 模型在\textit{困难}划分上表现与 GPT-4o 相当,凸显了其高质量训练数据的价值。代码可在此处获取 \href{this https URL}{this https URL}。
  1. 核心pipeline

图2:SWE-Dev数据集构建流程概览。步骤1:我们在Docker化环境中收集包含通过测试文件的真实代码仓库;步骤2:追踪测试执行过程以构建函数级调用树,将测试用例与被调用的源代码关联;步骤3:在生成精炼PRD(产品需求文档)时掩码核心功能以创建任务。每个样本包含不完整的代码仓库、自然语言需求说明和可执行测试用例——从而实现可验证的真实功能开发场景。

Skywork-SWE

250620

https://mp.weixin.qq.com/s/RTLZAir7R-o5fp0CLL-cJA

📖 技术报告:https://huggingface.co/Skywork/Skywork-SWE-32B/resolve/main/assets/Report.pdf

📰 技术博客:https://quixotic-sting-239.notion.site/eb17f379610040ceb54da5d5d24065bd

🤗 模型权重:https://huggingface.co/Skywork/Skywork-SWE-32B

数据构建:

具体来说,阶段 A 的工作是数据采集与预筛选,其中又细分为 GitHub 元数据抓取、PR(Pull Request)收集与任务初筛和安装验证 3 个步骤。第一阶段的处理下来,昆仑万维团队从 15 万个开源仓库中得到了 23,389 个有效任务样本。为了防止数据泄漏,排除 SWE-bench Verified(测试数据集)已包含的仓库。

而阶段 B 则是环境设置和基于执行的验证。同样,这一阶段也分为三个步骤:统一命令生成、Docker 环境构建和单元测试验证。很容易看出来,这一步的目标是确保问题的修复是有效的,进而进一步保证数据的质量。

最后,还需要针对每个任务生成正确的智能体轨迹。这也正是阶段 C 的任务目标。同样地,三个步骤:首先,昆仑万维团队基于开源的 OpenHands 代码智能体框架,选用代码能力突出的商用大模型(如 Claude,DeepSeek 等)作为智能体基座,对每个任务执行最多 100 轮交互,完整记录智能体在问题求解过程中的交互轨迹。然后,他们进行了 Patch 级的验证,以确保智能体行为严格对齐仓库级代码修复目标。最后,构建训练样本库,得到了 8,209 条高质量、长上下文、多轮交互的经过验证的轨迹。

走完全流程后,昆仑万维团队得到了一个当前规模最大、质量最高且可验证的软件工程任务数据集:Skywork-SWE。是的,正是基于该数据集,昆仑万维训练出了同名的自主代码智能体模型:Skywork-SWE-32B!(注:32B 是指模型参数量。)

模型

SWE-Swiss:一把修复代码Bug的「瑞士军刀」

  1. 北大、字节跳动联手发布SWE-Swiss:一把修复代码Bug的「瑞士军刀」,完整配方直指开源SOTA

    1. 一项由北京大学、字节跳动 Seed 团队及香港大学联合进行的研究,提出了一种名为「SWE-Swiss」的完整「配方」,旨在高效训练用于解决软件工程问题的 AI 模型
    2. 研究团队推出的 32B 参数模型 SWE-Swiss-32B,在权威基准 SWE-bench Verified 上取得了 60.2% 的准确率,在同尺寸级别中达到了新的 SOTA
    3. GitHub 地址: https://github.com/zhenyuhe00/SWE-Swiss
      1. Hugging Face 模型和数据: https://huggingface.co/SWE-Swiss
    4. 核心原则是,通过对软件工程中的核心能力进行显式建模和训练,来构建一个功能强大且高效的问题解决模型。
    5. SWE-Swiss 的训练分为两个主要阶段:
      1. 第一阶段:通过多任务 SFT 构建基础能力
      2. 第二阶段:通过两阶段 RL 精通核心技能——两阶段 RL 课程

评估

RExBench:编码代理可以自主实施 AI 研究扩展吗?

2025-07-01 12:31:02 Tuesday

Authors : Nicholas Edwards, Yukyung Lee, Yujun, Mao, Yulu Qin, Sebastian Schuster, Najoung Kim

基于大型语言模型 (LLM) 的代理已显示出自主执行复杂软件工程任务的前景。此外,在开发可以执行机器学习和自然科学部分研究管道的代理方面也取得了进展。我们认为研究扩展及其实施是此类系统的关键能力,并引入 RExBench 来支持对这种能力的评估。RExBench 是一个基准测试,由 12 个现实的研究实验实施任务组成,旨在 调查以前未实施的研究假设 。每个任务都设置为对现有研究论文和代码库的扩展,并附有领域专家编写的说明。RExBench 对数据污染非常可靠,并支持自动评估基础设施,该基础设施执行代理输出以确定是否满足成功标准。我们使用此基准来评估使用三个不同框架实现的九个 LLM 代理:aider、Claude Code 和 OpenHands。我们发现,所有评估的代理都无法自主实施大多数扩展。尽管使用额外的人工编写提示可以提高成功率,但此设置下的最佳性能仍低于 40%。这表明,在没有大量人工指导的情况下,当前的代理仍然无法处理现实的研究推广任务。

主题 : 计算和语言

SWE-bench-Live

20250620

Agent全自动搭建代码运行环境,实时更新解决评测过拟合/数据污染问题|微软

https://mp.weixin.qq.com/s/mWWlI-AEhtbFt-xzOYlyjQ

微软发布全新代码修复评测基准 SWE-bench-Live ,不仅引入了来自GitHub最新的Issue,显著提升了对模型评估的实时性与准确性,还实现代码运行环境的全自动化构建与自动更新,打破了传统静态评测基准的局限。

SWE-bench-Live开创性地采用了基于Agent的智能化框架 REPOLAUNCH ,彻底解决了这些问题。

REPOLAUNCH可以根据Github中真实的Issue,自动搭建其Docker环境并执行测试验证,整个流程完全无人干预,并且每月自动更新,持续提供最新鲜、最具代表性的评测数据。这种自动化的实时更新模式,消除了数据泄露与模型过拟合风险。

NoCode-bench:自然语言驱动功能添加

  1. 从Debugger到Developer : 低代码时代新基准NoCode-bench,SWE-Bench作者力荐

    1. 即便是当前最佳 LLM,在此任务上的成功率也仅有两成,揭示了当前 AI 在真实软件开发能力上的巨大挑战。
    2. 论文标题: NoCode-bench: A Benchmark for Evaluating Natural Language-Driven Feature Addition
      1. 论文链接: https://arxiv.org/abs/2507.18130
      2. 项目开源链接: https://github.com/NoCode-bench/NoCode-bench
      3. 排行榜链接: https://nocodebench.org
    3. 贡献
      1. 提出全新基准:NoCode-bench 首次系统地评估了 LLM 在「无代码」功能添加任务上的能力,填补了现有评测体系的空白。
      2. 揭示严峻挑战:实验结果表明,当前最先进的 LLM 远未准备好应对真实的、文档驱动的功能开发任务,其成功率极低。
      3. 指明未来方向:研究识别出的三大失败原因 —— 跨文件编辑、代码库理解和工具调用,为下一代 AI 软件工程师的研发提供了清晰的改进路线图。

数据合成

SWE-Flow:以测试驱动方式合成软件工程数据

250609

标题 : SWE-Flow: Synthesizing Software Engineering Data in a Test-Driven Manner 链接 :https://arxiv.org/abs/2506.09003

作者 : Lei Zhang, Jiaxi Yang, Min Yang, Jian Yang, Mouxiang Chen, Jiajun Zhang, Zeyu Cui, Binyuan Hui, Junyang Lin 备注 :Accepted by ICML2025 摘要

  • 我们介绍 SWE-Flow,一个基于测试驱动开发(TDD)的新型数据合成框架。与现有的软件工程数据依赖于人类提交的问题不同,SWE-Flow 直接从单元测试自动推断增量开发步骤 ,这些单元测试本质上封装了高级需求。
  • SWE-Flow 的核心是构建一个RDG(Dependency Graph),它可以精确地捕获功能交互,从而生成一个结构化的、逐步的 * 开发计划 *。在每一步中,SWE-Flow 都会生成部分代码库、相应的单元测试和必要的代码修改,从而产生完全可验证的TDD任务。
  • 通过这种方法,我们从真实世界的GitHub项目中生成了16,061个训练实例和2,020个测试实例,创建了 SWE-Flow-Eval 基准。我们的实验表明,在这个数据集上微调开放模型可以显著提高基于TDD的编码性能。为了便于进一步研究,我们在[Github](https://github.com/Hambaobao/SWE-Flow)上发布了所有代码、数据集、模型和Docker镜像。

  1. 核心pipeline

UF-Coder-v4.0-iters-32

智能体

SWE-Dev:构建具备训练与推理扩展能力的软件工程智能体

250607

标题 :SWE-Dev: Building Software Engineering Agents with Training and Inference Scaling

链接 :https://arxiv.org/abs/2506.07636

作者Haoran Wang, Zhenyu Hou, Yao Wei, Jie Tang, Yuxiao Dong

摘要

  • 大型语言模型(LLMs)已从对话式问题解决快速发展到处理涉及工具使用的现实世界任务,如软件工程(SWE)。近期基于 LLM 的工具包(如 OpenAI Codex 和 Cursor)已实现软件开发流程的端到端自动化。
  • 然而,由于缺乏高质量训练数据和有效测试用例,构建高效的 SWE 智能体仍具挑战性。为此,我们提出基于开源 LLMs 构建的 SWE 智能体 SWE-Dev。首先,我们开发了稳健的测试用例合成流程用于补丁评估;其次,通过扩展智能体轨迹构建训练数据集。
  • 在 SWE-bench-Verified 基准测试中,SWE-Dev 模型在所有开源 SWE 智能体中表现最优,其中 7B 和 32B 参数模型的成功率分别达到 23.4%和 36.6%,超越当前最先进的开源模型。所有代码、模型及数据集已在此 https 链接公开。

Gherkin 场景(Gherkin Scenario) 是行为驱动开发(BDD,Behavior-Driven Development)中用于描述软件功能行为的一种结构化文本格式,通常基于 Cucumber 等测试框架实现。

ExpeRepair ——具有“双重记忆”的仓库级缺陷修复系统

  1. AI修Bug新SOTA:SWE-Bench Lite60.33%修复率,像人一样能积累经验,中科院软件所出品

    1. ExpeRepair ——具有“双重记忆”的仓库级缺陷修复系统,它通过模拟人类认知的两种记忆模式:
      1. 情景记忆:存储历史修复案例(如“具体如何修复Sympy项目的安全漏洞”)
      2. 语义记忆:提炼高阶修复策略(如“处理资源泄漏时需同时关闭文件和释放句柄”)
    2. 论文:https://arxiv.org/abs/2506.10484
    3. 代码:https://github.com/ExpeRepair/ExpeRepair

0%