軟件產品的需求可以分為功能性需求和非功能性需求,其中非功能性需求是常常被輕視,甚至被忽視的一個重要方面。其實,軟件產品非功能性定義不僅決定產品的質量,還在很大程度上影響產品的功能需求定義。如果事先缺乏很好的非功能性需求定義,結果往往是使產品在非功能性需求面前捉襟見肘,甚至淹沒功能性需求給用戶帶來的價值。
所謂非功能性需求,是指軟件產品為滿足用戶業(yè)務需求而必須具有且除功能需求以外的特性。下面對其中的某些指標加以說明。
1、功能性
功能性指與一組功能及其指定的性質有關的一組屬性,這里的功能是指滿足明確或者隱含的需求的那些功能。具體包括:
適合性:與規(guī)定任務能否提供一組功能,以及這組功能的適合程度有關的軟件屬性,例如面向任務系統(tǒng)中由子功能構成的功能是否合適,表容量是否合適等等。
準確性:與能否得到正確或者相符的結果或者效果有關的軟件屬性。
互操作性:與其他指定系統(tǒng)進行交互的能力有關的軟件屬性。
依從性:使軟件遵循有關的標準約定法規(guī)及類似規(guī)定的軟件屬性。
安全性:即與防止對程序技術局的非授權的故意或者意外訪問的能力有關的軟件屬性。如用戶權限、動態(tài)口令、數據庫字段加密等。
對于這組非功能需求來說,絕大部分是滿足功能需求的情況,他并不需要采用額外的措施,而安全性是一個例外,它會涉及具體的技術性功能需求。
2、可靠性
可靠性之與在規(guī)定的一段時間和條件下軟件維持其性能水平的能力有關的一組屬性。具體包括:
成熟性:與有軟件故障引起失效的頻度有關的軟件屬性。
容錯性:與在軟件故障或違反指定接口的情況下維持規(guī)定的性能水平的能力有關的軟件屬性。如離線錄入支持等。
易恢復性:與在是小發(fā)生后重建其性能水平并恢復直接受影響數據的能力,以及為達到此目的所需時間和努力有關的軟件屬性。如表單數據自動保存等。
這類非功能需求通常是全局的,他除了與系統(tǒng)運行環(huán)境、平臺選擇、代碼質量相關之外,還會涉及部分技術性功能需求,他別是容錯性、易恢復性的實現(xiàn)都需要一些具體的功能來支持。
3、易用性
易用性是與一組規(guī)定或者潛在的用戶為使用其軟件所需做的努力和對這樣的使用所作的評價有關的一組屬性。具體包括:
易理解性:與用戶為人質邏輯概念即其應用范圍所花的努力有關的軟件屬性。
易學習性:與用戶為學習軟件應用所花的努力有關的軟件屬性。
易操作性:與用戶為操作和運行控制所花的努力有關的軟件屬性。如帶首字母篩選功能的下拉列表等。
這類非功能需求是與UI設計、聯(lián)機幫助系統(tǒng)有著直接關系的,易理解性和易學習性通常和界面導航、聯(lián)機幫助有關,課歸納為界面友好性;易操作性則會和界面元素設計有關。也就是說這類屬性會關聯(lián)到具體的技術性功能需求。
4、效率
效率是指與在規(guī)定的條件下軟件的性能水平與所使用資源量有關的一組屬性。具體如下:
時間特性:與軟件執(zhí)行器功能時響應和處理時間及吞吐量有關的軟件屬性。如數據緩存等。
資源特性:與在軟件執(zhí)行其功能時所使用的資源數量及其使用時間有關的軟件屬性。如數據壓縮等。
這部分實際上就是通常所說的性能需求,他有一大部分是局部性的,在每個用力的描述中應該指出;另外它又會引申出一些相關的技術性功能需求,例如數據緩存等。
5、維護性
維護性是指與進行指定的修改所需的努力有關的一組屬性。具體包括:
易分析性:與為診斷缺陷或者失效原因及為判定待修改的部分所需努力有關的軟件屬性。如日志記錄系統(tǒng)等。
易改變性:與進行修改排除錯誤或者適應環(huán)境變化所需努力有關的軟件屬性。
穩(wěn)定性:與修改所造成的未預料結果的風險有關的軟件屬性。