非功能性需求設計規格範本(NFR Design Specification Template)
非功能性需求設計規格範本(NFR Design Specification Template) 適用標準:ISO/IEC 25010:2023(SQuaRE - 系統與軟體品質模型)、ISO/IEC/IEEE 29148:2018 適用階段:系統設計階段(Design Phase) 負責角色:系統架構師(SA)、效能工程師、SRE 📑 章節目錄 文件資訊 品質屬性總覽 效能設計(Performance) 可用性設計(Availability) 延展性設計(Scalability) 可靠性設計(Reliability) 可維護性設計(Maintainability) 可觀測性設計(Observability) 安全性設計(Security) 相容性設計(Compatibility) 驗證與測試策略 📝 範本 1. 文件資訊 項目 內容 文件名稱 [系統名稱] 非功能性需求設計規格 文件編號 [專案代碼]-NFR-[版本號] 版本 v[X.Y] 建立日期 [YYYY-MM-DD] 撰寫者 [SA 姓名] 審核者 [技術主管] 2. 品質屬性總覽 依 ISO/IEC 25010:2023 品質模型分類 品質屬性 子特性 目標等級 優先級 驗證方式 效能效率 時間行為、資源利用、容量 [目標] [High/Med/Low] [效能測試] 可用性 成熟度、容錯性、可恢復性 [目標] [High/Med/Low] [HA 測試] 延展性 水平/垂直擴展能力 [目標] [High/Med/Low] [負載測試] 可靠性 容錯、一致性 [目標] [High/Med/Low] [Chaos 測試] 可維護性 模組化、可測試性、可修改性 [目標] [High/Med/Low] [Code Review] 安全性 機密性、完整性、可用性 [目標] [High/Med/Low] [安全測試] 相容性 瀏覽器、裝置、整合 [目標] [High/Med/Low] [相容測試] 3. 效能設計(Performance) 3.1 效能目標 指標 日常目標 尖峰目標 測量方式 回應時間(P50) < [N]ms < [N]ms APM / Load test 回應時間(P95) < [N]ms < [N]ms APM / Load test 回應時間(P99) < [N]ms < [N]ms APM / Load test 吞吐量(TPS) ≥ [N] ≥ [N] Load test 並發用戶 [N] [N] Load test 錯誤率 < [N]% < [N]% Monitoring 3.2 效能設計策略 策略 適用場景 設計方案 快取 [高頻讀取、低頻更新] [快取層級/策略/TTL] 非同步處理 [非即時、耗時任務] [Message Queue + Worker] 連接池 [DB/HTTP 連線] [Pool size + timeout 設定] 分頁查詢 [大量資料列表] [Cursor-based / Offset pagination] 批次處理 [大量寫入] [Batch size + 排程策略] CDN [靜態資源] [CDN provider + cache policy] 3.3 效能預算(Performance Budget) 資源 預算 目前值 狀態 首頁載入(FCP) < [N]s [N]s [✅/⚠️/❌] 最大內容繪製(LCP) < [N]s [N]s [✅/⚠️/❌] 累計版面偏移(CLS) < [N] [N] [✅/⚠️/❌] 互動至下一次繪製(INP) < [N]ms [N]ms [✅/⚠️/❌] JS Bundle Size < [N]KB [N]KB [✅/⚠️/❌] API Response Size < [N]KB (avg) [N]KB [✅/⚠️/❌] 4. 可用性設計(Availability) 4.1 SLA 定義 服務 SLA 目標 允許停機/月 計算方式 [核心服務] [99.9%] [~43.8 min] Uptime / Total time [次要服務] [99.5%] [~3.6 hr] [背景服務] [99.0%] [~7.3 hr] 4.2 高可用設計 元件 HA 模式 Failover 時間 健康檢查 [元件] [Active-Active / Active-Passive / N+1] [N]s [HTTP/TCP/Custom] 4.3 停機策略 停機類型 通知時間 持續時間 影響範圍 核准 計畫性維護 [N 天前] [N hr] [描述] [PM/業務] 緊急修復 [即時] [N hr] [描述] [Tech Lead] 5. 延展性設計(Scalability) 5.1 擴展策略 維度 策略 設計 水平擴展(Scale-Out) [無狀態 + Load Balancer] [Auto-scaling rules] 垂直擴展(Scale-Up) [資料庫 / 特殊運算] [上限與遷移計畫] 資料擴展 [分區 / Sharding] [分區策略] 5.2 容量規劃 時間軸 預估用戶 預估資料量 預估 TPS 對應架構 上線 [N] [N] GB [N] [架構描述] 6 個月 [N] [N] GB [N] [是否需擴展] 1 年 [N] [N] GB [N] [擴展方案] 3 年 [N] [N] GB [N] [重大架構變更?] 6. 可靠性設計(Reliability) 6.1 容錯設計 故障場景 影響 容錯機制 降級方案 [單節點故障] [描述] [自動 failover] [N/A] [DB 連線失敗] [描述] [Circuit Breaker] [顯示快取資料] [外部 API 超時] [描述] [Retry + Timeout] [預設值/離線模式] [整個 AZ 故障] [描述] [Multi-AZ 部署] [部分功能降級] 6.2 Circuit Breaker 設計 服務 Open 條件 Half-Open 條件 Close 條件 Fallback [服務] [N 次失敗 in M 秒] [N 秒後] [N 次成功] [降級方案] 6.3 Retry 策略 場景 最大重試 退避策略 可重試條件 [HTTP call] [N] 次 [Exponential backoff + jitter] [5xx, timeout, network error] [DB operation] [N] 次 [Fixed interval] [Deadlock, connection lost] 7. 可維護性設計(Maintainability) 品質指標 目標 度量方式 程式碼覆蓋率 ≥ [N]% [CI/CD report] 技術債指標 [SQALE ≤ N days] [SonarQube] 模組耦合度 [低耦合] [Architecture fitness test] 部署頻率 [≥ N 次/週] [CI/CD metrics] 修復前置時間 [< N hr] [DORA metrics] 8. 可觀測性設計(Observability) 8.1 三大支柱 支柱 工具 設計 Metrics [Prometheus / CloudWatch] [RED + USE metrics] Logging [ELK / Loki] [Structured JSON, correlation ID] Tracing [Jaeger / Zipkin / OTEL] [Distributed tracing, 100% sampling for errors] 8.2 SLI/SLO 定義 SLI(指標) SLO(目標) 計算方式 告警閾值 Availability [99.9%] successful requests / total requests < 99.8% → Warning Latency (P95) [< 200ms] histogram_quantile(0.95) > 300ms → Warning Error Rate [< 0.1%] 5xx / total requests > 1% → Critical Throughput [≥ N TPS] rate(requests_total[5m]) < N*0.7 → Warning 9. 安全性設計(Security) 詳見安全設計文件(SecurityDesign_Template.md),此處僅摘要 NFR 指標 ...