概念: 需求
需求定義為「系統必須符合的條件或功能」。
關係
主要說明

需求定義為「系統必須符合的條件或功能」。

需求有許多不同的類型。有一種分類法稱為 FURPS+ 模型 [GRA92],字首語 FURPS 代表具有子種類的主要需求種類,如下所示。

FURPS+ 的 "+" 表示還可以納入下列需求:

(另請參閱 [IEEE Std 610.12.1990]。)

這些非功能面需求的種類和範例可以當做核對清單,讓您自行檢查是否有特定種類的需求。 但您要如何建立一份完整的非功能面候選需求的清單呢?其他一些來源包括:  

  • 如需根據 FURPS+ 以一套有系統的方法來捕捉需求,請參閱 The Rational Edge 文章 'Capturing Architectural Requirements',作者是 Peter Eeles (http://www.ibm.com/developerworks/rational/library/4706.html)。  其中利用問卷列出大量非功能面需求,並提出問題來決定適用性
  • 「軟體工程學院」也已建立一套「一般情境」- 品質屬性需求的表達 - 可以在許多不同系統類型中重複使用來定義品質需求。 如需相關資訊,請參閱 http://www.sei.cmu.edu/publications/documents/01.reports/01tr014.htmlSoftware Architecture in Practice, 2nd Ed.,由 Len Bass、Paul Clements 及 Rick Kazman 合著 (Addison-Wesley, 2003)。

功能面需求指定系統必須執行的動作,不考慮實體限制。這些通常會在使用案例模型使用案例中詳細說明。因此,功能需求指定系統的輸入及輸出行為。

沒有功能的需求(列示如下)有時又稱為非功能面需求。有許多需求皆為非功能面,只描述系統的屬性或系統環境的屬性。非功能面需求是指解決下列議題的需求。   

功能性

功能面需求可能包含:

  • 特性集
  • 能力
  • 安全性

可用性

可用性需求可能包含下列子種類:

  • 人為因素
  • 審美觀
  • 使用者介面的一致性
  • 線上和上下文相關說明
  • 精靈和代理程式
  • 使用者文件
  • 訓練教材

可靠性

需要考量的可靠性需求包括:

  • 失敗的頻率和嚴重性
  • 回復性
  • 預測性
  • 精確度
  • 平均失效時間 (MTBF)

效能

效能需求在功能需求上強加條件。例如,對於一項指定的動作,可能指定下列效能參數:

  • 速度
  • 效率
  • 可用性
  • 精確度
  • 傳輸量
  • 回應時間
  • 回復時間
  • 資源使用量

支援性

支援性需求可能包含:

  • 測試性
  • 延展性
  • 調整性
  • 維護性
  • 相容性
  • 配置性
  • 服務性
  • 安裝性
  • 本土性(國際化)

設計需求

設計需求(通常稱為設計限制)指定或限制系統的設計。

實作需求

實作需求指定或限制系統的程式碼撰寫或建構。例如:

  • 必要標準
  • 實作語言
  • 資料庫完整性的原則
  • 資源限制
  • 操作環境

介面需求

介面需求指定:

  • 系統必須互動的外部項目
  • 互動過程使用的格式、時間或其他因素的限制

實體需求

實體需求指定系統必須具備的特性;例如,

  • 材料
  • 形狀
  • 大小
  • 重量

這種需求可用來代表硬體需求,例如必要的實體網路配置。