標準軟體專案開發生命週期(SDLC)
成熟的軟體工程實踐將專案劃分為七個核心階段,每階段有明確的輸入、活動與交付產出。以下流程適用於瀑布式、增量式等多種開發模型(敏捷開發中會以迭代方式循環執行)。
階段一:需求分析 🎯
- 目標:明確「建什麼」、「為誰建」、「解決什麼問題」。
- 核心活動:
- 利害關係人訪談、問卷、工作坊
- 業務流程建模(BPMN、UML 活動圖)
- 功能/非功能需求識別(效能、安全、相容性)
- 需求優先級排序(MoSCoW 法)
- 關鍵交付物:《需求規格說明書》(SRS)、使用案例文件、原型圖/線框圖。
階段二:總體設計 🏗️
- 目標:確立系統整體架構、技術棧、模組劃分、介面協定。
- 核心活動:
- 系統上下文圖、部署架構圖(雲/內部部署、微服務/單體)
- 資料庫概念模型(ER 圖)、API 契約定義(OpenAPI/Swagger)
- 技術選型論證(語言、框架、中介軟體、CI/CD 工具鏈)
- 風險評估與緩解策略
- 關鍵交付物:《概要設計說明文件》、架構決策記錄(ADR)、介面設計文件。
階段三:詳細設計 📐
- 目標:將架構細化至可直接編碼的層級(類別、函式、資料結構、演算法)。
- 核心活動:
- 類別圖、循序圖、狀態機圖
- 資料庫邏輯/物理設計(正規化、索引策略)
- 演算法複雜度分析、邊界條件處理
- 程式碼規範、命名慣例、錯誤碼定義
- 關鍵交付物:詳細設計文件、資料字典、偽代碼/關鍵演算法描述。
階段四:開發編碼 💻
- 目標:依設計文件撰寫可執行、可測試、可維護的程式碼。
- 核心實踐:
- 版本控制(Git Flow / Trunk-Based Development)
- 程式碼審查(Code Review,強制 MR/PR 流程)
- 單元測試驅動開發(TDD)、靜態分析(SonarQube、ESLint)
- 持續整合(CI)自動建構、測試、掃描
- 關鍵交付物:原始碼庫、建構腳本、單元測試報告、Docker Image/安裝包。
階段五:測試分析與系統整合 🧪
- 目標:驗證功能正確性、效能指標、安全合規、相容性。
- 測試層級:
- 整合測試(模組間介面、資料流)
- 系統測試(端到端業務流程、負載/壓力測試)
- 使用者接受測試(UAT,真實用戶驗收)
- 安全測試(滲透測試、依賴掃描)
- 關鍵交付物:測試計劃/報告、缺陷追蹤清單(Jira/Bugzilla)、效能基準報告、UAT 簽核單。
階段六:現場支援 🚀
- 目標:系統上線試運轉,快速響應問題,平滑過渡至正式營運。
- 核心活動:
- 藍綠部署/滾動更新/金絲雀發布
- 監控告警配置(Prometheus+Grafana、ELK 日誌聚合)
- 現場問題記錄、根因分析(RCA)、熱修復
- 用戶培訓、操作手冊移交
- 關鍵交付物:上線驗收報告、事件處理記錄、運維手冊、知識庫文件。
階段七:系統運行支援 🔧
- 目標:長期穩定營運,持續迭代優化。
- 核心活動:
- SLA 監控(可用性、延遲、錯誤率)
- 定期修補(安全補丁、依賴升級)
- 缺陷修復、小型增強需求交付
- 容量規劃、災難演練、備份恢復演練
- 關鍵交付物:月/季營運報告、變更管理記錄、技術債務清單、下一版本規劃提案。
現代實踐提示
- 敏捷/DevOps:上述階段在雙週 Sprint 中並行、重疊,強調「持續交付價值」。
- 文檔輕量化:以「活文檔」(Markdown in Repo、Architecture Decision Records)取代厚重 Word。
- 自動化優先:測試、部署、安全掃描、文檔生成全自動化。
- 向左移:安全、效能、可觀測性在設計/編碼階段就介入。
掌握這七大階段與交付物,能讓專案團隊建立共同語言,降低溝通成本,提高交付品質與可預測性。