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