當前位置:學問君>學習教育>畢業論文>

非功能需求對計算機軟件體系結構的影響

學問君 人氣:2.63W

1、引言

非功能需求對計算機軟件體系結構的影響

軟件的發展離不開幕後衆多的編程人員、測試人員、文檔撰寫員,需求分析師、系統工程師、軟件架構師等。在IT界,軟件架構師是豐富軟件項目經驗及具有廣博而精鑽技術知識的象徵。

軟件架構師在軟件工程的生命週期中,起着承上啓下的關鍵作用。一名好的軟件架構師的知識結構中,需要具備系統開發全過程的經驗,對於IT建設生命週期各個環節有深入瞭解,其中包括:系統膜塊邏輯設計、物理設計、代碼開發、項目管理、測試、發佈、執行維護等;需要深入掌握一到兩種主流技術平臺上開發系統的方法;瞭解多種應用系統的結構;瞭解架構設計領域的主要理論、流派、框架。另外,在業務知識領域中,架構師也要十分清楚並深入瞭解系統建設的業務需求;瞭解系統的非功能需求和執行維護需求;瞭解企業IT公共設施、網絡環境、外部系統。圖1中列舉了架構師的基本知識結構,其中,涉及到了非功能需求。顧名思義,此需求乃軟件功能需求以外的需求,用“非功能需求”來概括之,便是它難以全面概括的事實。

2、概念

在系統工程和需求工程中,非功能需求(Non—functiona1Requirement,NFR)確定了衡量的尺度,用於對系統執行的判斷,而不是具體的系統行爲。可以這樣理解,非功能需求是指軟件產品爲滿足用戶業務需求(即功能需求)而必須具有且除功能需求以外的特性。

比如設計一款手機,那麼,這個手機必須要滿足的功能需求就包括打電話、發短信、手機上網等。但是,在設計的過程中,也同樣不能忽略的是:它是否易用(是否要仔細閱讀說明書纔可以使用);它的性能(儲存空間大小、電池壽命長短、待機時間長短);它的外觀(美觀、時尚、大方,能否抓住消費者的心理)。這些不能忽略的內容便構成了非功能需求。手機的特性類似軟件的非功能需求,雖然與其功能不直接相關,但是都會左右消費者的選購。

軟件工程與建築工程非常類似,軟件系統的需求種類也不少,如圖2所示。既然有非功能需求,便有功能需求。功能需求是大家比較熟悉的一類需求。功能需求描述要開發的軟件系統應該做什麼,它可以包括爲用戶提供哪些服務,也可以包括本系統爲其他系統提供哪些服務。非功能需求中分爲質量屬性和約束。約束需求規定了開發軟件系統時必須遵守的限制條件。例如,要採用什麼操作系統,要採用哪種開發技術,是否需要與遺留的老系統進行互操作等。當然,還要考慮軟件用戶所在的行業中必須遵守的法律法規、政策方針和行業標準、企業標準。質量屬性作爲非功能需求的一個分支,同樣包含衆多內容。例如性能、安全性、易用性、可靠性等衆多屬性如何分類的問題。如圖3所示,將軟件質量的屬性分類爲“產品修改”、 “產品改型”和“產品操作”,其中包含了相對應的質量屬性。事實上,這樣的分類模型存在着一個缺點,即關注了產品的本身,而忽略了軟件產品在開發過程中所存在的非功能需求。例如,軟件開發中的代碼可重用性、代碼的易理解性等等。

鑑於此,非功能需求中的質量屬性也可以從如此的角度進行分類: “執行期質量屬性”和“開發期質量屬性”。執行期質量屬性是軟件系統在執行期間,最終用戶可以直接感受到的一類屬性;開發期質量屬性包含和軟件開發、維護和移植這3類活動相關的所有質量屬性。

3、來源

有人把需求喻爲軟件開發的起跑線,需求工程是否順利和成功,能夠爲軟件的最終成功奠定紮實的基礎。調研完成的需求可能與相關領域緊密結合,則需要了解這些領域背景;需求可能來自於多方,則需要徵求和總結各種想法和意見等等。可以根據圖2的分類方法,將軟件的需求細分到功能需求和非功能需求,其中非功能需求包含了質量屬性和約束。再考慮需求提出的不同級別,可以得到軟件需求空間分割。

4、功能需求與架構設計

