02-SDD到底是什么

简介: 《SDD规范驱动开发实操手册》第2篇详解SDD本质:以“规范为唯一真源”,提出三句定义、四层规范(宪法/行为/方案/任务)与EARS可验证句式,厘清其与瀑布、敏捷、TDD的本质差异,直击AI编码中需求衰减、规则失焦痛点。(239字)

SDD 规范驱动开发实操手册 · 第 2 篇 / 共 8 篇

全系列按「说明 → 介绍 → 使用 → 实操 → 排障 → 收益」推进,每篇都可独立阅读,收藏专栏后按序看不会断。

上一篇讲了为什么要做,这一篇讲它凭什么成立:一次典型的失败、三句话定义、与既有方法论的差异,以及决定成败的「规范四个层次」。2.6 节的 EARS 句式是全系列最该背下来的东西。

第二章 介绍:SDD 到底是什么

2.1 从一次典型的失败说起

一个真实场景(几乎每个用 AI 写代码的团队都经历过):

需求是"给结算页加优惠券"。你跟 AI 说了一句,它给了 200 行代码,跑起来了,你很满意。第二天产品说"一人只能领一张",改。第三天说"退款要把券退回来",再改。第四天测试发现"并发下超卖了 3 张券",AI 说"我帮你加个锁",加完把原本正常的过期逻辑弄坏了。

到第二周,你打开这个文件,发现自己也说不清现在的业务规则到底是什么——规则散落在 17 次对话、43 个 commit 和 3 个人的记忆里。

这不是 AI 不行,是输入不行。AI 一直在从你的对话历史里猜意图,而对话是会衰减的:上下文一满,前面的约束就被挤掉了。你以为是"它忘了",其实是你从来没把约束写在一个不会忘的地方。

2.2 SDD 的三句话定义

第一句:规范是唯一真源,代码是规范的产物。 需要改变系统时,先改规范,再由规范驱动代码变更。代码可以重写,规范不能丢。

第二句:规范必须先于代码存在,且以可验证的形式存在。 "可验证"是关键词。它把 SDD 和"写设计文档"区分开了。

第三句:规范是人与机器共读的。 给人看,用于评审与交接;给 AI 看,作为每次生成的输入约束。所以它必须结构化、短句、可编号、可追溯——这恰好也是好需求文档的标准。

2.3 与既有方法论的差异

方法论 核心产物 谁读 与代码的关系 主要失效点
瀑布 需求规格说明书(SRS) 人 文档完成后基本脱离,代码另行演进 文档与代码脱钩,改代码不改文档
敏捷 / Scrum 用户故事 + 验收标准 人 故事卡在迭代结束后废弃 粒度太粗,边界条件永远在"实现时再说"
TDD / BDD 测试用例 人 + 机器 测试即规范,但只覆盖已想到的路径 先写测试要求你已想清楚设计,且不描述"为什么"
SDD 分层规范(宪法/行为/方案/任务) 人 + AI 规范驱动生成,变更回写规范 规范腐败、流程过重(见第五章)

一句话概括区别:TDD 用测试锁住行为,SDD 用规范产生行为。 测试回答"它现在对不对",规范回答"它应该是什么、为什么"。

2.4 四个核心理念

意图显式化。 把"我想要一个能用的筛选"变成"用户可选择起止日期;只填一端按开区间;清空恢复全量;状态可分享"。隐含假设一旦写出来,就能被发现、被质疑、被测试。

约束前置。 技术选型、性能底线、安全要求、兼容范围,在生成代码之前就定下来。事后补约束的代价是重构,事前定约束的代价是十分钟。

任务可追溯。 每个任务能追回一条需求,每条需求能追回一个用户故事,每个用户故事能追回一个问题陈述。这条链断了,就会出现"这个字段是谁加的、能不能删"的经典困局。

变更走提案。 需求变化不是"直接改代码",而是产生一个变更单元(提案 + 规范增量 + 任务),实施后归档,规范随之演进。这让"系统现在的行为"永远有一份可查的答案。

2.5 规范的四个层次(落地成败的分水岭)

