一個需求如何變成正式系統
從問題釐清、開發、交付,到上線後持續維運與修改
從問題釐清、開發、交付,到上線後持續維運與修改
這份簡報先建立整張地圖
先知道完整流程有哪些工作,
再逐一深入每個主題
軟體不是「寫完 Code」就結束
發現問題 → 釐清需求 → 設計系統 → 實作功能
→ 整合變更 → 測試驗收 → 部署上線
→ 監控維運 → 收到新需求或事故 → 再次修改
這是一個持續循環,不是一次性的生產線。
流程裡通常不只有工程師
| 角色 | 關心的問題 |
|---|---|
| 使用者/業務 | 問題有沒有真的被解決 |
| PM/PO | 範圍、優先順序與驗收標準 |
| 開發者 | 架構、實作、整合與可修改性 |
| QA | 風險、案例、回歸與品質證據 |
| DevOps/SRE | 環境、部署、穩定性與復原 |
| 資安/治理 | 權限、資料、供應鏈與責任 |
階段 1:發現問題與定義需求
- 訪談使用者、觀察現況、理解領域流程
- 定義目標、範圍、限制與不做的事情
- 整理 user story、use case、例外情境
- 寫 acceptance criteria 與非功能需求
- 建立 backlog,決定優先順序
產物:需求文件、流程圖、驗收條件、backlog。
階段 2:架構與技術設計
- 畫 system context,確認內外部邊界
- 拆 module、service、component 與責任
- 設計資料模型、API、事件與狀態變化
- 評估效能、可用性、資安與維運方式
- 用 ADR 留下重要選擇與取捨
產物:架構圖、schema、API contract、ADR。
階段 3:拆任務與實作
- 把需求切成可以開發與驗收的小單位
- 建 branch 或 worktree,隔離修改範圍
- 撰寫程式、設定、migration 與文件
- 處理錯誤、邊界條件與外部依賴
- 執行 lint、靜態分析與本機測試
產物:code、commit、測試、設定與文件。
階段 4:整合多人與多條變更
- push branch,建立 Pull Request
- 查看 diff、執行 Code Review 與自動檢查
- 處理 branch 落後、merge conflict 與相依變更
- 選擇 merge、squash merge 或 rebase
- 合併後刪除短期 branch,保留歷史脈絡
產物:PR、review、CI 結果、merge commit。
階段 5:測試與驗收
- Unit test 固定小範圍邏輯
- Integration test 確認模組與外部服務整合
- E2E test 驗證完整使用者流程
- Acceptance test 對照需求與完成定義
- Regression、performance、security test 控制其他風險
產物:測試結果、缺陷、驗收紀錄與品質判斷。
階段 6:建置、發布與部署
- CI 建置 artifact、執行測試與安全掃描
- 準備環境設定、secret、容器與基礎設施
- 執行 migration、deploy 與 smoke test
- 採用 rolling、blue-green 或 canary 等策略
- 異常時 rollback 或 roll forward
產物:artifact、image、release、部署紀錄。
階段 7:上線後維運
- 透過 log、metrics、trace 觀察系統
- 用 dashboard、alert 與 SLO 判斷健康狀態
- 發生事故時 triage、止血、復原與溝通
- 事後進行 postmortem 與改善追蹤
- 管理容量、成本、備份與災難復原
產物:告警、incident、runbook、postmortem。
階段 8:系統繼續演進
新需求/使用者回饋/事故/依賴更新
↓
閱讀現況與歷史 → 評估影響 → 建立修改計畫
↓
小步修改 → 測試 → 合併 → 部署 → 再觀察
所以 Git 歷史、測試、文件與觀測資料都會成為下一輪輸入。
後續教材:一個主題一份簡報
| 簡報 | 主要內容 |
|---|---|
| 需求與規格 | 訪談、story、use case、NFR、驗收、backlog |
| 架構與資料流 | 邊界、模組、schema、API、事件、ADR |
| 實作與 Code Review | 環境、依賴、錯誤處理、lint、refactor |
| Git 與協作 | branch、PR、merge、rebase、worktree、rollback |
| 測試與品質 | unit、integration、E2E、regression、QA |
後續教材:交付與維運
| 簡報 | 主要內容 |
|---|---|
| 環境與部署 | Docker、CI/CD、artifact、migration、rollback |
| 觀測與事故 | log、metrics、trace、alert、SLO、postmortem |
| 資安與治理 | auth、secret、injection、供應鏈、audit |
| 舊系統接手 | 入口、依賴、baseline、重構、migration |
| 工程判斷 | scope、trade-off、risk、decision、ownership |
關鍵字不是拿來背誦
看到一個工程名詞時,至少要知道:
- 它解決哪一種情境?
- 它位於整個流程的哪個位置?
- 它會產生或改變什麼?
- 做錯時可能造成什麼後果?
- 要看什麼證據才知道它完成了?
進入 Agent 時代之前
先建立完整流程的共同語言。
之後即使工作由 Agent 執行,
人仍然看得懂它正在改變哪一部分。