先決定你現在是要學,還是要在專案裡做
網站負責解釋與分發工作包;真正的 Repository 掃描、缺口判斷與文件產出交給 Coding Agent。
SDLC 實作課 · 交付物練習
先理解這份文件替你消除什麼不確定
把業務需求翻成系統可實作的規格
PRD 講「為什麼做、要做什麼」;但工程師動手前還欠一層:系統具體該有哪些行為、哪些規則、哪些介面。
沒有 SRS,BA 的口頭規則隨時間散失、SA 的系統假設藏在腦中、QA 拿不到完整 test 來源。
SRS 把這些寫成可追溯、可驗收、可對外發包的規格。
誰負責、交給誰
主責: BA(業務規則)/ SA(系統行為)
協作: PM(驗證對齊 PRD)、Architect(評估技術影響)、QA(驗收條件)
下游收件: Architect 做 ADR、Dev 寫 code、QA 寫 test plan、稽核留檔
何時值得做
必要時機: 金融/醫療/政府合規產業、跨系統整合 ≥ 3 個、需對外 RFP
不需要時: 小團隊 lean startup、純前端 UI 改版、內部工具 < 5 人用
常見誤用: 把 SRS 寫成 PRD 的複製貼上(缺系統行為層);ISO/IEC/IEEE 29148 強調 SRS 必須包含 functional + non-functional + interface + data + constraints
- 01讀大綱
- 02比範本
- 03填素材
- 04貼提示詞
- 05對照驗收
Anatomy · 文件解剖
輕量版先回答 5 個核心章節
章節名稱可以因團隊調整,但每一段要求的判斷不能被省略。先讀問題,再看格式。
- 01
Executive Summary
範本必要章節
3-5 行:本 SRS 涵蓋 N 個 use case、M 個 external interface、PRD 覆蓋率 %、最高風險 traceability gap
- 02
Use Cases
範本必要章節
輕量版 2-4 個核心 UC。每個 UC 含六件:actor / precondition / main flow / alt flow / exception / postcondition + PRD 反向追溯
- 06
External Interfaces
範本必要章節
每個 interface 必含 protocol / auth / rate limit / failure mode 四件
- 10
Decision Log(key 1-2 條)
範本必要章節
每條必含 chosen + 至少 1 個 rejected option + 拒絕原因
- 12
Confidence & Sources & TODO
範本必要章節
把已確認的內容、判斷依據與仍待補充的資訊清楚分開。
Study · 對照學習
同一份交付物,先練核心,再看完整深度
輕量範本適合第一次練習與 MVP;完整範本保留跨職能交棒需要的細節。兩者都要求未知事項保持可見。
這張卡目前提供已審定的輕量與完整範本;不以 AI 臨時生成的內容冒充實際案例。
30 分鐘內先完成核心章節。
---
doc_type: "srs"
variant: "light"
status: "draft"
owner: "<your-name>"
last_updated: "YYYY-MM-DD"
upstream:
required: ["prd", "business-rules"]
optional: ["upstream-downstream-systems"]
---
# System Requirements Specification: <system-name>
**Status:** Draft v0.X · **Owner:** <SA / BA name> · **Last updated:** YYYY-MM-DD
> [!IMPORTANT]
> **AI 填寫規則:** 本範本 5 段(編號 1, 2, 6, 10, 12),全部必填——刻意沿用完整版章節編號讓兩版可對照。Use case **必含 actor / precondition / main flow / alt / exception / postcondition 六件**,缺任一視為 fail。每條 SRS 規格必含 **PRD 反向追溯 ID**(traceability 是 SRS 的核心價值)。每結論 `(依據:PRD §X / FR-NNN / BR-NNN)`;缺資料寫 `_TODO: 需要 XXX_` 不編造。
---
## 1. Executive Summary
<!-- ai-fill: 3-5 行:本 SRS 涵蓋 N 個 use case、M 個 external interface、PRD 覆蓋率 %、最高風險 traceability gap -->
<3-5 行說明>
> **TL;DR:** <一句話:本 SRS 將 PRD 哪段拆成多少個系統可實作條目>
---
## 2. Use Cases
<!-- ai-rule: 輕量版 2-4 個核心 UC。每個 UC 含六件:actor / precondition / main flow / alt flow / exception / postcondition + PRD 反向追溯 -->
### UC-1: <use-case-name> · **[H]**
- **Primary actor:** <角色>
- **Secondary actor:** <角色 / 第三方系統>
- **Precondition:** <state + data + auth 狀態>
- **Main flow:**
1. <Actor action> → System <response>
2. <Actor action> → System <response>
3. ...
- **Alt flow:**
- When <condition>: <步驟 2 改走> ...
- **Exception:**
- Trigger <when>: <handling>
- **Postcondition:** <state + data 變化 + side effect>
- **Traceability:** PRD §FR-1, BR-001, BR-002
- **Source:** PRD §FR-1
### UC-2: ... · **[M]**
...
---
## 6. External Interfaces
<!-- ai-rule: 每個 interface 必含 protocol / auth / rate limit / failure mode 四件 -->
| API ID | Counterparty | Protocol | Auth | Rate limit | Failure mode | Source |
|---|---|---|---|---|---|---|
| EXT-001 | <auth-svc> | REST | mtls | 500 rps | fail-fast | PRD §integration |
| EXT-002 | <payment-vendor> | webhook | hmac | — | retry + DLQ | PRD §integration |
---
## 10. Decision Log(key 1-2 條)
<!-- ai-rule: 每條必含 chosen + 至少 1 個 rejected option + 拒絕原因 -->
| Date | Decision | Options | Chosen | Rejected why |
|---|---|---|---|---|
| YYYY-MM-DD | <例:UC-1 走同步還是事件驅動> | sync / async / hybrid | sync | async (一致性難保證)、hybrid (運維複雜度爆增) |
---
## 12. Confidence & Sources & TODO
- **最低 confidence 項:** <列出所有 [L] 與 [M]>
- **Fabricated assumptions(推測但 input 未明說):**
- <假設 1,例:上游 API SLA 99.9%>
- **Highest-value next input:** <合規條款全文 / 上游 SLA / 既有資料 profiling 三選一>
### TODO(缺資料)
- _TODO: 需要 EXT-002 的 webhook retry contract 確認_
---
> [!CAUTION]
> **輸出前 AI 自檢:**
> - [ ] 5 段 H2 章節齊全(編號 1, 2, 6, 10, 12,刻意不連號)
> - [ ] 每個 UC 含 actor / precondition / main flow / alt / exception / postcondition 六件
> - [ ] 每個 UC 含 PRD 反向追溯(FR-ID + BR-ID)
> - [ ] 每個 external interface 含 protocol / auth / rate limit / failure mode 四件
> - [ ] 每結論帶 `[H/M/L]` badge + `(依據:...)` 引用
> - [ ] Decision Log ≥ 1 條,每條有 rejected reason
> - [ ] 無 YAML / JSON schema 輸出(SRS 是給人 + 稽核讀的 markdown)Practice · 換你試做
先用自己的話交代素材,不需要先學會工程術語
確定的就寫,不確定的留白。下一步要做的是請 Agent 找缺口,不是讓它替你猜一套合理答案。
可以先留白;複製提示詞後再到 Coding Agent 裡補充。
AI Practice · 手動三步
先問、再寫、最後審,不把整條流程鎖死
每一步都是獨立工作包。你可以停下補資料、修改限制或重做某一步,不需要服從固定的 Agent 接力流程。
只找阻擋文件成立的未知
先補會改變範圍、判斷或驗收結果的資訊,不急著寫文件。
我要製作「SRS · 系統需求規格」。先不要產出文件。
請根據我的素材,找出會影響這份文件正確性或可執行性的未知事項,一次最多問 5 題。
每題請包含:
1. 問題
2. 為什麼現在必須知道
3. 它會影響哪個章節或決定
已經回答的事不要重問;可以延後的事標成「待決策」;不要替我猜答案。
本文件的核心章節:Executive Summary、Use Cases、External Interfaces、Decision Log(key 1-2 條)、Confidence & Sources & TODO複製後,請在標示位置貼上自己的素材。
Review · 自己驗收
文件存在,不代表下一個角色真的能使用
逐條檢查 Agent 的輸出。人類負責需求、限制與驗收,也必須能說明重要結論從哪裡來。
帶著這份文件,繼續到「FRD · 功能需求文件」
下一張卡會接住新的決策問題;不用一次把整條 SDLC 全做完。