这是全书最重要的一张表。大部分团队 SDD 失败,是因为把所有东西塞进一个文件。

层次 文件 回答的问题 长度上限 变更频率 谁批准
L0 宪法 constitution.md 我们团队做技术决定的底线是什么 1 页 半年 技术负责人
L1 行为规范 spec.md / requirements.md 系统应该表现出什么行为(做什么,不做什么) 2-4 页 每个需求 产品 + 技术
L2 技术方案 plan.md / design.md 用什么结构、什么技术、怎么迁移和回滚实现它 2-3 页 每个需求 技术负责人
L3 任务清单 tasks.md 按什么顺序、由谁、以什么验证标准完成 1-2 页 每个需求 开发自管

纪律只有一条:上一层不写下一层的内容。 spec 里出现"用 Redis 做原子扣减"就是越界——那是 L2 的事。越界的后果是:技术方案一变,行为规范跟着作废,规范再也追不上代码。

2.6 EARS:让需求可测试的最小语法

EARS(Easy Approach to Requirements Syntax)是需求工程里的一套受限句式,被 Kiro 采纳为标准写法。它的价值不在学术,在于逼你把触发条件写出来。

中文场景下,我建议固定用这五种句式:

类型 句式 用途 示例
通用 系统应…… 恒成立的行为 系统应为每次库存变更记录一条不可修改的流水。
事件驱动 当〔触发〕时,系统应…… 由动作触发 当用户点击"领取"且库存大于 0 时,系统应创建一张"未使用"状态的券并返回券码。
状态驱动 当处于〔状态〕时,系统应…… 持续状态下的约束 当券处于"已锁定"状态时,系统应拒绝除核销与解锁外的所有状态变更。
非期望 如果〔异常条件〕,则系统应…… 错误与防护 如果用户已达到该券的每人限领上限,则系统应拒绝领取、返回 COUPON_LIMIT_REACHED,且不扣减库存。
可选特性 当启用〔配置〕时,系统应…… 开关型功能 当启用"仅限新用户"配置时,系统应仅允许注册 7 天内且无已支付订单的用户领取。

反例对照,这四句都是不合格的规范:

不合格写法 问题 改写成
系统应支持高并发领取 无法验证 当同一券模板在 1 秒内收到 500 次领取请求时,系统应成功发放不超过库存数量的券,且不出现负库存。
提示要友好 主观 如果领取失败,则系统应展示包含失败原因的提示文案,且文案中不出现内部错误码原文。
优惠券要能过期 缺触发与边界 当券实例的 expire_at 早于当前时间时,系统应在下一次读取该券时将其状态置为"已过期"。
退款时处理券 缺分支 如果订单退款成功且该订单使用的券仍在有效期内,则系统应将券状态恢复为"未使用";如果券已过期,则系统应仅记录一条"过期退回"流水,不恢复可用状态。

写作时守住三条:一句一条(不要用"并且""同时"连接两个行为)、给编号(FR-001 起,永不复用)、禁形容词(快速、友好、合理、尽量——全部删掉换成数字或明确条件)。

2.7 边界:什么该用、什么不该用

SDD 有明确的性价比拐点。用错场景,它就是纯负担。

改动特征 判断 处理方式
改文案、调样式、一行修复、改配置 不需要 直接改,不写任何规范
单文件、单函数、逻辑清晰、无状态、可 1 小时回滚 不需要 直接改,PR 描述写清意图即可
跨 2-3 个文件、有分支逻辑、有边界条件 轻量规范 只写 L1 的验收标准(5-10 条),plan 用口头 + PR 描述
跨模块、涉及数据模型变更、有并发或状态机 完整 SDD L0-L3 全走,含 analyze 门禁
多人并行、需要交接、有合规或审计要求 完整 SDD + 归档 全流程 + 变更提案 + 归档留痕
探索期原型、一次性脚本、技术验证 不需要 明确标注 throwaway,禁止进主干

手册建议的强制线:凡是涉及数据库结构变更、跨服务调用、资金或库存计算、权限判定的需求,一律走完整 SDD。 这四类改动的返工成本最高,规范投入产出比最好。其他按上表分级。

2.8 主流工具怎么选

