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