SDD
SDD 这里采用
Specification-Driven Development的含义,即规格驱动开发。
1. 什么是 SDD
SDD 的核心思想是:
先把需求、约束、输入输出、边界和验收标准写清楚,再进入实现。
在 AI 协作开发里,这个思路更重要,因为模型非常依赖输入质量。规格不清,生成结果就会漂移。
2. 为什么 AI 时代更需要 SDD
传统开发中,需求写得模糊,资深工程师还能靠经验补洞。
但对 AI 来说:
- 模糊需求会直接变成模糊代码
- 漏掉约束会直接变成错误实现
- 缺少验收标准会导致输出无法判断对错
所以 SDD 本质上是在把“脑补空间”收窄。
3. 一份好规格至少应该包含什么
3.1 目标
这个功能到底要解决什么问题。
3.2 输入
- 输入来源
- 输入格式
- 必填字段
- 非法输入
3.3 输出
- 输出结构
- 成功条件
- 失败条件
3.4 业务规则
- 正常路径
- 异常路径
- 边界条件
3.5 非功能约束
例如:
- 性能
- 安全
- 权限
- 兼容性
- 可观测性
3.6 验收标准
最好写成可以检查的条件,而不是抽象描述。
例如:
- “支持用户登录”太模糊
- “邮箱密码正确时返回 access token,错误时返回 401 和明确错误码”才可验收
4. SDD 在 AI 协作里的典型流程
需求草稿
-> 规格结构化
-> AI 根据规格生成方案 / 代码
-> 根据验收标准验证
-> 发现缺口后修正规格
-> 再生成 / 再修改重点是:先修规格,再修实现。
5. SDD 与 Prompt Engineering 的关系
两者不是一回事。
Prompt Engineering
更关注怎么和模型说话。
SDD
更关注任务本身有没有被定义清楚。
可以理解为:
- SDD 负责“说什么”
- Prompt Engineering 负责“怎么说”
6. SDD 的常见模板
功能名称:
背景:
目标:
输入:
输出:
业务规则:
边界条件:
非功能要求:
验收标准:7. 适合 SDD 的场景
- 接口设计
- 后端业务逻辑
- 前后端协作
- Agent 工具定义
- RAG 问答结构设计
尤其适合多人协作和长期维护场景。
8. 常见误区
8.1 只有大项目才需要规格
错。小功能也需要最小规格,否则返工成本更高。
8.2 规格写完就不能改
错。规格是迭代产物,但每次修改都应明确记录变化。
8.3 AI 可以替你补完所有隐含规则
错。AI 可以补建议,但不能替代业务责任。
9. 一个简单例子
模糊需求
“做一个评论功能。”
结构化规格
- 目标:登录用户可对文章发表评论
- 输入:文章 ID、评论内容
- 输出:创建成功后的评论对象
- 规则:评论长度 1 到 500 字;未登录不可提交;敏感词命中则拒绝
- 验收:成功返回 201;未登录返回 401;长度非法返回 400
AI 在第二种输入下生成的结果通常会稳定得多。
10. 一句话总结
SDD 的价值在于:先把问题定义清楚,再让 AI 或工程师去实现,这样系统才更可控。