维度 GitHub Spec Kit Amazon Kiro OpenSpec 纯 Markdown 自建
形态 CLI + 斜杠命令,注入到任意 AI 助手 独立 IDE(基于 Code OSS) CLI + 斜杠命令 无工具
核对心 宪法 → 规范 → 方案 → 任务 → 实施,带澄清与一致性分析门禁 需求(EARS)→ 设计 → 任务,与 IDE 深度集成,有 hooks 与 steering 面向存量系统的变更提案与规范增量(ADDED/MODIFIED/REMOVED),归档机制强 全靠约定
产物目录 .specify/memory/constitution.md、specs/〔feature〕/ .kiro/steering/、.kiro/specs/〔feature〕/ openspec/specs/、openspec/changes/〈id〉/ 自定义
最擅长 新项目、需要正式评审的产品需求 单人深度开发、需要 IDE 内闭环 存量系统、频繁小步变更 任何场景的兜底
主要短板 流程偏重,小改动承担不起 绑定自家 IDE,团队统一成本高 对新项目引导弱 无自动化,靠自觉
选它的信号 团队已在用 Claude Code / Copilot / Cursor 等 团队愿意统一换 IDE,且以单人/小队为主 项目已上线 2 年以上,代码量大、规范为零 公司禁止引入新工具,或只想先试水

我的建议:新团队从 Spec Kit 起步(生态最广、可换 AI 助手、Markdown 全透明)。存量系统改造用 OpenSpec 的"增量规范"思路,避免一上来要求补全历史文档。无论用哪个,第四章的实操流程是通用的——工具只是帮你把文件生成出来,判断标准在你脑子里。



下一篇:方法论清楚了,怎么装进现有工程?三个开工决策、命令行安装、目录约定、五阶段流程与四道门禁。

系列目录见专栏。如果这篇对你有用,点个赞让更多被 AI 写崩过项目的人看到。

相关文章
|
14天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
6210 45
|
2天前
|
云安全 人工智能 安全
|
15天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
5134 60
|
9天前
|
Linux 开发工具 iOS开发
2026最新codex下载安装保姆级使用教程(下载+安装+登录+使用,含所有历史版本)
本文详解OpenAI Codex国内快速上手指南:提供Win/macOS/Linux全平台免安装包、npm/Homebrew等多方式安装、账号/API Key双登录、简体中文切换,覆盖下载、安装、汉化、使用及高频避坑(如微软商店失败、npm超时等),10分钟即可跑通。
2487 6
|
2天前
|
JSON 前端开发 API
阿里云最新Qwen4-Max大模型介绍:模型定位、特征、能力、适用场景解析
2026 年 11 月 11 日,阿里发布第四代旗舰模型Qwen4-Max预览版,首发千问 AI 平台 Token Plan,并同步接入千问办公、Qoder 等入口。该版本聚焦知识理解、世界感知、编程与 Agentic 四项升级,主打复杂编程、专业办公、前端设计与专业软件操作。预览期至 11 月 25 日 24:00,到期后模型标识下线;限时 2 折、新用户再享 5 折,最低 1 折可体验。
|
7天前
|
人工智能 安全 API
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(dsh)是DeepSeek AI于2026年开源的轻量级Agent运行框架,基于Cordis内核,践行“一切皆插件”理念。支持Web/桌面双端,开箱即用;内置多模型接入、丰富插件生态(超3.5万),适配编程、办公、创作等场景。(239字)
1565 1
|
2天前
|
人工智能 前端开发 API
阿里云Qwen4-Max 大模型详解:定位、特征、能力、适用场景与相对Qwen3-Max差异解析
2026年11月11日,阿里发布第四代旗舰模型Qwen4-Max预览版,首发千问AI平台Token Plan并接入千问办公、Qoder等入口。该版本聚焦知识理解、世界感知、编程与Agentic四项升级,主打复杂编程、专业办公、前端设计与专业软件操作等真实任务。预览期为11月11日10:00至11月25日24:00,仅支持Token Plan调用,到期后模型标识下线;限时2折、新用户再享5折,最低1折可体验。

热门文章

最新文章