151 lines
3.8 KiB
Markdown
Executable File
151 lines
3.8 KiB
Markdown
Executable File
# 规格驱动开发(SDD)
|
||
|
||
> 相关:[[AI编程演进阶段]]、[[Harness工程]]、[[Rule约束]]、[[BMAD]]、[[Spec_Kit]]、[[OpenSpec]]、[[Kiro]]
|
||
|
||
## 定义
|
||
|
||
**规格驱动开发**(Spec-Driven Development,SDD)是AI编程的第3阶段,以规格文档为核心的开发方法。
|
||
|
||
**核心思想**:Spec是单一事实来源(SSoT),所有开发活动围绕Spec展开。
|
||
|
||
## 核心特征
|
||
|
||
### 1. 规格中心化
|
||
- Spec是唯一的真相来源
|
||
- 所有代码从Spec生成
|
||
- Spec变更驱动代码变更
|
||
|
||
### 2. 结构化表达
|
||
- 需求以结构化形式表达
|
||
- 使用Markdown、YAML等格式
|
||
- 可机器解析和验证
|
||
|
||
### 3. 文件驱动
|
||
- 文件进,文件出
|
||
- 规格文件可版本化
|
||
- 规格文件可复用
|
||
|
||
## SDD框架对比
|
||
|
||
| 维度 | [[BMAD]] | [[Spec_Kit]] | [[OpenSpec]] | [[Kiro]] |
|
||
|------|----------|--------------|--------------|----------|
|
||
| 定位 | 企业级SDD操作系统 | 工程化Spec工作流 | 轻量Spec层 | IDE原生SDD |
|
||
| 理念 | Spec=治理体系+多Agent编排 | Spec=开发入口+Git生命周期 | Spec=变更单元(持续演化) | Spec=可执行源 |
|
||
| 生命周期 | 全生命周期 | 与分支绑定(短) | 长期存在(持续) | 持续驱动 |
|
||
| 粒度 | 大(系统/模块级) | 中(Feature级) | 小(变更/Patch级) | 中(Feature+行为) |
|
||
| 可执行 | 流程驱动 | 驱动开发流程 | 类Prompt | 可生成代码+测试 |
|
||
| 自动验证 | 无 | 无 | 弱 | 强(内建) |
|
||
| 适用场景 | 大型系统/多团队 | 新项目(0→1) | 存量项目/快速迭代 | 小团队/高自动化 |
|
||
|
||
## 规格类型
|
||
|
||
### 1. 需求规格(Feature Spec)
|
||
```markdown
|
||
# 用户注册功能
|
||
|
||
## 用户故事
|
||
作为一个新用户,我想要注册账号,以便使用系统功能。
|
||
|
||
## 验收标准
|
||
1. 用户可以输入邮箱和密码
|
||
2. 系统发送验证邮件
|
||
3. 用户点击链接完成验证
|
||
4. 验证成功后可以登录
|
||
|
||
## 字段定义
|
||
- email: string, required, unique
|
||
- password: string, required, min:8
|
||
- verified: boolean, default:false
|
||
```
|
||
|
||
### 2. 设计规格(Design Spec)
|
||
```markdown
|
||
# 数据库设计
|
||
|
||
## users表
|
||
- id: bigint, primary key
|
||
- email: varchar(100), unique
|
||
- password: varchar(255)
|
||
- verified: tinyint(1), default:0
|
||
- created_at: timestamp
|
||
- updated_at: timestamp
|
||
```
|
||
|
||
### 3. API规格(API Spec)
|
||
```yaml
|
||
openapi: 3.0.3
|
||
paths:
|
||
/api/v1/users:
|
||
post:
|
||
summary: 创建用户
|
||
requestBody:
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/CreateUserRequest'
|
||
```
|
||
|
||
## 规格流转
|
||
|
||
### 过程方案(Plans)
|
||
- 每次创建新文件
|
||
- 记录实现过程
|
||
- 不修改旧文件
|
||
- 保留决策轨迹
|
||
|
||
### 事实方案(Designs)
|
||
- 覆盖更新最终态
|
||
- 作为下次Plan的起点
|
||
- 必须保持最新
|
||
- Source of Truth
|
||
|
||
## 适用场景
|
||
|
||
### BMAD
|
||
- 企业级项目
|
||
- 多团队协作
|
||
- 强治理需求
|
||
- 合规要求高
|
||
|
||
### Spec Kit
|
||
- 新项目(0→1)
|
||
- 需要Git集成
|
||
- 中等复杂度
|
||
|
||
### OpenSpec
|
||
- 存量项目
|
||
- 快速迭代
|
||
- 轻量级需求
|
||
|
||
### Kiro
|
||
- 小团队
|
||
- 高自动化需求
|
||
- AWS项目
|
||
|
||
## 优势
|
||
|
||
- **单一真相来源**:避免信息不一致
|
||
- **可追溯**:Spec变更有历史记录
|
||
- **可验证**:Spec可以生成测试
|
||
- **可复用**:Spec可以在项目间复用
|
||
|
||
## 挑战
|
||
|
||
- **初始成本**:需要建立完整的Spec体系
|
||
- **维护成本**:Spec需要持续更新
|
||
- **学习曲线**:团队需要理解SDD理念
|
||
|
||
## 最佳实践
|
||
|
||
1. **从核心Spec开始**:先定义最重要的规格
|
||
2. **逐步扩展**:根据实践逐步添加规格
|
||
3. **定期Review**:定期审查和优化规格
|
||
4. **自动化验证**:尽可能自动化Spec验证
|
||
|
||
## 相关概念
|
||
|
||
- [[AI编程演进阶段]]:SDD是第3阶段
|
||
- [[Harness工程]]:SDD是Harness的组成部分
|
||
- [[过程方案vs事实方案]]:SDD的规格管理方式
|
||
- [[BMAD]]、[[Spec_Kit]]、[[OpenSpec]]、[[Kiro]]:SDD框架
|