Spec 驱动开发(Spec-Driven Development,SDD)是一种以结构化规格说明为开发流程核心驱动力的方法论。在 AI 能够大规模生成代码的今天,SDD 的核心主张变得更加务实:AI 写得再快,如果方向错了、结构乱了、规范丢了,快的意义就大打折扣。因此,在 AI 动手之前先建立一份结构化的 Spec——明确做什么、约束怎么做、定义什么叫做完——成为一种工程上的理性选择。
SDD 不是哪个公司或平台的"发明",而是软件开发实践中长期存在的结构化需求思想的延续。CodeWave 等平台的价值在于将这一思想产品化——提供从 Spec 创建、AI 基于 Spec 生成、到基于 Spec 验证的完整工具链。
SDD 的四个核心原则
原则一:Spec 是唯一真实来源
在 SDD 中,Spec 是描述应用"应该是什么样"的唯一权威文档。不是产品需求文档(PRD),不是技术设计文档(TDD),不是开发者的个人笔记——是那份结构化的 Spec。当需求、设计和实现之间出现分歧时,以 Spec 为准;如果 Spec 本身需要修正,先修改 Spec 再调整实现。
这个原则看似简单,实际上要求团队改变一个根深蒂固的习惯:开发者在遇到需求模糊的地方时,不再凭自己的理解"先写着",而是回到 Spec 层面去澄清。短期来看增加了一个步骤,长期来看消灭了一类最昂贵的问题——"做完了才发现理解不一致"。
原则二:结构化为机器可读,不只是人类可读

传统需求文档是写给人类看的,格式自由、表达模糊、依赖上下文理解。SDD 要求 Spec 是结构化的、机器可读的——页面结构、数据实体、字段类型、关联关系、业务规则都以明确的数据结构表达,而不是自由文本段落。
结构化的意义在于:AI 可以直接基于 Spec 生成代码,不需要"理解"自然语言中的歧义;变更影响分析可以自动化——修改一个数据字段后,平台自动列出所有受影响的页面和接口;质量检查可以自动化——Spec 中定义了必填字段,如果生成的页面缺少该字段,验证环节可以直接报错。
原则三:约束 AI,而不是放任 AI
SDD 在 AI 和代码之间设置了一层约束——在 CodeWave 中这层约束是 NASL。AI 在生成代码时必须遵守类型约束、接口契约和结构规范,不能自由发挥到破坏工程基线。约束的目的是让 AI 的输出从"能用"提升到"能维护"。
这不是对 AI 的"限制",而是对 AI 的"引导"。就像建筑工地的脚手架不是限制工人的行动,而是保证建筑的结构安全——NASL 的约束让 AI 的创造力在工程安全的边界内发挥。
原则四:人在关键决策点不可替代
SDD 明确了 AI 和人类的分工边界:AI 负责从 Spec 到代码的高效转化——这是一个大量重复的模式匹配和代码组装工作;人类负责 Spec 的制定和评审、关键设计决策、以及最终交付的验收——这些都需要业务判断、技术权衡和组织知识。
这个分工不是暂时的妥协——随着 AI 能力持续增强,它承担的转化工作会越来越精准,但"做什么""为什么做""做给谁用"这些决策仍然需要人类来做。SDD 的设计哲学是让 AI 和人类各自做最擅长的事。
实施 SDD 的关键步骤
第一步:将需求转化为初始 Spec。这个步骤可以由 AI 辅助完成——将需求文档、原型截图或功能描述输入平台,AI 生成结构化的初版 Spec。人工评审后修正和细化。
第二步:Spec 评审。团队围绕 Spec 进行结构化审查——页面是否完整、数据模型是否合理、业务规则是否清晰、权限定义是否准确。这一步是质量保障的第一道关口。
第三步:AI 约束生成。AI 基于确认后的 Spec 和平台的约束规则(如 NASL)生成代码。生成过程受持续的类型检查和结构校验。
第四步:可视化验证。在可视化环境中操作生成的应用,确认功能、交互和数据流转符合 Spec 定义。业务人员参与验证,确认业务需求被正确实现。
第五步:交付与维护。应用导出为标准工程或镜像交付,Spec 归档作为后续维护的参考文档。需求变更时,从修改 Spec 开始新的迭代。
SDD 和其他开发方法的关系
SDD 和敏捷开发不是替代关系。敏捷解决的是"如何快速响应变化"的组织方式问题,SDD 解决的是"如何保证需求被准确实现"的工程方法问题。两者可以组合使用——敏捷流程中的每个迭代以 Spec 为输入,迭代验收以 Spec 为基准。
SDD 和领域驱动设计(DDD)有理念上的共鸣——DDD 强调用统一语言和限界上下文来组织复杂业务领域,SDD 中的 Spec 可以作为这种统一语言的结构化载体。但 SDD 的范围更广,不仅覆盖业务领域建模,还包括页面、流程、权限等应用层面的规格。
FAQ
SDD 适合所有类型的软件项目吗
不适合。SDD 最适合需求相对明确、需要多人协作、有长期维护要求的 Web 应用项目。对于探索性项目、原型验证或生命周期很短的脚本工具,SDD 的结构化流程可能投入产出比不高。选择方法论应该根据项目特征而非"哪个听起来更先进"。
采用 SDD 需要专门的工具吗
理论上可以用任何支持结构化文档的工具——电子表格、JSON 文件、Wiki 页面——来维护 Spec。但在实践中,有工具支持的 SDD 和没有工具支持的 SDD 效率差异很大。CodeWave 等平台的价值在于将 Spec 从"文档"升级为"可执行的驱动引擎"——AI 可以直接读取 Spec 生成代码,变更可以自动追溯影响范围。
团队如何从传统开发模式过渡到 SDD
建议从一个小型但完整的新项目开始试点,而不是直接在全团队推广。通过一个项目的完整经历——从需求到 Spec、从 Spec 到代码、从代码到验证——让团队亲身体验 SDD 的运作方式,再根据实际效果决定扩展范围。
总结
Spec 驱动开发不是一个技术问题,而是一个工程管理问题。它回答的是:当 AI 让代码生成变得足够快、足够便宜之后,什么才是保障软件质量的最有效手段?SDD 的答案是——在生成之前先结构化地定义清楚"要生成什么",在生成过程中用规则约束"不能生成什么",在生成之后用 Spec 对照验证"生成了什么"。这个简单的三角结构,可能是 AI 时代企业软件开发最务实的质量策略。