隨著信息技術(shù)的高速發(fā)展,信息化領(lǐng)域的應(yīng)用范圍逐步擴大,軟件需求分析作為軟件項目過程中的重要環(huán)節(jié),也得到了越來越多的重視。
軟件需求指項目中必須提供的功能或者遵守的條件,在實際開發(fā)過程中又可分為功能性需求和非功能性需求。功能性需求指項目中具體需要提供的功能和內(nèi)容,非功能性需求指的是軟件產(chǎn)品為滿足用戶業(yè)務(wù)需求而必須具有除功能需求以外的特性,如安全性、可靠性、可維護性等。本文重點介紹軟件需求中的非功能性需求。
1、非功能性需求概述
非功能性需求(non-functional requirement NFR)也可稱為軟件開發(fā)的約束,是軟件產(chǎn)品為滿足用戶業(yè)務(wù)需求而必須具有除功能需求以外的特性。它是影響系統(tǒng)的架構(gòu)設(shè)計、決定軟件項目成本的重要依據(jù),是軟件需求不可或缺的一部分。
非功能性需求是隨著軟件系統(tǒng)規(guī)模增大和復(fù)雜性增加這兩個因素才逐漸成為軟件工程師們的新著眼點和關(guān)注點。早期時候,用戶方基于自身對軟件技術(shù)的了解和對系統(tǒng)文件維護的方便性考慮,對系統(tǒng)有了諸如:開發(fā)平臺、技術(shù)流派、關(guān)鍵實現(xiàn)等方面的要求,這些通常被稱之為“設(shè)計約束”。從甲乙雙方合同的角度,設(shè)計約束也是一種需求——一種“非功能”性的需求,后來,軟件的質(zhì)量問題越來越突出,描述軟件質(zhì)量目標(biāo)的要求也成為非功能性需求的一部分。于是,目前業(yè)界關(guān)于軟件的非功能性需求,通常包括:質(zhì)量屬性要求和約束性要求。
在軟件開發(fā)過程中,明確非功能性需求的優(yōu)勢主要表現(xiàn)在:
1) 確保軟件系統(tǒng)遵守法律和合規(guī)性規(guī)則;
2) 確保軟件系統(tǒng)的可靠性、可用性和性能等;
3) 確保良好的用戶體驗和易用性;
4) 有助于軟件系統(tǒng)的安全策略。
2、非功能性需求分類
1)性能需求
性能是系統(tǒng)或組件在給定的限制條件(如速度、精度或內(nèi)存使用)內(nèi)完成其指定功能的程度。性能表現(xiàn)是衡量軟件質(zhì)量的重要指標(biāo),在需求分析和系統(tǒng)設(shè)計階段就必須充分考慮性能因素。性能指標(biāo)主要包括響應(yīng)時間、并發(fā)數(shù)、資源使用率等。簡單地說,性能需求體現(xiàn)了系統(tǒng)如何“多快好省”地實現(xiàn)客戶的功能需求。
2)界面需求
界面主要描述了對產(chǎn)品外觀的期望、情緒和風(fēng)格。這些需求規(guī)定了產(chǎn)品界面想要達(dá)到的目標(biāo),它和詳細(xì)的界面設(shè)計還是有區(qū)別的,體現(xiàn)的是客戶的直觀感受。界面需求還包括對控件進(jìn)行規(guī)范和對控件的使用范圍進(jìn)行一個規(guī)定等方面的內(nèi)容??梢钥紤]借用一個原型來描述。
3)易用性
易用性是一種以使用者為中心的概念,易用性的重點在于讓產(chǎn)品的設(shè)計能夠符合使用者的習(xí)慣和需求,能讓用戶在使用該產(chǎn)品功能時,花費最少的時間發(fā)揮最大的效能。
4)安全性
安全性指產(chǎn)品消除潛在風(fēng)險的能力和對風(fēng)險的承受能力。包括保密性、可靠性和完整性三個子特性。保密性指數(shù)據(jù)不能被授權(quán)用戶以外的任何人訪問的能力??煽啃灾甘跈?quán)用戶可以不受阻止的訪問數(shù)據(jù)、與其它軟件的兼容的能力和產(chǎn)品的強壯度。完整性指按預(yù)期目標(biāo)完成任務(wù)的能力。
一般分為程序安全、系統(tǒng)安全、數(shù)據(jù)安全。程序安全指開發(fā)的程序是否是安全的,程序上有沒有安全的漏洞,例如Web開發(fā)中服務(wù)器代碼沒有對輸入的參數(shù)進(jìn)行驗證,從而導(dǎo)致客戶端機器人輕易的獲取數(shù)據(jù)。系統(tǒng)安全指系統(tǒng)整體的安全,例如安全的粒度,未經(jīng)授權(quán)的用戶是否可以輕易的訪問非法的數(shù)據(jù)等。數(shù)據(jù)安全是對數(shù)據(jù)的保護,數(shù)據(jù)庫中數(shù)據(jù)有沒有做審核,用戶之間是否會共享數(shù)據(jù)等。
5)系統(tǒng)完整性
系統(tǒng)完整性指為完成業(yè)務(wù)需求和系統(tǒng)正常運行本身要求而必須具有的功能,這些功能往往是用戶不能提出的。典型的功能有:聯(lián)機幫助、數(shù)據(jù)管理、用戶管理、軟件發(fā)布管理、在線升級等等。
并不是所有的系統(tǒng)都必須包括以上所有的功能,而是可以根據(jù)產(chǎn)品的使用環(huán)境和企業(yè)的產(chǎn)品發(fā)展決策進(jìn)行挑選。例如,在線升級、軟件發(fā)布管理適用于具有因特網(wǎng)或內(nèi)網(wǎng)環(huán)境的軟件產(chǎn)品;而數(shù)據(jù)管理對于產(chǎn)生數(shù)據(jù)存儲的產(chǎn)品則是必須的,設(shè)計人員不應(yīng)假設(shè)用戶同時是一個合格的DBA,而且系統(tǒng)所產(chǎn)生信息的分布、關(guān)系,也不是DBA所應(yīng)該了解的內(nèi)容。因此,完整的系統(tǒng)應(yīng)該包括數(shù)據(jù)備份、恢復(fù)、日志管理、垃圾數(shù)據(jù)清除等基本功能,哪怕這些功能的核心只是一條語句或命令。用戶管理功能是另一項必不可少的功能,它定義哪些用戶可以以什么樣的功能使用系統(tǒng)。好的用戶管理功能不僅可以有效控制用戶對系統(tǒng)的使用,使系統(tǒng)處于一個安全、負(fù)載合理的運行狀況,還能提高系統(tǒng)的應(yīng)用適應(yīng)性。
6)可移植性
可移植性指從系統(tǒng)某一環(huán)境轉(zhuǎn)移到另一環(huán)境下的難易程度,良好的可移植性可以提高軟件的生命周期,具體包括適應(yīng)性、易安裝性、遵循性、可替換性、易部署等??梢浦残耘c運行平臺的軟硬件環(huán)境相關(guān),可移植性要求選擇正確的開發(fā)工具、平臺來支持,同時也與一些功能性的需求相關(guān),如全球語言支持等。
7)可維護性
系統(tǒng)的可維護性是衡量一個系統(tǒng)的可修復(fù)性和可改進(jìn)性的難易程度。所謂可修復(fù)性是指在系統(tǒng)發(fā)生故障后能夠排除(或抑制)故障予以修復(fù),并返回到原來正常運行狀態(tài)的可能性;可改進(jìn)性則是系統(tǒng)具有接受對現(xiàn)有功能的改進(jìn),增加新功能的可能性。
8)可擴展性
可擴展性指的是當(dāng)系統(tǒng)達(dá)到瓶頸的時候怎樣在不修改代碼的情況下提供系統(tǒng)的負(fù)載能力,擴展一般分為Scale UP(縱向擴展)和Scale Out(橫向擴展)。一般情況下會綜合運用UP和OUT。例如,增加服務(wù)器的性能來提高系統(tǒng)的處理能力,但是任何計算機都會有一定的瓶頸,當(dāng)增加服務(wù)器性能不能達(dá)到提高系統(tǒng)性能的時候,我們需要考慮橫向的擴展服務(wù)器,也即Scale Out。在Scale Out時一般需要我們的系統(tǒng)是狀態(tài)無關(guān)的,即Stateless。
9)可靠性
可靠性指軟件在異常情況下或在被非法、非常規(guī)使用時維持自身功能的能力。主要體現(xiàn)在容錯和健壯性這兩個方面。
容錯指軟件發(fā)生故障時仍保持正常運行的能力。它保證軟件能在異常情況下正常運行,并在內(nèi)部完成故障的修復(fù)工作。修復(fù)完成后,軟件需要繼續(xù)或從頭開始執(zhí)行異常位置的操作。
健壯性是保護軟件不受非正常使用方式或非法輸入影響的能力。具備該能力后,不論怎樣的使用方式,軟件都能準(zhǔn)確遷移至系統(tǒng)定義的狀態(tài)。
3、非功能性需求的常見描述示例
非功能性需求之所以經(jīng)常被忽略,是因為它們不易被發(fā)現(xiàn),發(fā)現(xiàn)后不易表達(dá)、實現(xiàn)以及測試,下面列出一些常見的非功能性需求描述示例。
1)性能需求
● 響應(yīng)時間:在95%的情況下,一般時段響應(yīng)時間不超過1.5秒,高峰時段不超過4秒;在網(wǎng)絡(luò)暢通時,電子地圖刷新時間不超過10秒;
● 并發(fā)數(shù):系統(tǒng)可以同時滿足10,000個用戶請求;
● 資源使用率:CPU占用率<=50%,內(nèi)存占用率<=50%。
2)界面需求
對于一個銀行系統(tǒng)的界面,80%的用戶能夠在第一次看見該產(chǎn)品的5秒內(nèi),意識到這是一個xx銀行的軟件。
3)易用性
● 在引入該產(chǎn)品的3個月內(nèi),60%的用戶應(yīng)該可以在45秒內(nèi)用它來完成轉(zhuǎn)賬的任務(wù),失敗率控制在萬分之一以內(nèi);
● 80%的用戶在接受一個2小時的系統(tǒng)介紹培訓(xùn)后,可以在5分鐘之內(nèi)成功預(yù)訂房間。
4)安全性
● 嚴(yán)格權(quán)限訪問控制,用戶在經(jīng)過身份認(rèn)證后,只能訪問其權(quán)限范圍內(nèi)的數(shù)據(jù),只能進(jìn)行其權(quán)限范圍內(nèi)的操作;
● 提供運行日志管理及安全審計功能,可追蹤系統(tǒng)的歷史使用情況;
● 能經(jīng)受來自互聯(lián)網(wǎng)的一般性惡意攻擊。如病毒(包括木馬)攻擊、口令猜測攻擊、黑客入侵等;
● 至少99%的攻擊需要在10秒內(nèi)檢測到。
5)系統(tǒng)的完整性
該系統(tǒng)包括數(shù)據(jù)備份、恢復(fù)、日志管理、垃圾數(shù)據(jù)清除等基本功能。
6)可移植性
軟件是便攜式的,從一個操作系統(tǒng)移動到其他操作系統(tǒng)不會產(chǎn)生任何問題。
7)可擴展性
● 可實現(xiàn)負(fù)載均衡,日后若信息量較大,系統(tǒng)可相應(yīng)增加服務(wù)器實現(xiàn)擴展;
● 由于系統(tǒng)模塊之間的低耦合性,在增加新功能模塊時,對于舊的功能模塊影響不大。
8)可維護性
● 從接到修改請求后,對于普通修改應(yīng)在1~2天內(nèi)完成;
● 對于評估后為重大需求或設(shè)計修改應(yīng)在1周內(nèi)完成;
● 90%的BUG修改時間不超過1個工作日,其他不超過2個工作日。
9)可靠性
● 分布式系統(tǒng)在發(fā)生通信異常時會先暫時切斷連接,等問題修復(fù)完成后再重新連接,恢復(fù)軟件的運行;
● 系統(tǒng)缺陷率每1,000小時最多發(fā)生1次故障;
● 因軟件系統(tǒng)的失效而造成無法完成業(yè)務(wù)的概率要小于5‰。
4、小結(jié)
通過上述內(nèi)容可以了解到非功能性需求的常見內(nèi)容,非功能性需求關(guān)注的是軟件系統(tǒng)的質(zhì)量屬性,需要根據(jù)這些特性來評估軟件系統(tǒng),因此非功能性需求對整個系統(tǒng)而言是至關(guān)重要的。(本文版權(quán)歸北京中基數(shù)聯(lián)科技有限公司所有,未經(jīng)授權(quán)不得轉(zhuǎn)載。)
參考文獻(xiàn)
[1] 張宏升. 軟件架構(gòu)的非功能性需求指標(biāo)和區(qū)域化支持[J]. 電腦知識與技術(shù), 2011, (9):2085-2086,2089.
[2] 袁培森.何金陵.韋磊.電力信息系統(tǒng)非功能性需求管理研究[J].啟明星辰,2013.
以上就是軟件造價評估公司中基數(shù)聯(lián)為您帶來的“軟件需求分析——非功能性需求”所有內(nèi)容,更多軟件開發(fā)成本估算知識敬請關(guān)注中基數(shù)聯(lián)!