大数跨境

AI Agent可以承担完整的工程活动,大部分软件工程师会被取代吗?

AI Agent可以承担完整的工程活动,大部分软件工程师会被取代吗? 软件工程3.0时代
2026-11-12
0
导读:被取代的,未必是软件工程师这个职业;更可能首先被取代的,是......

让AI写一段代码、生成一个函数,已经不是软件研发中最值得讨论的问题。真正值得关注的是:如果把一项工程任务交给AI Agent,让它从需求分析开始,经过系统设计、代码实现,直至测试验证,它究竟能够走多远?

当Agent能够跨越多个工程环节,承担越来越多原本由软件工程师完成的工作,一个无法回避的问题随之出现:大部分软件工程师会被取代吗?

最近,我围绕开源3D打印固件开发,使用OpenCode和大模型开展了一次Agent工程实践。我们尝试让Agent沿着一条相对完整的工程链条开展工作:

需求工程 → 规约分解 → 需求评审与整改 → 系统设计 → 设计评审与整改 → 组件实现 → 单元测试与代码评审。

这里所说的“完整工程活动”,并不是说本次实验已经完成了一个产品的全生命周期交付,而是希望观察Agent能否跨越传统研发中的多个工程阶段,持续完成相互关联的任务。

近一年来,围绕Agent参与需求、设计、编码和测试的探索并不少见。这次实践的价值,也不在于宣称Agent首次做到了什么,而在于我们尝试将多轮评审与整改、较大规模的结构化工程产物,以及UTDD等工程方法结合起来,观察Agent在真实工程任务中的表现。

一、沿着工程链条做一次实践

这次实验选择3D打印固件项目,把原来的代码及其逆向分析等清空,重新输入一份21页的用户需求PDF文档。整个过程分为七个环节。

需求工程与规约分解。

Agent首先从原始文档中提取出186条源需求,经过分析、分类和归并,形成188条系统叶子需求,并建立12条顶层聚合视图。在此基础上,进一步分解出130条软件需求、49条硬件需求和53条软硬件接口契约(HSI),同时形成9条关键行为契约和62条验证场景。

(截取了需求工作总结的部分内容)
(截取了系统需求的部分内容)

这不是简单地将原始文档拆成更多条目。Agent需要理解系统功能和运行场景,识别软硬件职责边界,明确接口关系,并将描述性的用户要求转化为相对清晰、可追溯、可验证的工程规约。

多轮需求评审与整改。

我们没有让需求生成结果直接成为最终结果,而是引入独立评审和多轮整改。第一轮评审发现16项主要问题、13项次要问题和4条改进建议;整改后,第二轮又发现5项新问题。经过后续整改和复核,需求规约最终形成v1.0定稿。

(全量追溯矩阵,截取其中很小的一部分)

在追溯方面,128条M级需求全部建立了验证场景映射,覆盖率达到100%;环境、EMC和安规相关的9条专项需求也全部建立了对应场景。

系统设计与设计评审。

需求规约确定后,Agent进一步完成系统设计,形成230项结构化设计元素,包括21项架构设计、53项组件定义、23项数据结构设计、13项数据流设计、8项状态机设计、11项时序设计、19项算法设计、72项接口设计和10项配置设计。

(截取了设计工作总结的部分内容)

随后,独立评审Agent对设计进行检查。第一轮发现10项问题,其中包括1项严重问题、4项主要问题和5项次要问题。经过整改和第二轮复核,10项问题全部关闭,没有发现新的问题。

其中一个问题涉及温度保护逻辑,判断条件的方向出现了反转。这类错误如果没有经过专业评审,很容易随着设计进入编码阶段,最终成为实际的软件缺陷。

组件实现、UTDD与代码评审。

最后,我们选择运动子系统中的7个组件开展实现,包括Motion、Planner、Bezier、Stepper、Endstops、Kinematics和FtMotion。

这次没有采用“让Agent直接生成代码,再看能不能运行”的方式,而是引入UTDD(单元测试驱动开发):先理解设计契约,分析测试要求,设计测试用例并建立测试骨架,再由Agent完成实现;随后根据测试结果不断修复、重构,并开展覆盖率分析。

Motion组件最终生成约3,700行代码和测试,涉及33个文件,包括8个源文件、12个头文件和10个测试文件。

(截取了motion组件实现的目录结构)

测试覆盖Motion组件等Cartesian、CoreXY、SCARA、Polar和Delta五种运动学配置。各配置分别执行79或80条测试用例,全部通过,没有失败用例。全量行覆盖率达到96.86%,分支覆盖率达到71.36%;Motion、Planner和Stepper三个核心组件的行覆盖率达到95.68%~99.01%,分支覆盖率达到70.00%~83.33%。

