- 相關(guān)推薦
非功能需求對計算機軟件體系結構的影響
1、引言
軟件的發(fā)展離不開(kāi)幕后眾多的編程人員、測試人員、文檔撰寫(xiě)員,需求分析師、系統工程師、軟件架構師等。在IT界,軟件架構師是豐富軟件項目經(jīng)驗及具有廣博而精鉆技術(shù)知識的象征。
軟件架構師在軟件工程的生命周期中,起著(zhù)承上啟下的關(guān)鍵作用。一名好的軟件架構師的知識結構中,需要具備系統開(kāi)發(fā)全過(guò)程的經(jīng)驗,對于IT建設生命周期各個(gè)環(huán)節有深入了解,其中包括:系統膜塊邏輯設計、物理設計、代碼開(kāi)發(fā)、項目管理、測試、發(fā)布、運行維護等;需要深入掌握一到兩種主流技術(shù)平臺上開(kāi)發(fā)系統的方法;了解多種應用系統的結構;了解架構設計領(lǐng)域的主要理論、流派、框架。另外,在業(yè)務(wù)知識領(lǐng)域中,架構師也要十分清楚并深入了解系統建設的業(yè)務(wù)需求;了解系統的非功能需求和運行維護需求;了解企業(yè)IT公共設施、網(wǎng)絡(luò )環(huán)境、外部系統。圖1中列舉了架構師的基本知識結構,其中,涉及到了非功能需求。顧名思義,此需求乃軟件功能需求以外的需求,用“非功能需求”來(lái)概括之,便是它難以全面概括的事實(shí)。
2、概念
在系統工程和需求工程中,非功能需求(Non—functiona1Requirement,NFR)確定了衡量的尺度,用于對系統運行的判斷,而不是具體的系統行為?梢赃@樣理解,非功能需求是指軟件產(chǎn)品為滿(mǎn)足用戶(hù)業(yè)務(wù)需求(即功能需求)而必須具有且除功能需求以外的特性。
比如設計一款手機,那么,這個(gè)手機必須要滿(mǎn)足的功能需求就包括打電話(huà)、發(fā)短信、手機上網(wǎng)等。但是,在設計的過(guò)程中,也同樣不能忽略的是:它是否易用(是否要仔細閱讀說(shuō)明書(shū)才可以使用);它的性能(儲存空間大小、電池壽命長(cháng)短、待機時(shí)間長(cháng)短);它的外觀(guān)(美觀(guān)、時(shí)尚、大方,能否抓住消費者的心理)。這些不能忽略的內容便構成了非功能需求。手機的特性類(lèi)似軟件的非功能需求,雖然與其功能不直接相關(guān),但是都會(huì )左右消費者的選購。
軟件工程與建筑工程非常類(lèi)似,軟件系統的需求種類(lèi)也不少,如圖2所示。既然有非功能需求,便有功能需求。功能需求是大家比較熟悉的一類(lèi)需求。功能需求描述要開(kāi)發(fā)的軟件系統應該做什么,它可以包括為用戶(hù)提供哪些服務(wù),也可以包括本系統為其他系統提供哪些服務(wù)。非功能需求中分為質(zhì)量屬性和約束。約束需求規定了開(kāi)發(fā)軟件系統時(shí)必須遵守的限制條件。例如,要采用什么操作系統,要采用哪種開(kāi)發(fā)技術(shù),是否需要與遺留的老系統進(jìn)行互操作等。當然,還要考慮軟件用戶(hù)所在的行業(yè)中必須遵守的法律法規、政策方針和行業(yè)標準、企業(yè)標準。質(zhì)量屬性作為非功能需求的一個(gè)分支,同樣包含眾多內容。例如性能、安全性、易用性、可靠性等眾多屬性如何分類(lèi)的問(wèn)題。如圖3所示,將軟件質(zhì)量的屬性分類(lèi)為“產(chǎn)品修改”、 “產(chǎn)品改型”和“產(chǎn)品操作”,其中包含了相對應的質(zhì)量屬性。事實(shí)上,這樣的分類(lèi)模型存在著(zhù)一個(gè)缺點(diǎn),即關(guān)注了產(chǎn)品的本身,而忽略了軟件產(chǎn)品在開(kāi)發(fā)過(guò)程中所存在的非功能需求。例如,軟件開(kāi)發(fā)中的代碼可重用性、代碼的易理解性等等。
鑒于此,非功能需求中的質(zhì)量屬性也可以從如此的角度進(jìn)行分類(lèi): “運行期質(zhì)量屬性”和“開(kāi)發(fā)期質(zhì)量屬性”。運行期質(zhì)量屬性是軟件系統在運行期間,最終用戶(hù)可以直接感受到的一類(lèi)屬性;開(kāi)發(fā)期質(zhì)量屬性包含和軟件開(kāi)發(fā)、維護和移植這3類(lèi)活動(dòng)相關(guān)的所有質(zhì)量屬性。
3、來(lái)源
有人把需求喻為軟件開(kāi)發(fā)的起跑線(xiàn),需求工程是否順利和成功,能夠為軟件的最終成功奠定扎實(shí)的基礎。調研完成的需求可能與相關(guān)領(lǐng)域緊密結合,則需要了解這些領(lǐng)域背景;需求可能來(lái)自于多方,則需要征求和總結各種想法和意見(jiàn)等等?梢愿鶕䦂D2的分類(lèi)方法,將軟件的需求細分到功能需求和非功能需求,其中非功能需求包含了質(zhì)量屬性和約束。再考慮需求提出的不同級別,可以得到軟件需求空間分割。
4、功能需求與架構設計
功能需求是重要的,它們包含了幾乎所有用戶(hù)所要求實(shí)現的業(yè)務(wù)邏輯。當然,非功能需求也同樣是決定架構成功與否的關(guān)鍵因素。軟件客戶(hù)不能?chē)栏駞^分什么是功能需求,什么是非功能需求。事實(shí)上,非功能需求中的質(zhì)量屬性與約束是一個(gè)復雜的問(wèn)題。
(1)功能需求影響架構,架構必須要適應功能需求。但是功能需求不會(huì )決定架構,是否基于接121編程還是硬編碼實(shí)現功能,是否要分層等等問(wèn)題都不是功能需求所能單獨確定的。
(2)質(zhì)量屬性會(huì )從根本上影響架構。例如,非常強調性能的系統軟件會(huì )在算法實(shí)現上下足功夫,而左右在架構設計中是否避免了性能的損失。
(3)至于約束,它或作為架構設計的限制條件,或轉變?yōu)楣δ苄枨,或轉換為質(zhì)量屬性。
5、主要內容
客戶(hù)要功能也要質(zhì)量。比較功能需求與非功能需求,相對而言,客戶(hù)比較擅長(cháng)提出功能需求。這是所熟悉了解的業(yè)務(wù)領(lǐng)域內的知識范疇,而且都是經(jīng)過(guò)大量的實(shí)踐操作。然而對于非功能需求卻并不是如此,不可能對于每個(gè)客戶(hù)都要求他們了解和掌握需求工程。所以在需求制作的過(guò)程中,要給予他們足夠的引導。架構師必須清楚地認識:為客戶(hù)而設計,不僅要滿(mǎn)足客戶(hù)要求的功能,也要達到客戶(hù)所期望的質(zhì)量。
非功能需求分為“運行期質(zhì)量屬性”和“開(kāi)發(fā)期質(zhì)量屬性”。
5.1 運行期的質(zhì)量屬性
(1)性能。性能是指軟件系統及時(shí)提供相應服務(wù)的能力。具體而言,性能包括速度、吞吐量和持續高速性這三方面的要求。
(2)安全性。指軟件系統同時(shí)兼顧向合法用戶(hù)提供服務(wù),又阻止非授權使用功能的能力。
(3)易用性。指軟件系統易于使用的程度。
(4)可用性?捎眯耘c易用性不相同?捎眯灾赶到y長(cháng)時(shí)間無(wú)故障運行的能力。
(5)可伸縮性。指當用戶(hù)增加時(shí),軟件系統維持高服務(wù)質(zhì)量的能力。
(6)互操作性。指本軟件系統與其他系統交換數據和相互調用服務(wù)的難易程度。
(7)可靠性。軟件系統在一定時(shí)間內無(wú)故障運行的能力。
(8)健壯性。也稱(chēng)容錯性。是指軟件系統在異常情況仍能夠正常運行的能力。
5.2 開(kāi)發(fā)期的質(zhì)量屬性
(1)易理解性。是指系統設計能被開(kāi)發(fā)人員理解的難易程度。
(2)可擴展性。為適應新需求或者需求變化,為軟件增加功能的能力。有些時(shí)候,稱(chēng)之為靈活性。
(3)可重用性。重用軟件系統或其中一部分的能力的難易程度。
(4)可測試性。對軟件測試以證明其滿(mǎn)足需求規約的難易程度。在實(shí)際的項目中,主要指進(jìn)行單元測試等難易程度。
(5)可維護性。修改Bug,增加功能,提高質(zhì)量屬性。
(6)可移植性。將軟件系統從一個(gè)運行環(huán)境轉移到另一個(gè)不同的運行環(huán)境的難易程度。
6、結語(yǔ)
非功能需求描述的困難在于很難像功能性需求那樣,可以通過(guò)結構化和量化的詞語(yǔ)來(lái)描述清楚,在描述這類(lèi)需求的時(shí)候,經(jīng)常采用軟件性能要好,查詢(xún)要在多少時(shí)間內出結果,軟件健壯性要好等較模糊的描述詞語(yǔ)。這類(lèi)描述詞語(yǔ)都是脫離了軟件的執行環(huán)境,人和相關(guān)的場(chǎng)景描述,因此信息很難體現到軟件架構設計和具體的實(shí)現中。在架構設計中關(guān)注的安全,系統開(kāi)發(fā)框架,并發(fā)和性能,異常日志等不是憑空產(chǎn)生出來(lái)的,而是來(lái)源于對非功能性需求的分析。
對于非功能需求的描述,在描述過(guò)程中必須要強調到人、業(yè)務(wù)場(chǎng)景、環(huán)境等各方面的內容。強調的目的就是要說(shuō)明非功能需求不是無(wú)限度的,任何一項非功能需求的實(shí)現往往會(huì )付出更大的研發(fā)人力成本和硬件網(wǎng)絡(luò )成本。比如在描述一個(gè)表單的模糊查詢(xún)功能的時(shí)候,如果簡(jiǎn)單地描述為所有查詢(xún)都要在多少秒內完成,那么這種需求將很難得到滿(mǎn)足。
然而,非功能需求卻著(zhù)實(shí)在架構的制定過(guò)程中具有可觀(guān)的影響力。它是軟件設計中不能忽視的重點(diǎn)和難點(diǎn)。
參考文獻
[1] Karl E.Wiegers.軟件需求[M】。第2版。北京:清華大學(xué)— — 40 ——出版社,2004.
[2]Suzanne Robertson.掌握需求過(guò)程【M】。北京:人民郵電出版社,2003.
[3]溫昱。軟件架構設計[M】。北京:電子工業(yè)出版社,2007.
[4]康凱,劉沛春。軟件架構師講座【z].國家信息產(chǎn)業(yè)部計算機技術(shù)中心,2007.
【非功能需求對計算機軟件體系結構的影響】相關(guān)文章:
對AMIS的功能需求分析03-21
需求信息的延遲對牛鞭效應的影響03-07
計算機軟件項目管理中的需求分析03-20
影響我國科技創(chuàng )新需求的障礙與對策03-19
淺析計算機軟件項目管理中的需求分析03-13
非審計服務(wù)對審計獨立性影響分析12-08