天天看點

《軟體需求工程(第2版)》一3.5 确定非功能需求

非功能需求是衡量軟體能否良好運作的定性名額。是以,非功能需求也是非常重要的。但是在實際收集需求資訊時,開發人員往往注重于功能性需求,而容易忽略非功能需求。這是因為非功能需求很難定義,也很含糊,如可靠性、易使用性、使用者界面友好等。軟體系統應具備什麼樣的可靠性?易使用應達到什麼程度?什麼樣的使用者界面才算是友好的?這些問題由于缺乏定量名額,是以很難根據這些需求來評價軟體系統,這也是開發出來的軟體系統與使用者所需的軟體系統之間存在差異的主要原因。

對軟體系統的非功能需求有很多,此處僅列舉一些使用者所關心的非功能需求。

可靠性:指在給定的時間内以及規定的環境條件下,軟體系統能完成所要求功能的機率。其定量名額通常用平均無故障時間和平均修複時間來衡量。

可擴充性:指軟體系統能友善和容易地增加新功能,通常用增加新功能時所需工作量的大小來衡量。

安全性:主要涉及防止非法通路系統功能,防止資料丢失,防止病毒入侵和防止私人資料進入系統等。例如身份驗證、使用者權限、通路控制等都是與安全性相關的具體需求。

互操作性:指軟體系統與其他系統交換資料和服務的難易程度。

健壯性:指軟體系統或是組成部分遇到非法輸入資料以及在異常情況和非法操作下,軟體系統能繼續運作的程度。

易使用性:指使用者學習和使用軟體系統功能的簡易程度,也包括對系統的輸出結果易于了解的程度。

可維護性:指在軟體系統中發現并糾正一個故障或進行一次更改的簡易程度。可維護性取決于了解、更改和測試軟體的簡易程度。

可移植性:指把一個軟體系統從一個運作環境移植到另一個運作環境所花費的工作量的度量。

可重用性:指組成軟體系統中的某個部件除了在最初開發的系統中能使用外,還可以在其他應用系統中使用的程度。

以上是在實際開發中使用者可能提出的一些非功能需求。當然,随着軟體系統的目标和應用領域的不同,使用者提出的非功能需求可能是上述的一部分,也可能超出上述的需求。

在收集需求資訊時,必須根據使用者對系統的期望來确定非功能需求。如果能定量地确定非功能需求,将有助于清晰地了解使用者的期望,有助于開發人員提出較合理的解決方案。然而,大多數使用者并不可能提出具體的和量化的非功能需求,以及回答諸如“軟體系統應該具備什麼樣的可靠性”或“互操作性是否重要”等這些問題。是以,開發人員在收集非功能需求資訊時,要注意使用一些方法,例如:

1)将不同使用者類代表提出的可能很重要的非功能需求進行綜合,并根據其中的每個需求設計出許多方法,然後根據使用者的回答,使這些需求更明确化。

2)開發人員與使用者一起對每一個非功能需求制定可測試和可驗證的具體标準。如果這些需求缺乏評價标準的話,就無法說明開發出的軟體系統是否已滿足這些需求。

3)設計與非功能需求相沖突的假設示例,利用反例來提示使用者。