前言
在現代軟體開發中,「需求與實作脫節」是最常見的痛點之一。
規格文件寫得再詳細,開發人員與測試團隊仍常出現理解落差。
而 Specification-Driven Development(SDD) 的理念,
正是希望「讓規格本身成為系統的一級公民」,
透過可執行的規格(Executable Specifications)驅動整個開發流程。
GitHub 於 2025 年推出的 Spec-Kit
提供了落實 SDD 的實際工具與標準,使開發團隊能以明確的規格為核心,
自動化地生成測試、文件與開發任務。
什麼是 Specification-Driven Development(SDD)
Specification-Driven Development(規格驅動開發) 是一種以「可執行規格」為中心的開發方法。
不同於 TDD(測試驅動開發)從測試出發、BDD(行為驅動開發)從使用者故事出發,
SDD 強調 「以規格定義系統行為,並由此推導出程式碼與測試」。
🔹 簡單來說:SDD = 把規格變成能直接驅動程式的文件。
與其他方法的差異
方法論 | 驅動來源 | 關注焦點 | 文件角色 | 自動化能力 |
---|---|---|---|---|
TDD | 測試案例 | 程式正確性 | 輔助 | ✅ 測試自動化 |
BDD | 使用者行為 | 使用體驗 | 溝通橋樑 | ⚙️ 部分可自動化 |
SDD | 系統規格 | 一致性與完整性 | 核心文件 | 🚀 文件、測試與任務皆可生成 |
SDD 的核心思想是:規格 → 驅動 → 測試、程式、任務、文件。
規格不再只是附屬文件,而是成為專案中最具權威性的來源(Single Source of Truth)。
GitHub Spec-Kit 工具介紹
Spec-Kit 是 GitHub 推出的開源套件,
提供一個完整的 Specification Schema 與工具鏈,
讓開發者能夠將專案中的 spec/
資料夾轉化為自動化開發的中心。
🔧 Spec-Kit 的結構
每一份 *.spec.yaml
都可以定義:
- 介面(API Inputs / Outputs)
- 商業規則與條件(Rules, Preconditions, Postconditions)
- 使用情境(Scenarios)
- 測試期望(Expectations)
Spec-Kit 的運作流程
-
撰寫規格 (
.spec.yaml
)- 定義 Use Case、Entity、Contract。
-
自動生成文件與測試
- 透過 Spec-Kit CLI,自動轉換成 Markdown 說明與測試腳本。
-
開發與驗證
- 開發者依規格實作功能,測試由規格自動對應。
-
版本控制與審核
- 所有規格皆可透過 GitHub Pull Request 審查與追蹤。
為何 SDD 適合與 AI 結合 🤖
SDD 的核心資產是「結構化規格」,而這正是 AI 模型最能理解、生成與推理的資料型態。 因此,AI 與 SDD 的結合能產生非常強大的協同效益:
1️⃣ AI 能「閱讀規格」
AI 可以解析 .spec.yaml
內容,自動生成對應的:
- API 範例呼叫
- 測試樣本(例如 Playwright / Jest)
- 文件摘要與技術解釋
- 甚至代碼骨架(Code Stub)
2️⃣ AI 能「生成規格」
反向應用上,AI 可以根據:
- 使用者故事(User Story)
- Figma / Flow 設計稿
- API 請求紀錄 自動生成初版的 SDD 規格,成為開發起點。
3️⃣ 結合 CI/CD,形成智慧開發循環
當專案使用 SDD + Spec-Kit 時,AI 可:
- 自動審查規格變更是否違反既有邏輯
- 在 Pull Request 中生成變更摘要
- 分析 Spec 與實作的落差(Spec Drift)
這樣的工作流讓「AI 不是輔助,而是 SDD 流程的一部分」。
實作範例(概念)
# spec/use-cases/create-user.spec.yaml
name: Create User
description: 建立新使用者帳號
preconditions:
- email 不得重複
- 密碼需符合安全性規範
postconditions:
- 新使用者被儲存至資料庫
- 系統回傳 201 狀態
scenarios:
- name: Create user successfully
input: { email: "test@example.com", password: "StrongPass123!" }
expect: { status: 201, userId: not_null }
透過 Spec-Kit:
- 自動生成測試與 API 文件
- AI 模型可根據此 YAML 自動撰寫端到端測試程式
- 甚至反饋出「邏輯缺漏」或「需求矛盾」
SDD 在團隊中的實踐建議
階段 | 實踐方式 | 工具 |
---|---|---|
需求規格撰寫 | 使用 .spec.yaml 定義功能 |
Spec-Kit |
文件產生 | 自動生成 Markdown、HTML 文件 | Spec-Kit CLI |
測試驗證 | 由 Spec-Kit 生成對應測試 | Jest / Playwright |
智慧輔助 | AI 解析規格並生成代碼 / 審查變更 | ChatGPT / Copilot |
持續整合 | 在 CI 中自動驗證規格一致性 | GitHub Actions |
結語
SDD 並非要取代 TDD 或 BDD,而是 將規格推升為開發的起點與知識中心。 藉由 Spec-Kit 所提供的標準化工具鏈, 再結合 AI 的自然語言理解與程式生成能力, 開發團隊能打造出真正「規格驅動、AI 協作」的新一代開發流程。
「規格不再只是設計書,而是智慧開發的起點。」
參考資料
- GitHub Spec-Kit 官方文件:https://github.com/github/spec-kit/blob/main/spec-driven.md