代码完成后,还进行了对照设计契约的代码评审。评审结论为有条件通过,记录了2项主要问题、3项次要问题和4项改进建议,没有严重问题,也没有尚未处理的阻塞项。

需要说明的是,本次完成的是基于设计契约的运动(Motion)组件自包含实现和Native环境下的单元测试,但没有进行ISR实时性和真实硬件并发行为验证。

因此,这次实践不是一个已经完成全部交付的产品项目,而是一次覆盖需求、设计和部分实现环节的Agent工程化探索。

二、这次实践,哪些地方值得关注?

我认为,这次实验有三个方面值得关注。

首先,是工程活动覆盖范围和产物规模的扩展。

这次实验形成了188条系统需求、130条软件需求、53条接口契约、62条验证场景,以及230项结构化设计元素。后续又完成组件代码的实现和单元测试。

如果完全依靠人工维护这么多工程元素及其关联关系,需要投入大量时间。Agent可以帮助完成需求提取、分解、编号、关联和更新,人类则可以把更多精力放在关键约束、技术方案和质量判断上。

但数量多不等于质量高,追溯关系完整也不意味着语义正确。工程产物越多,越需要明确的结构、关系和验证机制。否则,Agent只会更快地生成一批彼此不一致的文档和代码。

其次,多轮评审和整改比一次生成更重要。

这次需求和设计阶段都经历了独立评审、问题记录、逐项整改和再次评审。尤其是温度保护逻辑中的错误,说明Agent生成的内容即使结构完整、表达专业,也可能包含实质性的工程问题。

这与传统软件质量管理的基本规律是一致的:质量不是靠最后一次检查“检”出来的,而是要通过过程中的评审、验证和纠错逐步建立起来。

Agent可以提高工作效率,但不能因为它生成得快,就降低工程评审的要求。

第三,UTDD让Agent的实现有了更明确的约束。

让Agent写代码并不难,难的是让它按照设计要求写出行为正确、可验证的代码。

这次采用UTDD,不是把测试当作代码生成之后的补充,而是让测试用例从一开始就参与实现过程。设计契约提供实现依据,测试用例提供行为约束,测试结果和覆盖率则提供验证证据。

这使Agent不只是根据自然语言“猜”应该怎么实现,而是在明确的工程约束下完成代码,并通过测试反馈持续修正。

我认为,随着Agent执行速度越来越快,测试、评审和质量门禁的重要性只会进一步提升。否则,代码生成效率的提升,很可能转化为更大的缺陷排查和返工成本。

三、大部分软件工程师会被取代吗?

我的判断是:软件工程师这个职业不会因为Agent的出现而整体消失,但相当一部分传统软件开发工作将被自动化,软件工程师的岗位结构、工作方式和能力要求都会发生显著变化。

首先,要区分“工作任务被替代”和“职业岗位被替代”。

一个软件工程师每天要完成很多具体任务,其中一些任务可以被Agent直接接手。例如,常规代码编写、简单功能修改、接口文档整理、测试用例初步生成、重复性缺陷修复和基础代码检查等。这些工作的边界相对清晰,输入和输出比较明确,也容易通过测试或规则进行验证。

随着Agent能力提高,这类工作的人工投入必然会减少。过去需要多人完成的工作,未来可能由少数工程师组织Agent完成。对于企业而言,研发团队的人员配置和岗位分工也会因此调整。

因此,不能简单地说“AI只是工具,不会替代人”。事实上,一些以重复性编码和标准化任务为主要内容的岗位,确实会面临很大压力。

但软件工程并不只是完成一组明确的编码任务。

在真实项目中,需求往往不完整,业务目标可能相互冲突,系统约束也可能随环境和产品变化而变化。架构设计需要在性能、成本、可靠性、安全性和可维护性之间做权衡;复杂故障需要结合业务场景、运行环境和历史经验进行分析;高可靠性软件还涉及安全责任、合规要求和最终交付决策。

这些工作并非简单地生成一个结果就能完成。它们需要理解问题、识别风险、权衡方案,并对决策后果负责。

Agent可以提供分析和建议,也可以执行其中相当一部分具体工作,但最终的工程判断和责任不能仅靠代码生成或测试通过来替代。

尤其在汽车、航空、能源、工业控制等领域,软件质量直接关系到产品安全和运行可靠性。工程师需要判断规约是否充分、设计是否合理、验证证据是否足够,以及系统是否具备交付条件。这些责任不会因为使用了Agent就自动消失。

所以,真正面临替代压力的,不是所有软件工程师,而是那些工作内容高度重复、专业判断较少、主要依靠手工完成标准化任务的岗位和工作方式。

