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