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