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