3.軟件需求分析的原則
近年來已提出了許多軟件分析與說明的方法,雖然各種分析方法都有其獨特的描述方法,但總的看來,所有分析方法還是有它們共同適用的基本原則。
(1)必須能夠表達和理解問題的數據域和功能域
所有軟件定義與開發工作最終是為了解決數據處理問題,就是將一種形式的數據轉換成另一種形式的數據。其轉換過程必定經歷輸入、加工數據和產生結果數據等步驟。對于計算機程序處理的數據,其數據域應包括數據流、數據內容和數據結構。
數據流即數據通過一個系統時的數據存儲(如磁盤文件或內存緩沖區)中引入附加數據。對數據進行轉換是程序中應有的功能或子功能。兩個轉換功能之間的數據傳遞就確定了功能間的接口。
數據內容即數據項。例如,學生名冊包含了班級、人數、每個學生的學號、姓名、性別、各科成績等。學生名冊的內容由它所包含的項定義。為了理解對學生名冊的處理,必須要理解它的數據內容。
數據結構即各種數據項的邏輯組織。數據是組織成表格,還是組織成有層次的樹型結構?在結構中數據項與其他哪些數據項相關?所有數據是在一個數據結構中,還是在幾個數據結構中?一個結構中的數據與其他結構中的數據如何聯系?這些問題都由數據結構分析來解決。
(2)必須按自項向下、逐層分解的方式對問題進行分解和不斷細化
如果將軟件要處理的問題作為一個整體來看,顯得太大太復雜很難理解。如果把問題以某種方式分解為幾個較易理解的部分,并確定各部分間的接口,從而實現整體功能。
在需求分析階段,軟件的功能域和信息域都能做進一步的分解。這種分解可以是同一層次上的,稱為橫向分解;也可以是多層次的縱向分解。
例如,把一個功能分解成幾個子功能,并確定這些子功能與父功能的接口,就屬于橫向分解。但如果繼續分解,把某些子功能又分解為小的子功能,某個小的子功能又分解為更小的功能,這就屬于縱向分解了。
(3)要給出系統的邏輯視圖和物理視圖
給出系統的邏輯視圖(邏輯模型)和物理視圖(物理模型),這對系統滿足處理需求所提出的邏輯限制條件和系統中其他成分提出的物理限制條件是必不可少的。軟件需求的邏輯視圖給出軟件要達到的功能和要處理的數據之間的關系,而不是實現的細節。例如,一個商店的銷售處理系統要從顧客那里獲取訂單,系統讀取訂單的功能并不關心訂單數據的物理形式和用什么設計讀入,也就是說無需關心輸入的機制,只是讀取顧客的訂單而已。類似的,系統中檢查庫存的功能只關心庫存文件的數據結構,而不關心在計算機中的具體存儲方式。軟件需求的邏輯描述是軟件設計的基礎。
軟件需求的物理視圖給出處理功能和數據結構的實際表示形式,這往往是由設備決定的,如一些軟件靠終端鍵盤輸入數據,另一些軟件靠模擬數據轉換設備提供數據。分析員必須弄清系統元素對軟件的限制并考慮功能和信息結構的物理表示。
4.軟件需求分析方法
需求分析方法由對軟件的數據域和功能域的系統分析過程及其表示方法組成。大多數的需求分析方法是由數據驅動的,也就是說,這些方法提供了一種表示數據域的機制。分析員根據這種表示,確定軟件功能及其他特性,最終建立一個待開發軟件的抽象模型,即目標系統的邏輯模型。數據域具有3種屬性:數據流、數據內容和數據結構。通常,一種需求分析方法總要利用其中的一種或幾種屬性。
目前已經出現了許多需求分析方法,每一種分析方法都引入了不同的記號和分析策略。但是它們仍具有以下的共性:
(1)支持數據域分析的機制
盡管每種方法進行數據域分析的方式不同,但它們仍有一些共同點。所有的方法都直接或間接地涉及到數據流、數據內容或數據結構域的屬性。在多數情況下,數據流特征是用將輸入轉換成輸出的變換(功能)過程來描述的,數據內容可以用數據詞典機制明確表示,或者通過描述數據或數據對象的層次結構隱含地表示。
(2)功能表示的方法
功能一般用數據變換或加工來表示,每項功能可用規定的記號(圓圈或方框)標識。功能的說明可以用自然語言文本來表達,也可以用形式化的規格說明語言來表達,還可以用上述的兩種方式的混合方式———結構化語言來描述。
(3)接口的定義
接口的說明通常是數據表示和功能表示的直接產物。某個具體功能的流進和流出數據流應是其他相關功能的流出或流入的數據流。因此,通過數據流的分析可以確定功能間的接口。
(4)問題分解的機制以及對抽象的支持
問題分解和抽象主要依靠分析員在不同抽象層次上表示數據域和功能域,以逐層細化的手段建立分層結構來實現。例如,無論使用哪種分析方法,都能表示“計算職工每月工資”之類的功能,并在這個抽象層次上操縱這個功能。另外,所有的分析方法都提供逐層分解的機制,把“計算職工每月工資”功能劃分成一些子功能,如計算房租、計算用電費、計算用水費、計算養老保險費等等。其中,每項子功能還可以在更低的一級抽象層次上表示。
(5)邏輯視圖和物理視圖
大多數方法允許分析員在著手問題的邏輯解決方案之前先分析物理視圖。通常,同一種表示法既可用來表示邏輯視圖,也可用來表示物理視圖。
(6)系統抽象模型
為了能夠比較精確地定義軟件需求,可以建立待開發軟件的一個抽象的模型,用基于抽象模型的術語來描述軟件系統的功能和性能,形成軟件需求規格說明。這種抽象的模型是從外部現實世界的問題領域抽象而來,在高級層次上描述和定義系統的服務。
對于比較簡單的問題,不必建立抽象系統模型。或者可以認為,系統模型在分析員頭腦中形成,直接由分析員寫成規格說明。但對于比較復雜的問題,僅有在頭腦中想象的模型是不夠的,必須建立適當的比較形式化的抽象系統模型,才能準確全面地反映問題領域中各種復雜的要求。不同類型的問題有不同的需要解決的中心問題,因而要建立不同類型的系統模型。對于數學軟件,設計的中心問題是算法,軟件人員主要力量要花在數學模式算法的考慮上。對于數據通信軟件,中心問題是數據傳送和過程控制,實現算法簡單,采用數據流模型比較合適。對于涉及大量數據的數據處理軟件,中心問題是數據處理,包括數據的采集、數據的傳送、存儲、變換、輸出等,一旦了解了數據結構,與它相關的算法就很簡單了。如果系統要求有數據支持,通過數據庫獲取和存放信息,還需要考慮數據在數據庫中的組織方式和存取方法,建立數據庫模型。因此,在分析過程中數據模型是首先要集中精力考慮的問題。
系統模型的建立是對現實世界中存在的有關實體和活動的抽象和精化,其建立過程包括觀察分析、模型表示和模型檢查3個階段。
首先,分析員和用戶合作,從各方面觀察現實世界中的有關實體和活動,建立理解的共同基準,分清哪些概念與系統相關,必須納入系統模型,哪些是系統模型不必關心的,分析員和用戶在共同理解的基礎上,建立系統模型,包括系統提供的各種系統服務,模型表示的細節應有:系統輸入、系統輸出、系統數據處理、系統控制等。
建立系統模型以后,還要進行檢查。除了靜態檢查之外,系統描述可以部分地模擬執行,將執行情況與對外部現實世界系統觀察得到的系統跟蹤信息進行對照,檢查模型是否符合要求。這種建立系統模型并模擬執行和檢查的方法叫做系統原型開發。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |