规范驱动开发(Spec-Driven Development)深度解析

在AI编码工具爆发式增长的2025-2026年,一种"古老而崭新"的开发范式正在重新定义软件工程的游戏规则。本文从定义出发,横跨工具链、企业案例、方法论对比与未来趋势,带你全面理解规范驱动开发(SDD)。


目录

  1. 什么是规范驱动开发?
  2. SDD的历史渊源与2025年的复兴
  3. [SDD vs Vibe Coding:给AI立规矩](#SDD vs Vibe Coding:给AI立规矩)
  4. [SDD vs TDD/BDD/DDD:方法论全景对比](#SDD vs TDD/BDD/DDD:方法论全景对比)
  5. 规范格式与工具链全景
  6. 代码生成与契约测试
  7. [三大SDD工具深度对比:Kiro、Spec Kit、Tessl](#三大SDD工具深度对比:Kiro、Spec Kit、Tessl)
  8. 实战案例与落地路径
  9. 优势、挑战与争议
  10. 未来趋势:从开发到工程
  11. 行动建议与总结

1. 什么是规范驱动开发?

1.1 多源定义搜集与分析

规范驱动开发(Spec-Driven Development, SDD) 是一种以结构化规范为先导的软件开发方法。其核心思想是:在编写代码之前,先编写一份描述系统行为的规范(Spec),然后以该规范作为人和AI的"单一事实源"来驱动后续的设计、实现与验证。

以下是来自不同权威来源的定义对比:

来源 定义 发表时间
Martin Fowler / Birgitta Böckeler (Thoughtworks) "Spec-driven development means writing a 'spec' before writing code with AI ('documentation first'). The spec becomes the source of truth for the human and the AI." 2025年10月
GitHub (Spec Kit) "In this new world, maintaining software means evolving specifications. The lingua franca of development moves to a higher level, and code is the last-mile approach." 2025年9月
Tessl "A development approach where specs --- not code --- are the primary artifact. Specs describe intent in structured, testable language, and agents generate code to match them." 2025年
GitHub Blog "Instead of coding first and writing docs later, in spec-driven development, you start with a spec. This is a contract for how your code should behave and becomes the source of truth your tools and AI agents use to generate, test, and validate code." 2025年9月
Thoughtworks 技术雷达 Vol.34 "Spec-driven development is an emerging approach to AI-assisted coding workflows... workflows that begin with a structured functional specification, then proceed through multiple steps to break it down into smaller pieces, solutions and tasks." 2025年11月

定义差异分析:

  • 共同点:所有定义都强调"先写规范,后写代码",规范成为"事实源"
  • 分歧点一:是否必须依赖AI? Martin Fowler的文章明确将SDD定位为"AI辅助编码工作流"的一部分;而传统的"contract-first"方法(如OpenAPI先行)并不依赖AI
  • 分歧点二:规范是否必须机器可读? Tessl强调规范用"结构化、可测试的语言"编写;而Kiro和Spec Kit允许用自然语言+Markdown
  • 分歧点三:规范的生命周期? 有的工具认为规范是一次性的(用完即弃),有的认为规范应该长期维护

1.2 SDD的三个层级

根据Birgitta Böckeler的分析,SDD存在三个递进的实现层级:

复制代码
┌─────────────────────────────────────────────────────┐
│ Level 3: Spec-as-Source(规范即源码)               │
│   ↑ 人只编辑规范,代码完全自动生成                  │
│   │ 代码标注 "GENERATED FROM SPEC - DO NOT EDIT"    │
├─────────────────────────────────────────────────────┤
│ Level 2: Spec-anchored(规范锚定)                  │
│   ↑ 规范在功能完成后继续保留,随功能演进更新        │
├─────────────────────────────────────────────────────┤
│ Level 1: Spec-first(规范优先)                     │
│     为当前任务编写规范,任务完成后规范可能被弃用     │
└─────────────────────────────────────────────────────┘

来源: Birgitta Böckeler, "Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl", martinfowler.com, 2025年10月15日

1.3 什么是"规范(Spec)"?

"A spec is a structured, behavior-oriented artifact --- or a set of related artifacts --- written in natural language that expresses software functionality and serves as guidance to AI coding agents."

--- Birgitta Böckeler

规范与以下概念的区别:

  • 与提示词(Prompt)的区别:规范是结构化的、持久的;提示词是即时的、一次性的
  • 与Memory Bank的区别:Memory Bank(如AGENTS.mdarchitecture.md)是跨所有会话的上下文;规范只与特定功能的任务相关
  • 与PRD的关系:规范最接近"产品需求文档(PRD)"的概念,但更面向AI消费

2. SDD的历史渊源与2025年的复兴

2.1 概念起源

SDD并非2025年的全新发明。其根源可追溯至:

  1. Contract-First API Design(合约优先设计):自Swagger/OpenAPI出现以来(2011年),"先写API规范,再写实现"的实践就已存在
  2. Model-Driven Development(模型驱动开发, MDD):2000年代流行的MDD使用UML或自定义DSL作为"规范",通过代码生成器产出代码
  3. Executable Specifications(可执行规范):BDD(行为驱动开发)中Cucumber等工具让规范可以直接运行
  4. Design-by-Contract(契约式设计):Bertrand Meyer在1986年提出的概念

2.2 为什么AI让SDD重新火热?

2025年SDD复兴的核心驱动力:

驱动因素 说明
LLM上下文窗口扩大 从8K到200K+ tokens,AI可以"读完"完整规范
AI编码能力提升 从补全到全文件/全项目生成
Vibe Coding的痛点暴露 无约束的AI生成导致质量问题和维护噩梦
非确定性问题 相同提示词每次生成不同代码,规范提供"锚定"机制

Thoughtworks技术雷达原文(2025年11月,Assess级别)

"Spec-driven development is an emerging approach to AI-assisted coding workflows. While the term's definition is still evolving, it generally refers to workflows that begin with a structured functional specification, then proceed through multiple steps to break it down into smaller pieces, solutions and tasks."

2.3 关键里程碑

  • 2025年2月:Andrej Karpathy提出"Vibe Coding"概念
  • 2025年7月:Amazon推出Kiro IDE,内置SDD工作流
  • 2025年9月:GitHub发布Spec Kit开源工具包
  • 2025年10月:Tessl Framework进入私有测试
  • 2025年11月:Thoughtworks技术雷达将SDD列入"Assess"象限
  • 2026年:SDD工具生态继续快速演化

3. SDD vs Vibe Coding:给AI立规矩

3.1 什么是Vibe Coding?

Vibe Coding 是AI研究者Andrej Karpathy于2025年2月在X(Twitter)上提出的概念:

"There's a new kind of coding I call 'vibe coding', where you fully give in to the vibes, embrace exponentials, and forget that the code even exists... I 'Accept All' always, I don't read the diffs anymore."

核心特征

  • 用自然语言描述需求,AI直接生成代码
  • 开发者不阅读、不理解生成的代码
  • 通过结果反馈(能跑就行)迭代修复
  • 2025年被Collins词典评为"年度词汇"

来源: Wikipedia "Vibe coding" 条目; Karpathy X post, 2025年2月2日

3.2 Vibe Coding的主要问题

问题类别 具体表现 来源
安全漏洞 Lovable平台170/1645个应用存在信息泄露 Semafor, 2025年5月
代码质量 AI共创代码"重大问题"率是人类代码的1.7倍 CodeRabbit, 2025年12月
技术债务 代码重构量从25%降至10%,代码重复4倍增长 GitClear, 2025年
生产力悖论 经验开发者使用AI工具实际慢19%(尽管自认为快20%) METR, 2025年7月
维护噩梦 "Vibe coding hangover" --- 接手AI代码如同噩梦 Fast Company, 2025年9月
删库事件 Replit AI agent删除用户生产数据库 The Register, 2025年7月

3.3 SDD作为Vibe Coding的"解毒剂"

GitHub Blog的表述最为直接

"As coding agents have grown more powerful, a pattern has emerged: you describe your goal, get a block of code back, and often... it looks right, but doesn't quite work. This 'vibe-coding' approach can be great for quick prototypes, but less reliable when building serious, mission-critical applications."

"The issue isn't the coding agent's coding ability, but our approach. We treat coding agents like search engines when we should be treating them more like literal-minded pair programmers."

SDD与Vibe Coding的核心对比:

维度 Vibe Coding SDD
输入 模糊的自然语言提示 结构化的功能规范
控制程度 低------"Accept All" 高------每个阶段检查点验证
适用场景 原型、个人项目、周末项目 生产级应用、团队协作
AI角色 自由发挥 按规范执行
可维护性 高(规范即文档)
安全性 堪忧 规范中可嵌入安全约束

3.4 某些场景下Vibe Coding可能更合适

公平地说,并非所有场景都需要SDD:

  • 一次性脚本:数据清洗、格式转换等用完即弃的工具
  • 快速原型验证:验证技术可行性,不关心长期维护
  • 个人学习项目:探索新技术栈,不进生产环境
  • 创意探索:快速迭代UI设计,寻找灵感

Simon Willison的界定标准:"If an LLM wrote every line of your code, but you've reviewed, tested, and understood it all, that's not vibe coding in my book --- that's using an LLM as a typing assistant."


4. SDD vs TDD/BDD/DDD:方法论全景对比

4.1 对比矩阵

维度 SDD TDD BDD DDD Code-first
核心思想 先写规范,规范驱动AI生成代码 先写测试,测试驱动实现 用业务语言描述行为,行为驱动开发 以领域模型为中心组织代码 先写代码,后补文档
最先编写 功能规范文档 失败的单元测试 Given-When-Then场景 统一语言+领域模型 业务逻辑代码
主要工件 Spec文档(Markdown/结构化文本) 测试套件 特性文件(.feature) 领域模型+限界上下文 源代码
目标受众 开发者+AI Agent 开发者 开发者+产品+QA 架构师+开发者+领域专家 开发者
AI时代适用性 ⭐⭐⭐⭐⭐ 专为AI设计 ⭐⭐⭐ AI可生成测试 ⭐⭐⭐ AI可理解场景 ⭐⭐⭐⭐ 领域知识对AI有指导意义 ⭐⭐ 无结构化约束
最适合场景 AI辅助的中大型功能开发 复杂业务逻辑的精确实现 跨角色协作的需求澄清 复杂业务领域的系统设计 快速迭代的小型项目
反馈速度 中(需等规范→代码生成) 快(秒级测试反馈) 中(需运行场景) 慢(设计层面反馈) 快(直接运行代码)

4.2 SDD是TDD的替代还是扩展?

结论:SDD是TDD之上的扩展,而非替代。

理由:

  1. 层级不同:TDD在代码层面工作(微观),SDD在需求/设计层面工作(宏观)
  2. 互补关系:Spec Kit的任务分解中明确包含"test-driven development structure"
  3. SDD + TDD的组合:先用SDD确定"做什么",再用TDD确保"做对了"

GitHub Spec Kit文档中明确提到:"If tests are requested, test tasks are included and ordered to be written before implementation"------SDD流程内嵌了TDD。

4.3 推荐的方法论组合(2025-2026)

在当前技术环境下,推荐组合使用:

  1. SDD + TDD:SDD负责宏观的功能规范和任务分解,TDD负责微观的实现正确性
  2. SDD + DDD:DDD提供领域模型和统一语言,SDD将其转化为AI可消费的规范
  3. SDD + BDD:BDD的Given-When-Then格式可直接作为SDD规范的一部分

5. 规范格式与工具链全景

5.1 六大规范格式对比

格式 主要用途 机器可读? 支持代码生成? 常见工具生态 最适合场景
OpenAPI REST API描述 ✅ YAML/JSON ✅ 50+语言 Swagger UI, Postman, OpenAPI Generator 同步REST API
AsyncAPI 事件驱动API描述 ✅ YAML/JSON AsyncAPI Generator, Specmatic 消息队列/事件流
Protocol Buffers RPC接口+数据序列化 ✅ .proto ✅ 多语言 protoc, gRPC, buf 高性能微服务通信
GraphQL Schema 查询语言类型定义 ✅ SDL Apollo, GraphQL Codegen 灵活前端数据获取
JSON Schema 数据结构验证 ✅ JSON ✅ 部分 AJV, json-schema-to-typescript 数据验证/配置
TypeSpec 多协议API设计 ✅ .tsp ✅ OpenAPI/JSON Schema/Protobuf TypeSpec compiler, VS Code扩展 大规模API设计

5.2 分类

API描述语言:OpenAPI、AsyncAPI、GraphQL Schema、TypeSpec

  • 理由:定义服务的接口契约,包含端点、操作、请求响应格式

数据描述语言:Protocol Buffers、JSON Schema

  • 理由:主要定义数据结构和序列化格式,不直接描述API行为

跨类别:TypeSpec可同时生成API描述(OpenAPI)和数据格式(JSON Schema、Protobuf)

5.3 TypeSpec与OpenAPI的关系

TypeSpec是微软推出的API设计语言,它解决了OpenAPI的以下痛点:

typespec 复制代码
// TypeSpec --- 简洁、可复用、有类型系统
import "@typespec/http";
using Http;

model Store {
  name: string;
  address: Address;
}

@route("/stores")
interface Stores {
  list(@query filter: string): Store[];
  read(@path id: Store): Store;
}

TypeSpec → 自动生成 → OpenAPI YAML(通常数百行)

问题 OpenAPI 手写 TypeSpec
冗长重复 数千行YAML 几十行TypeSpec
跨协议 需要维护多份规范 一份TypeSpec生成多格式
复用性 需$ref引用,容易出错 原生model继承和组合
IDE支持 有限的schema验证 完整的语言服务器支持

来源: https://typespec.io/ --- "Design your data up front and generate schemas, API specifications, client/server code, docs, and more."


6. 代码生成与契约测试

6.1 OpenAPI Generator深度调研

支持规模

  • 50+ 客户端生成器
  • 40+ 服务端生成器
  • 支持文档、配置、Schema生成

可生成的产物类型

  1. 客户端SDK:Java, Python, TypeScript, Go, Ruby, C#, Swift, Kotlin等
  2. 服务端骨架:Spring Boot, Flask, Express, ASP.NET, Go Gin等
  3. 文档:HTML, Cwiki
  4. 配置:Apache2, Nginx配置
  5. Schema:MySQL表定义, GraphQL Schema

CLI命令示例

bash 复制代码
openapi-generator generate \
  -i petstore.yaml \       # 输入:OpenAPI规范文件
  -g python \              # 生成器:目标语言/框架
  -o ./generated-client \  # 输出目录
  --additional-properties=packageName=petstore_client  # 额外配置

避免覆盖手写逻辑的设计模式

  • Inversion of Control (IoC):服务端骨架只生成接口定义,业务逻辑写在单独文件
  • .openapi-generator-ignore:类似.gitignore,标记不应被覆盖的文件
  • 模板覆盖:自定义Mustache模板,控制生成内容

"再次运行生成器"的设计模式 :叫做 Regeneration PatternTemplate-based Generation,通过IoC确保每次重新生成不会破坏业务代码。

6.2 代码生成工具对比

工具 优势领域 输入格式 输出类型
OpenAPI Generator 全能型REST API生态 OpenAPI 2.0/3.x 客户端/服务端/文档
protoc 高性能跨语言RPC .proto gRPC客户端/服务端
GraphQL Codegen 前端类型安全 GraphQL Schema + Operations TypeScript类型/Hooks
AsyncAPI Generator 事件驱动架构 AsyncAPI 消息处理器骨架

6.3 代码生成的常见问题

搜集自多篇讨论"openapi generator limitations"的文章:

  1. 模板质量参差不齐:社区维护的生成器质量不一,有些生成的代码不够idiomatic
  2. 过度生成:为简单API生成过多样板代码,增加维护负担
  3. 规范与实现的漂移:规范更新后忘记重新生成,或生成后手动修改导致不一致
  4. 复杂业务逻辑无法表达:规范只能描述接口,无法描述内部逻辑
  5. 学习曲线:配置选项过多,新手容易迷失

6.4 契约测试与SDD的关系

Specmatic 是将契约测试与SDD结合的代表性工具:

"Specmatic supercharges your API Specifications by leveraging them as 'Executable Contracts'."

工作原理

  1. OpenAPI/AsyncAPI/GraphQL规范 → 自动转化为可执行的契约测试
  2. 无需手写测试代码(No-Code)
  3. 自动生成正向测试(功能验证)和负向测试(边界条件)

契约测试 vs 传统集成测试

维度 契约测试 传统集成测试
依赖 不需要真实服务运行 需要所有服务可用
速度 毫秒级 秒~分钟级
稳定性 高(隔离测试) 低(环境依赖多)
覆盖 接口契约级别 端到端流程

订单服务契约测试示例流程

复制代码
┌─────────────────────────────────────────────────────────────┐
│                     中央契约仓库                             │
│              orders-api-spec.yaml (OpenAPI)                  │
└─────────────┬───────────────────────────┬───────────────────┘
              │                           │
     ┌────────▼────────┐        ┌────────▼────────┐
     │  Provider(订单服务)│    │  Consumer(前端)   │
     │                  │        │                  │
     │ Specmatic自动生成 │        │ Specmatic自动生成 │
     │ 请求→验证响应    │        │ Mock服务          │
     │ 符合规范         │        │ (智能虚拟化)     │
     └──────────────────┘        └──────────────────┘
              │                           │
              ▼                           ▼
     规范变更时CI自动           消费方无需等待
     触发契约测试               提供方就绪即可开发

来源: specmatic.io; 信任企业包括British Airways, Commonwealth Bank of Australia, Prudential, Telstra等


7. 三大SDD工具深度对比:Kiro、Spec Kit、Tessl

7.1 工具概览

维度 Kiro (Amazon) Spec Kit (GitHub) Tessl Framework
发布时间 2025年7月 2025年9月 2025年(私有Beta)
分发方式 独立IDE(基于VS Code) + CLI CLI + 工作区配置 CLI + MCP服务器
SDD层级 Spec-first Spec-first(探索Spec-anchored) Spec-anchored / Spec-as-source
工作流 Requirements → Design → Tasks Constitution → Specify → Plan → Tasks → Implement Spec ↔ Code(双向同步)
支持的AI工具 内置Claude 30+ AI编码工具 多种编码助手
核心理念 轻量简洁 可定制+社区驱动 规范即主工件

7.2 GitHub Spec Kit详解

核心命令

命令 作用
/speckit.constitution 创建项目治理原则(不可变的架构约束)
/speckit.specify 定义要构建什么(功能需求+用户故事)
/speckit.plan 创建技术实现计划(指定技术栈和约束)
/speckit.tasks 生成可操作的任务列表
/speckit.implement 按计划执行所有任务

设计理念

  • Intent-driven development:规范定义"什么"而非"怎么做"
  • Multi-step refinement:多步精化而非一次性代码生成
  • Constitution(宪法):不可变的项目原则,每次生成都必须遵守

与GitHub Copilot协同 :Spec Kit通过.github/prompts/目录注入slash命令,Copilot在生成代码时参考规范文件。

来源: https://github.com/github/spec-kit; GitHub Blog "Spec-driven development with AI", 2025年9月2日

7.3 Amazon Kiro详解

Kiro的口号:"Bring engineering rigor to agentic development"(为Agent开发带来工程严谨性)

工作流

  1. Requirements:自然语言 → 结构化需求(EARS Notation)+ 验收标准(Given-When-Then)
  2. Design:分析代码库 → 架构设计、系统设计、技术栈选择
  3. Tasks:离散任务列表,按依赖排序,含可选的测试

"Go from vibe coding to viable code" 是Kiro的市场定位核心表述。

来源: https://kiro.dev/

7.4 观察与批判

Birgitta Böckeler(Thoughtworks)在试用三个工具后提出的核心质疑:

  1. "用大锤砸核桃"问题:小任务用SDD流程过于笨重------一个小bug变成4个用户故事16个验收标准
  2. Markdown审查疲劳:Spec Kit生成大量Markdown文件,审查这些比审查代码更累
  3. 虚假的控制感:即使有详尽的规范,AI Agent仍然经常无视指令
  4. MDD的幽灵:Spec-as-source让人想起已经失败的模型驱动开发

"I'd rather review code than all these markdown files. An effective SDD tool would have to provide a very good spec review experience."

--- Birgitta Böckeler, Thoughtworks


8. 实战案例与落地路径

8.1 企业案例汇总

公司/项目 使用的规范格式 采用SDD的初衷 取得的效果
Specmatic客户群(British Airways, CBA, Telstra等) OpenAPI, AsyncAPI, GraphQL 消除API集成问题,加速交付 API开发周期减少75%,流效率提升40%
Kiro早期用户 自然语言Spec(Kiro格式) AI编码的工程化 "从概念到原型仅一个周末","功能开发时间从周缩短至天"
GitHub Spec Kit社区 Markdown Spec 结构化AI编码流程 支持30+AI工具集成,2700+ GitHub Stars

8.2 Specmatic深度案例

背景:Specmatic是将"API规范即可执行契约"理念落地的先驱工具

技术栈:支持OpenAPI, AsyncAPI, GraphQL, gRPC(Protobuf), WSDL, Arazzo

实施过程

  1. 团队将现有API规范存入"中央契约仓库"(Git)
  2. Specmatic自动从规范生成契约测试(零代码)
  3. Provider方CI流水线自动验证实现是否符合规范
  4. Consumer方获得智能Mock服务,可并行开发
  5. 规范变更时自动触发向后兼容性检查

量化效果(来自Specmatic官方数据):

  • 消除约25%的合约不匹配缺陷
  • 开发周期缩短达75%
  • 流效率提升40%

来源: specmatic.io; "Trusted By" 列出 British Airways, CBA, Macquarie, Prudential, Telstra, Tietoevry, TM Forum

8.3 从零到一的实践步骤

以OpenAPI + Spec Kit为例:

第1步:编写最小OpenAPI规范

yaml 复制代码
openapi: 3.0.0
info:
  title: Todo API
  version: 1.0.0
paths:
  /todos:
    get:
      summary: List all todos
      responses:
        '200':
          description: A list of todos
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Todo'
components:
  schemas:
    Todo:
      type: object
      required: [id, title]
      properties:
        id:
          type: integer
        title:
          type: string
        completed:
          type: boolean

第2步:生成客户端代码

bash 复制代码
openapi-generator generate -i todo-api.yaml -g typescript-axios -o ./client

第3步:生成服务端骨架

bash 复制代码
openapi-generator generate -i todo-api.yaml -g python-flask -o ./server

第4步:可修改 vs 会重新生成的代码

类别 文件 说明
✅ 可修改 controllers/todo_controller.py 业务逻辑实现
⚠️ 会重新生成 models/todo.py 数据模型定义
⚠️ 会重新生成 openapi/openapi.yaml 规范副本
✅ 可修改 .openapi-generator-ignore 保护列表

第5步:测试

bash 复制代码
# 用Specmatic进行契约测试(零代码)
specmatic test --contract todo-api.yaml --host localhost --port 5000

8.4 常见坑点与解决方案

坑点 原因 解决方案
生成的代码风格不符合项目规范 默认模板不够定制化 自定义Mustache模板
规范更新后忘记重新生成 手动流程容易遗忘 CI/CD中加入生成和验证步骤
复杂继承关系生成错误 OpenAPI的allOf/oneOf处理复杂 简化规范结构或使用TypeSpec

9. 优势、挑战与争议

9.1 十大优势(按维度分类)

对个人开发者
  1. 减少认知负载:先想清楚做什么,再交给AI执行 GitHub Blog
  2. 提高AI输出质量:明确的规范减少AI的"猜测",降低错误率 GitHub Blog
  3. 强制思考:写规范的过程迫使你理清需求,避免"动手写代码才发现没想清楚" Martin Fowler
对团队协作
  1. 统一的沟通语言:规范成为团队的"单一事实源",消除信息不对称 Specmatic
  2. 并行开发:前后端/多服务团队可基于规范同时开发,无需等待 Specmatic
  3. 降低新人上手门槛:阅读规范比阅读数万行代码快得多 GitHub Spec Kit
对AI辅助
  1. 可重复生成:相同规范多次生成,结果更一致 Tessl
  2. 技术栈独立:同一规范可生成Python、Go、Java等不同实现 Spec Kit
  3. 规范即提示词的超集:比临时写的prompt更完整、更结构化 GitHub Blog
对长期维护
  1. 活文档:规范与代码同步演进,永远是最新的"设计文档" Specmatic

9.2 十大挑战与批评

流程开销
  1. 前期投入大:对小任务来说,写规范可能比直接写代码更慢 Birgitta Böckeler, Thoughtworks
  2. Markdown审查疲劳:SDD工具生成大量需要审阅的文档 Birgitta Böckeler
  3. 过度工程风险:为简单问题创建复杂的规范结构 Thoughtworks技术雷达
AI相关
  1. 虚假的控制感:即使有详尽规范,AI仍可能忽视部分指令 Birgitta Böckeler
  2. 非确定性:相同规范多次生成可能得到不同代码 Martin Fowler
方法论争议
  1. "瀑布模型借尸还魂":批评者认为大量前期规范设计违反敏捷原则
  2. 功能/技术分离困难:何时保持纯功能描述,何时加入技术细节?边界模糊 Birgitta Böckeler
  3. "Bitter Lesson"风险:为AI手工制定详细规则最终可能不如让AI自行学习 Thoughtworks技术雷达
实际落地
  1. 工具不成熟:SDD工具仍在快速演化,API频繁变更 Martin Fowler
  2. 棕地项目困难:在已有大型代码库中引入SDD比绿地项目难得多 Birgitta Böckeler

9.3 "SDD是瀑布模型"的争议

反对者观点

  • SDD要求先写完整规范再开始编码,这是"Big Design Upfront"
  • 在需求快速变化的环境中,维护规范成为负担
  • 规范可能成为"形式主义",团队为了满足流程要求而写规范

支持者观点

  • SDD的规范可以迭代修改,不是一锤定音
  • 规范的粒度可以很小(一个user story级别)
  • 在AI时代,规范→代码的转化速度极快,不像传统瀑布那样有巨大时间成本
  • Spec Kit明确支持"iterative enhancement"模式

我的判断 :SDD与敏捷并不矛盾,关键在于规范的粒度控制。在Scrum团队中:

  • Sprint级别:每个Story可以有一个轻量级Spec
  • 不需要在Sprint开始前写完所有规范
  • 规范可以在Refinement会议中逐步补充

Thoughtworks技术雷达的态度较为审慎:"We may be relearning a bitter lesson --- that handcrafting detailed rules for AI ultimately doesn't scale."

9.4 SDD与DDD的关系

SDD和DDD是互补而非竞争关系:

  • DDD提供"统一语言"和"限界上下文"------这正是SDD规范的理想输入
  • SDD的规范可以使用DDD的术语体系,确保AI生成的代码符合领域模型
  • 两者都强调"在编码之前先建立共识"

10. 未来趋势:从开发到工程

10.1 专家预测(2026-2027)

  1. 规范自动生成:从自然语言需求自动生成OpenAPI/AsyncAPI规范(Specmatic的"Genie"功能已实现:描述需求→自动生成完整API规范)
  2. Spec即Code:Tessl的方向------规范成为唯一需要人类维护的工件,代码完全自动生成
  3. 多Agent协作:不同的AI Agent负责规范的不同部分(需求Agent、设计Agent、实现Agent)
  4. 规范验证自动化:AI自动检查规范的完整性、一致性和可实现性

10.2 "规范"与"提示词"的边界模糊化

"I've even recently heard people use 'spec' basically as a synonym for 'detailed prompt'."

--- Birgitta Böckeler

当前趋势显示:

  • 规范正在变得越来越像"高质量的提示词"
  • 提示词工程正在变得越来越像"规范设计"
  • 未来可能融合为"意图工程(Intent Engineering)"

10.3 从"Spec-Driven Development"到"Spec-Driven Engineering"

GitHub在Spec Kit中探索的方向暗示了一个更大的愿景:

"We're moving from 'code is the source of truth' to 'intent is the source of truth.' With AI the specification becomes the source of truth and determines what gets built."

--- GitHub Blog

Development vs Engineering的区别

  • Development:单个项目/功能的开发流程
  • Engineering:整个组织的工程实践体系,包括治理、合规、可扩展性

10.4 个人反思

如果我只有一个周末尝试SDD

  • 选择 OpenAPI + Spec Kit + GitHub Copilot
  • 构建一个简单的REST API(如Todo应用)
  • 原因:OpenAPI生态最成熟,Spec Kit免费开源,Copilot集成最顺滑

SDD不值得用的场景

  1. 探索性原型:当你还不确定要做什么时,写规范是浪费时间
  2. 极小的修改:修复一个CSS样式、改一行配置------用SDD是"大炮打蚊子"

SDD会是长期范式还是一阵风口?

我认为SDD的核心理念 (先明确意图再编码)将是长期存在的范式,但当前的具体工具和流程可能会大幅演变。理由:

  1. 历史证据:Contract-first API设计已经存活了15年以上
  2. AI驱动力:只要AI生成代码需要约束和指导,SDD就有价值
  3. 但工具形态可能变化:从显式的Markdown文件→可能内嵌到IDE中不可见

最大的"顿悟时刻"来自Birgitta Böckeler的这段话:"LLMs take some of the overhead and constraints of MDD away, so there is a new hope that we can now finally focus on writing specs and just generate code from them. With LLMs, we are not constrained by a predefined and parseable spec language anymore."

这让我意识到:SDD之所以在2025年重新成为可能,不是因为"规范"变了,而是因为"从规范到代码"的成本趋近于零了。


11. 行动建议与总结

11.1 不同读者的下一步

类型A(新手开发者)

  1. 从写一份简单的OpenAPI规范开始(20行即可)
  2. 用OpenAPI Generator体验"规范→代码"的魔力
  3. 在个人项目中尝试Kiro或Spec Kit

类型B(团队Leader)

  1. 评估团队的API开发流程是否存在规范漂移问题
  2. 在一个新微服务上试点Contract-first + Specmatic
  3. 制定规范模板和审查标准

类型C(架构师/决策者)

  1. 评估SDD在组织级别的ROI(减少集成缺陷、加速并行开发)
  2. 考虑建立"中央契约仓库"
  3. 关注TypeSpec作为统一多协议规范的可能性

11.2 三个常见误区

误区 真相
"SDD就是写更多文档" SDD的规范是可执行的AI可消费的,不是传统的Word文档
"SDD只适用于新项目" 存量系统可以逐步引入,例如先给新API编写规范
"SDD会让开发变慢" 前期规范投入换来后期减少返工、加速AI生成和团队协作

11.3 容易混淆的术语澄清

  1. Contract-first ≠ Spec-driven

    • Contract-first专注于API接口约定(机器可读的OpenAPI等)
    • Spec-driven范围更广,包含功能需求、用户故事、行为描述(可以是自然语言)
    • 混淆来源:两者都强调"先写规范"
  2. Executable Specification ≠ SDD

    • 可执行规范是一种技术手段(如BDD的.feature文件、Specmatic的契约测试)
    • SDD是一种开发流程/方法论
    • 混淆来源:SDD经常使用可执行规范作为其落地形式
  3. Design-first ≠ Spec-driven

    • Design-first通常指先设计API,再实现(传统API设计方法)
    • Spec-driven在AI时代强调规范作为AI的输入和锚定
    • 混淆来源:两者在"先设计/规范"这一点上重叠

引用来源汇总

# 来源 标题 日期 URL
1 Martin Fowler / Birgitta Böckeler Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl 2025-10-15 https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html
2 Thoughtworks Technology Radar Spec-driven development (Assess) 2025-11 https://www.thoughtworks.com/radar/techniques/spec-driven-development
3 GitHub Blog / Den Delimarsky Spec-driven development with AI: Get started with a new open source toolkit 2025-09-02 https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/
4 GitHub Spec Kit README 2025-2026 https://github.com/github/spec-kit
5 Wikipedia Vibe coding 持续更新 https://en.wikipedia.org/wiki/Vibe_coding
6 Specmatic Official Website 2025-2026 https://specmatic.io/
7 Amazon / Kiro Official Website 2025-2026 https://kiro.dev/
8 Microsoft TypeSpec 2025-2026 https://typespec.io/
9 OpenAPI Tools OpenAPI Generator 持续更新 https://openapi-generator.tech/
10 Andrej Karpathy X (Twitter) post on vibe coding 2025-02-02 https://x.com/karpathy/status/1886192184808149383
11 Ars Technica Will the future of software development run on vibes? 2025-03-05 ---
12 Fast Company The vibe coding hangover is upon us 2025-09-09 ---
13 METR Measuring the Impact of Early-2025 AI on Experienced OS Dev Productivity 2025-07-10 https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/
14 CodeRabbit State of AI vs Human Code Generation Report 2025-12-17 ---
15 GitClear How AI generated code compounds technical debt 2025-02-19 ---

本文写作时间:2026年5月。SDD领域正在快速演变,建议读者关注上述工具的最新版本和Thoughtworks技术雷达的后续更新。

相关推荐
楼兰公子1 小时前
RK3588 Linux驱动开发大纲
linux·驱动开发
智者知已应修善业2 小时前
【分立元件OCL电路】2024-5-17
驱动开发·经验分享·笔记·硬件架构·硬件工程
楼兰公子2 小时前
RK3588** 平台(瑞芯微旗舰 SoC,四核 A76 + 四核 A55,Mali-G610,支持 8K 编解码)整理一份系统性的驱动开发实战指南
驱动开发
小此方1 天前
Re:Linux系统篇(二十四)进程篇·九:进程从创建到退出的底层机制与写时拷贝全解
linux·运维·驱动开发
都在酒里1 天前
Linux字符设备驱动开发(九):内核定时器——实现LED周期性闪烁与轮询驱动原理
linux·运维·驱动开发·交互
都在酒里1 天前
Linux字符设备驱动开发(十):综合实例——I2C传感器 + LED智能控制与进阶指南
linux·运维·服务器·驱动开发·交互
hai3152475432 天前
RISC-V核E203核前向旁路的架构性顽疾
驱动开发·架构·硬件架构·硬件工程·risc-v
hai3152475432 天前
RISC-V CVA6 AXI适配器+DMA桥蜂鸟E203处理器的总线接口单元(BIU)仲裁器
驱动开发·fpga开发·硬件架构·硬件工程·精益工程
都在酒里2 天前
Linux字符设备驱动开发(七):输入子系统——驱动GPIO按键并上报事件
linux·驱动开发·交互