ARTICLE · 992434
AI Coding 越强,为什么越需要软件工程?
最近几年,AI Coding 工具的能力进步很快。
从代码补全到 Coding Agent,开发工具已经可以阅读代码库、修改文件、执行命令、运行测试,再根据错误继续修复。“氛围编程”也让更多人可以用自然语言把想法快速变成程序。
代码生成的门槛正在降低,从想法到可交付、可维护软件的工程问题仍然存在。
软件工程是一套受控的信息减熵过程
需求往往混乱、不完整、充满歧义,软件则是可以被计算机执行的结构化结果。软件工程把需求作为输入,通过持续收集、澄清、转换和验证信息,逐步形成目标软件。
从需求到软件的信息减熵过程
业务问题和目标
↓ 收集、澄清、确认
需求和验收标准
↓ 分析、取舍、设计
架构和实现方案
↓ 编码、构建、集成
可执行的软件
↓ 测试、验收、运行反馈
可交付并持续演进的软件
上一阶段的输出会成为下一阶段的输入。评审、测试、验收、配置管理、变更管理和运行监控,用于发现输入遗漏、转换偏差和结果缺陷。
CMMI 将过程变得可管理、可度量、可追踪、可改进;敏捷开发通过小步交付和快速反馈,持续修正变化中的需求和实现。这些方法保留了人类对软件信息减熵过程的控制经验。
AI Coding 提高整个流程的运行效率
重复工作存在于需求、设计、开发、测试和项目管理的每一个环节:整理材料、追踪变更、梳理依赖、更新文档、生成代码、构造测试数据、执行回归、分析日志、收集状态和整理风险。
AI Coding 的三层分工
LLM
处理自然语言和非结构化信息,完成抽取、归纳、关联和生成
Coding Agent
连接项目数据、工具和状态,执行信息收集、制品生成、结果检查和状态跟踪
人
重复劳动交给 Coding Agent 和自动化系统,人保留目标、取舍、风险、验收和关键决策
AI Coding 提高的不应只是编码效率,而应该是整个软件工程流程的运行效率。
岗位结构与流程结构解耦
两种结构相关,但不是同一件事
流程结构
定义阶段、输入、输出和验证方式
岗位结构
定义这些工作由谁完成
人的能力和精力有限,传统组织把需求、架构、开发、测试和运维分配给不同岗位。专业化分工增加了交接环节,并带来信息压缩、理解偏差、等待和返工。
Coding Agent 可以跨越多个环节,也可以根据上下文、权限、并行执行和独立验证的需要,调度多个专项 Agent 和工程工具。岗位的部署方式因此可以改变。
需求理解、约束识别、系统设计、代码实现、结果验证、部署和维护仍然必须完成。一个 Coding Agent 可以在一次任务中完成多个阶段,不能省略每个阶段应该产生的工程结果。
执行流程的方式可以变,流程需要保证的工程结果不能消失。
项目管理经验的工程化沉淀
Coding Agent 可以承担信息收集、状态跟踪、结果检查和问题提醒,自动化系统执行测试、构建和发布。
项目经验的工程化沉淀
判断标准:需要收集的信息、必须检查的结果、提前控制的风险,以及继续、暂停、返工和升级的条件。
↓
执行机制:工作流程、上下文、检查点、验证器、权限边界和异常升级机制。
将这些经验沉淀为工作流程、上下文、检查点、验证器、权限边界和异常升级机制,才能让 Coding Agent 低成本、可控地执行软件生产过程。
从氛围编程到工程化交付
氛围编程降低了把想法变成程序的门槛,适合个人工具、原型和快速试验。
使用范围扩大、数据价值上升、需求持续变化、用户增多以后,开发就需要清晰需求、验收标准、模块化设计、版本管理、自动化测试、发布、监控和变更管理。
能力扩展路径
氛围编程 → 工程化 → 稳定交付
掌握软件工程的人,能够给 Coding Agent 提供更完整的信息,合理拆分任务,明确验收结果,并控制不应交给 Coding Agent 自行决定的风险。
氛围编程提供创造的起点,软件工程将它推进到稳定交付。
软件工程 Agent 的完整形态
软件工程 Agent 是在 Coding Agent 之上扩大工作范围,将需求、设计、开发、测试、交付和维护连接起来的 Agent 系统。
它会引导用户明确问题,收集业务背景,识别需求缺失和矛盾,建立验收标准,再根据复杂度和风险选择工程流程。
设计、实现、测试、部署和维护由软件工程 Agent 结合工程工具继续执行,关键决策、风险取舍和最终验收由人确认。
用户看到自然语言对话,系统内部执行完整软件工程流程。软件工程知识由人工经验转化为 Agent 系统的生产能力。
结语:把软件工程经验变成 Agent 能力
LLM 降低语义信息的整理和转换成本,Coding Agent 和工程工具降低流程执行成本。
软件工程、CMMI、敏捷开发和项目管理经验,定义信息如何收集、转换、验证并最终交付为软件。AI Coding 改变这些方法的执行方式,不改变它们要解决的基本问题。
结语
AI 时代的软件工程,是用 LLM 提高信息减熵效率,用 Coding Agent 和工程工具执行和验证流程,并把人类积累的工程经验变成可运行的软件生产能力。