而能够理解复杂业务、驾驭系统架构、管理工程风险、组织Agent协作并对质量结果负责的工程师,其价值反而可能更加突出。

四、软件工程师应该如何改变自己?

如果Agent能够承担越来越多的工程任务,软件工程师应该怎么办?

我认为,最危险的不是不会使用某个AI工具,而是仍然把自己的价值局限在“我能写多少代码”、“我能完成多少具体任务”上。

未来,工程师需要从亲自执行具体工作,转向设计、组织和驾驭工程活动。至少有五方面能力值得重视。

  1. 系统思维。不只是理解一个函数或一个模块,而是能够从业务目标出发,理解系统边界、架构关系、功能依赖和运行环境,识别局部修改对整个系统的影响。

  2. 需求与规约能力。能够把模糊的业务目标转化为清晰、完整、可验证的工程要求,明确系统要做什么、受到哪些约束、哪些行为不能发生,以及最终如何验收。这将成为组织Agent工作的重要基础。

  3. 工程组织与Agent协作能力。能够合理分解工程任务,为Agent提供上下文、知识、工具和权限,组织多个Agent协同工作,并建立必要的执行约束和反馈机制。

  4. 质量保证与验证能力。不轻信Agent给出的结果,而是能够设计评审机制、测试策略和质量门禁,判断工程产物是否正确、完整、一致,验证证据是否充分。

  5. 专业判断与责任意识。能够在复杂、不确定的场景下作出技术决策,识别关键风险,对系统安全、质量和交付结果承担责任。

这里还有一个值得关注的问题:初级软件工程师怎么办?

过去,很多工程师是从简单编码、修改缺陷、编写测试等工作逐步成长起来的。这些工作恰恰是最容易被Agent自动化的部分。如果企业只追求短期效率,大量减少初级岗位,可能会影响未来资深工程师的培养。

因此,软件企业不仅要思考如何用Agent减少重复劳动,也要重新设计工程师的培养路径:让新人在Agent辅助下参与真实工程活动,学习需求分析、设计、评审、测试和质量判断,而不是仅仅把Agent生成的代码当作自己的工作成果。

未来的软件工程师,不应该只是比Agent写代码更快,而应该比Agent更懂系统、更懂工程、更懂风险,也更善于组织和判断。

结语:被取代的,可能是旧的工作方式

回到文章标题:AI Agent可以承担完整的工程活动,大部分软件工程师会被取代吗?

我的判断是,大部分软件工程师不会作为一个职业群体整体消失,但软件研发中的大量具体工作将被重新分配,部分岗位会减少,传统的软件工程能力结构也将受到冲击。

软件工程师面临的不是一个简单的“人和AI谁更强”的问题,而是必须重新思考:哪些工作应该交给Agent,哪些决策必须由人来做,怎样才能让Agent可靠地参与复杂工程活动?

从软件工程的发展来看,我们正在经历新的范式变化。

软件工程1.0以传统软件工程为代表,强调规范化、结构化和过程纪律;软件工程2.0以敏捷、CI/CD和DevOps为代表,强调快速迭代和持续交付;软件工程3.0则正在走向AI和Agent驱动的智能化软件工程。

在这一新范式下,软件工程的核心逻辑可以概括为:

规约为核心,Agent为执行主体,人做决策和判断,验证证据为质量依据。

这次Marlin固件实践还只是一个探索性案例,距离真正实现规模化、自主化、可信赖的端到端工程交付,还有不少问题需要解决。但它已经说明,Agent不再只是辅助工程师写代码,而是开始进入软件工程的核心活动。

我想,未来真正拉开软件工程师差距的,可能不再是一个人一天能写多少行代码,而是他能否理解复杂系统、定义正确的问题、组织Agent完成工程任务,并用可靠的证据证明结果值得信任。

被取代的,未必是软件工程师这个职业;更可能首先被取代的,是那些可以被自动化的工作方式,以及仅仅依赖这些工作方式建立起来的岗位价值。

【声明】内容源于网络
0
0
软件工程3.0时代
由于大模型(LLM)正在改变着千行百业,软件工程(SE)更是首当其冲,迎来软件工程3.0新时代:模型驱动研发、模型驱动运维。本公众号将致力于研究SE3.0时代的软件研发新范式、理论与方法,介绍SE3.0时代的工具与实践。
内容 649
粉丝 0
软件工程3.0时代 由于大模型(LLM)正在改变着千行百业,软件工程(SE)更是首当其冲,迎来软件工程3.0新时代:模型驱动研发、模型驱动运维。本公众号将致力于研究SE3.0时代的软件研发新范式、理论与方法,介绍SE3.0时代的工具与实践。
总阅读8.9k
粉丝0
内容649