功能需求是重要的,它們包含了幾乎所有用戶所要求實現的業務邏輯。當然,非功能需求也同樣是決定架構成功與否的關鍵因素。軟件客戶不能嚴格區分什麼是功能需求,什麼是非功能需求。事實上,非功能需求中的質量屬性與約束是一個複雜的問題。

(1)功能需求影響架構,架構必須要適應功能需求。但是功能需求不會決定架構,是否基於接121編程還是硬編碼實現功能,是否要分層等等問題都不是功能需求所能單獨確定的。

(2)質量屬性會從根本上影響架構。例如,非常強調性能的系統軟件會在算法實現上下足功夫,而左右在架構設計中是否避免了性能的損失。

(3)至於約束,它或作爲架構設計的限制條件,或轉變爲功能需求,或轉換爲質量屬性。

5、主要內容

客戶要功能也要質量。比較功能需求與非功能需求,相對而言,客戶比較擅長提出功能需求。這是所熟悉瞭解的業務領域內的知識範疇,而且都是經過大量的實踐操作。然而對於非功能需求卻並不是如此,不可能對於每個客戶都要求他們瞭解和掌握需求工程。所以在需求製作的過程中,要給予他們足夠的引導。架構師必須清楚地認識:爲客戶而設計,不僅要滿足客戶要求的功能,也要達到客戶所期望的質量。

非功能需求分爲“執行期質量屬性”和“開發期質量屬性”。

5.1 執行期的質量屬性

(1)性能。性能是指軟件系統及時提供相應服務的能力。具體而言,性能包括速度、吞吐量和持續高速性這三方面的要求。

(2)安全性。指軟件系統同時兼顧向合法用戶提供服務,又阻止非授權使用功能的能力。

(3)易用性。指軟件系統易於使用的程度。

(4)可用性。可用性與易用性不相同。可用性指系統長時間無故障執行的能力。

(5)可伸縮性。指當用戶增加時,軟件系統維持高服務質量的能力。

(6)互操作性。指本軟件系統與其他系統交換數據和相互調用服務的'難易程度。

(7)可靠性。軟件系統在一定時間內無故障執行的能力。

(8)健壯性。也稱容錯性。是指軟件系統在異常情況仍能夠正常執行的能力。

5.2 開發期的質量屬性

(1)易理解性。是指系統設計能被開發人員理解的難易程度。

(2)可擴展性。爲適應新需求或者需求變化,爲軟件增加功能的能力。有些時候,稱之爲靈活性。

(3)可重用性。重用軟件系統或其中一部分的能力的難易程度。

(4)可測試性。對軟件測試以證明其滿足需求規約的難易程度。在實際的項目中,主要指進行單元測試等難易程度。

(5)可維護性。修改Bug,增加功能,提高質量屬性。

(6)可移植性。將軟件系統從一個執行環境轉移到另一個不同的執行環境的難易程度。

6、結語

非功能需求描述的困難在於很難像功能性需求那樣,可以透過結構化和量化的詞語來描述清楚,在描述這類需求的時候,經常採用軟件性能要好,查詢要在多少時間內出結果,軟件健壯性要好等較模糊的描述詞語。這類描述詞語都是脫離了軟件的執行環境,人和相關的場景描述,因此資訊很難體現到軟件架構設計和具體的實現中。在架構設計中關注的安全,系統開發框架,併發和性能,異常日誌等不是憑空產生出來的,而是來源於對非功能性需求的分析。

對於非功能需求的描述,在描述過程中必須要強調到人、業務場景、環境等各方面的內容。強調的目的就是要說明非功能需求不是無限度的,任何一項非功能需求的實現往往會付出更大的研發人力成本和硬件網絡成本。比如在描述一個表單的模糊查詢功能的時候,如果簡單地描述爲所有查詢都要在多少秒內完成,那麼這種需求將很難得到滿足。

然而,非功能需求卻着實在架構的制定過程中具有可觀的影響力。它是軟件設計中不能忽視的重點和難點。

參考文獻

[1] Karl ers.軟件需求[M】。第2版。北京:清華大學— — 40 ——出版社,2004.

[2]Suzanne Robertson.掌握需求過程【M】。北京:人民郵電出版社,2003.

[3]溫昱。軟件架構設計[M】。北京:電子工業出版社,2007.

[4]康凱,劉沛春。軟件架構師講座【z].國家資訊產業部計算機技術中心,2007.