Spec-Driven Development
Spec-Driven Development
Spec-Driven Development(SDD)
(AI时代的软件开发方法)
Spec-Driven Development 的核心思想是:
1
系统由规格驱动,而不是由代码驱动
传统开发:
1
需求 → 设计 → 写代码 → 系统
SDD:
1
Spec → AI实现 → 系统
代码只是 规格的自动实现结果。
一、为什么 SDD 会出现
SDD 的出现是因为两个技术变化:
1 代码生成能力突破
大型模型已经能稳定生成:
- API
- CRUD
- 前后端逻辑
- 测试代码
典型代表:
- GPT
- Claude
因此:
1
写代码不再是稀缺能力
2 Repo级理解能力
AI已经可以理解:
1
2
3
整个代码库结构
跨文件依赖
模块关系
因此 AI 可以根据 规格 完整实现功能。
二、SDD 的核心思想
SDD 有三条核心原则。
原则1:Spec 是唯一事实来源(非常重要)
系统逻辑必须写在:
1
Spec
而不是:
1
代码
代码只是:
1
Spec 的实现
原则2:Spec 必须结构化
Spec 不是自然语言需求。
它必须包含:
1
2
3
4
5
目标
输入
输出
约束
边界
AI 才能执行。
原则3:开发过程围绕 Spec
开发流程变成:
1
2
3
4
5
6
7
写 Spec
↓
AI生成代码
↓
运行测试
↓
调整 Spec
而不是:
1
写代码 → 修 bug
三、SDD 的三层规格体系
SDD 的基础是 Spec System。
结构:
1
2
3
4
5
System Spec
↓
Module Spec
↓
Task Spec
System Spec
描述系统结构:
1
2
3
4
模块划分
架构
数据模型
技术约束
Module Spec
描述模块职责:
1
2
3
模块接口
数据结构
依赖关系
Task Spec
描述具体任务:
1
2
3
实现 API
实现逻辑
实现组件
AI根据 Task Spec 生成代码。
四、SDD 开发流程
完整 SDD 流程:
1
2
3
4
5
6
1 定义系统 Spec
2 定义模块 Spec
3 编写任务 Spec
4 AI生成代码
5 自动测试
6 修订 Spec
流程核心是:
1
Spec → AI → Code
五、SDD 的实际开发示例
例如开发订单系统。
Step 1 System Spec
1
2
3
4
5
6
系统模块:
User
Order
Payment
Inventory
Step 2 Module Spec
Order 模块:
1
2
3
4
5
6
7
职责:
管理订单生命周期
接口:
createOrder
cancelOrder
getOrder
Step 3 Task Spec
1
2
3
4
5
6
7
8
9
10
11
12
13
Goal:
实现 createOrder API
Inputs:
user_id
product_id
Outputs:
order_id
Constraints:
必须校验库存
订单状态默认 pending
Step 4 AI 实现
AI生成:
1
2
3
4
controller
service
repository
tests
工程师验证即可。
六、SDD 与 Vibecoding 的关系
Vibecoding:
1
自然语言驱动 AI 编码
但它往往是:
1
个人开发习惯
SDD 是:
1
工程化 Vibecoding
区别:
| Vibecoding | SDD |
|---|---|
| 个人行为 | 团队方法 |
| 自然语言 | 结构化Spec |
| 临时Prompt | 标准Spec |
| 即兴开发 | 规范流程 |
七、SDD 带来的效率变化
传统开发时间分布:
1
2
3
需求理解 20%
编码 50%
调试 30%
SDD:
1
2
3
Spec设计 40%
AI生成 20%
验证测试 40%
编码时间大幅下降。
八、SDD 对工程师能力要求
能力结构变化。
传统工程师:
1
2
3
编码
算法
调试
SDD 工程师:
1
2
3
系统设计
规格设计
AI协作
核心能力变成:
1
Spec设计
九、SDD 的工程结构
典型项目结构:
1
2
3
4
5
6
7
8
9
repo/
specs/
system/
modules/
tasks/
src/
tests/
AI根据:
1
specs
生成:
1
src
代码。
十、SDD 最大优势
SDD 解决了 AI 开发最严重问题:
1
2
AI写代码很快
但系统容易混乱
Spec 作为:
1
系统蓝图
可以稳定结构。
十一、SDD 的组织意义
SDD 本质上是一种:
1
AI时代的软件生产体系
它把软件开发从:
1
Code Driven
转变为:
1
Spec Driven
十二、未来趋势
未来的软件项目可能是:
1
2
3
4
5
Specs
↓
Agents
↓
Code
开发流程:
1
2
3
4
写规格
AI实现
自动测试
持续迭代
代码会越来越自动化。
一句话总结:
1
SDD = 用规格驱动AI完成软件开发
软件工程的核心将从:
1
写代码
转变为:
1
设计系统规格
This post is licensed under CC BY 4.0 by the author.