cover

先講結論

SA/SD 文件體系不是官僚,是在特定時代用來解決特定問題的工具。大多數文件的存在有合理的原因,但那個原因在現代開發環境裡有些已經消失了。

理解每份文件為什麼存在,比知道格式更重要。這樣你才能判斷哪些該做、哪些可以用更輕量的方式取代。


為什麼這些文件會出現

時代背景:電腦很貴,錯不起

1960–70 年代,大型主機的運算時間按小時計費。在寫任何一行程式前,需求和設計必須先搞清楚——因為錯了的代價是重做整個流程。這催生了「在寫程式前把事情想清楚的人」,也就是 SA 的原型。

翻譯問題:業務人員看不懂程式

開發者稀缺,讓他們去跟業務溝通是浪費。需要一個懂業務又懂系統的人把「我要一個可以查庫存的功能」翻譯成「資料庫這樣設計、API 這樣切」。SA 本質上是翻譯官。

政府採購:文件是驗收依據

美國國防部 1970 年代開始要求軟體承包商提交標準化文件(DoD-STD-2167)。文件從此變成「合約上的交付物」,而不只是內部工作產出。這套規格後來擴散到所有大型政府和企業採購。

IBM 把這套帶進亞洲

IBM 在 1970–80 年代把這套方法論賣給日本大企業。日本 SI 公司把它變成超級精細的流程規範,台灣 IT 從日本和 IBM 兩條線繼承了同樣的結構。


文件體系全覽

按專案流程排列,每份文件解決的問題:

需求階段

BRD(Business Requirements Document) 業務要什麼、為什麼要做、成功指標。這份文件的讀者是業務主管和出錢的人,不是工程師。

FRD(Functional Requirements Document) 系統要做什麼、功能清單、邏輯規則。這是 SA 最核心的產出,也是開發的主要依據。詳細寫法見 FRD 寫作指南

SRS(Software Requirements Specification) FRD 的正式版,加上非功能性需求(效能、安全、可靠性)。通常只有政府採購或金融業才嚴格要求 SRS 格式。

Use Case Document 誰在什麼情境下做什麼事,包含主流程和例外流程。現代 Agile 開發用 User Story + Acceptance Criteria 取代,但 Use Case 仍然是一種把「情境」想清楚的有用工具。

分析階段

DFD(Data Flow Diagram) 資料怎麼在系統間流動。注意 DFD 不屬於 UML 標準,它來自更早的結構化分析方法論(1970 年代),但幾乎每個 SA 都在畫。

ERD(Entity Relationship Diagram) 資料實體與關聯,Table Schema 的前身。ERD 是 Peter Chen 1976 年提出的,也不屬於 UML。現代工具:dbdiagram.io、Mermaid ER Diagram。詳細見 ERD 設計與資料庫正規化

流程圖(Flowchart) AS-IS(現況流程)和 TO-BE(未來流程)。ISO 5807 是標準,但大多數人畫的是非標準的白板版本。

設計階段

SDD(System Design Document) 系統架構、模組切分、技術選型。現代替代方案:ADR(Architecture Decision Record),用短篇決策記錄取代長篇設計文件。

資料庫設計文件 Table Schema、Index 設計、關聯、命名規則。現代工具直接用 DBML 或 Prisma Schema 取代 Word 文件。

API Specification 端點、參數、回傳格式。2015 年後大多改用 Swagger/OpenAPI YAML。見 OpenAPI 規格範本

Sequence Diagram 跨系統、跨服務的呼叫順序。UML 標準的一部分,也是現代微服務架構裡最常用的設計圖。見 Sequence Diagram 實戰範本

測試與上線階段

Test Plan / Test Case 測試範圍、策略、具體步驟和預期結果。見 Test Case 寫作指南

Deployment Document / Operation Manual 部署步驟、環境設定、rollback 計畫、操作說明。現代用 Runbook 取代,通常放在 wiki 或 Notion。


哪些在現代開發裡還有價值

SA/SD 文件存在的三個前提,在現代開發環境裡有些已經改變:

原始前提現代情況影響
需求變更代價高Agile 接受需求會變不需要在寫程式前把所有需求鎖死
開發者不懂業務Senior Engineer 普遍具備業務理解翻譯角色不再那麼必要
文件是驗收依據Working software 才是驗收依據文件回到輔助角色

還有明確價值的:

  • FRD / 功能規格:避免需求理解偏差,特別是跨團隊溝通時
  • ERD:資料庫設計的必要工具,資料模型錯了全部都要改
  • Sequence Diagram:微服務架構裡的標準溝通語言
  • API Spec(OpenAPI):前後端契約,可自動生成 SDK 和 mock

可以輕量化或省略的:

  • SRS → 用 FRD + 效能需求備忘錄取代
  • BRD → PR/FAQ(Amazon 格式)或 1-pager 足夠
  • Flowchart → 短會議 + 白板照片對多數場景足夠
  • Operation Manual → Runbook + Slack 記錄

現代替代方案對照

傳統產出現代替代
Word API SpecOpenAPI YAML(Swagger)
Visio ERDdbdiagram.io / Mermaid ER
Word SDDADR(Architecture Decision Record)
Use Case DocumentUser Story + Acceptance Criteria
Test Case DocumentBDD Gherkin(Cucumber 格式)

實戰建議

如果你在傳統 SI 或大型企業 IT 工作,文件要求是合約規定,無法省略。這時候重點是:做最小夠用的版本,不要把文件當目的本身

如果你在 Agile 團隊,選擇性地借用 SA 文件的思維:

  • 功能複雜的需求 → 寫 FRD(即使格式簡化)
  • 跨服務設計 → 畫 Sequence Diagram
  • 資料模型設計 → 一定畫 ERD
  • 技術決策 → 寫 ADR

相關文章