數(shù)據(jù)流程圖和數(shù)據(jù)結(jié)構(gòu)是需求分析中不可缺少的一環(huán)
需求分析活動(dòng)要完成4項(xiàng)任務(wù),分別是:
- 問題識(shí)別
- 評(píng)價(jià)和綜合
- 形成規(guī)格說明
- 評(píng)審規(guī)格說明
這4項(xiàng)任務(wù)中,“問題識(shí)別”是要識(shí)別出用戶提出軟件需求要解決的問題;“評(píng)價(jià)和綜合”是要評(píng)價(jià)數(shù)據(jù)信息的流程和數(shù)據(jù)結(jié)構(gòu),對(duì)軟件功能逐步細(xì)化,闡明接口特性,揭示設(shè)計(jì)約束,并將其綜合成一個(gè)總的用戶問題的解法;“形成規(guī)格說明”和“評(píng)審規(guī)格說明”,顧名思義,這里不再贅述。
這4個(gè)任務(wù)中,主要的需求分析活動(dòng)集中在“評(píng)價(jià)和綜合”;而評(píng)價(jià)數(shù)據(jù)流程圖和數(shù)據(jù)結(jié)構(gòu)又是“評(píng)價(jià)和綜合”中重要的一環(huán)。
首先,建立數(shù)據(jù)結(jié)構(gòu)有助于發(fā)現(xiàn)軟件功能的全貌,防止功能遺漏。
典型的數(shù)據(jù)結(jié)構(gòu)如下圖。
建立這樣的結(jié)構(gòu)是一個(gè)自頂向下逐層分解的過程。在每一層分解完成時(shí),通過驗(yàn)證分解部分的總和是否覆蓋上層院模塊的所有功能,就可以有效地避免功能遺漏。如果不建立這樣的數(shù)據(jù)結(jié)構(gòu),直接開始對(duì)功能的逐個(gè)描述,就有可能遺漏某個(gè)功能而不自知。
其次,建立數(shù)據(jù)流程圖有助于分析軟件的內(nèi)外部接口。
數(shù)據(jù)流程圖是一種描述信息流和變換的圖示技術(shù),當(dāng)數(shù)據(jù)從輸入流動(dòng)到輸出時(shí)就要應(yīng)用這些變換。它的基本形式如下圖。
在數(shù)據(jù)流程圖中,軟件元素被描述成為一個(gè)帶有輸入和輸出數(shù)據(jù)的單個(gè)泡,而這些輸入和輸出數(shù)據(jù)分別由進(jìn)入的箭頭和出去的箭頭來表示。這些數(shù)據(jù)路徑同時(shí)也表明了軟件元素之間的接口。當(dāng)把整個(gè)軟件元素及其之間的數(shù)據(jù)流都用數(shù)據(jù)流程圖表現(xiàn)出來,實(shí)際上,軟件的內(nèi)部、外部接口也就表達(dá)得很清楚了。
所以,在需求分析的時(shí)候先建立數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)流程圖,對(duì)于做好功能描述、接口分析會(huì)有很大幫助。
在GJB438B的需求規(guī)格說明書的內(nèi)容要求中,并沒有數(shù)據(jù)流程圖和數(shù)據(jù)結(jié)構(gòu)。這樣使得一些依據(jù)438B標(biāo)準(zhǔn)編寫需求規(guī)格說明,進(jìn)行需求分析的軟件設(shè)計(jì)師,只知道按照模版要求,在描述完軟件運(yùn)行狀態(tài)和方式之后,就開始逐條描述軟件功能了。由此就可能帶來前面所說的遺漏需求等問題。要避免這樣的問題,又要符合438B模版的要求,做法很簡單,就是在“1.2系統(tǒng)概述”中增加數(shù)據(jù)流程圖和數(shù)據(jù)結(jié)構(gòu)。因?yàn)?ldquo;系統(tǒng)概述”的內(nèi)容是介紹系統(tǒng)和軟件的用途,而數(shù)據(jù)流程圖和數(shù)據(jù)結(jié)構(gòu)所展現(xiàn)的軟件的總體功能、數(shù)據(jù)信息,就是軟件的總體介紹,與這一章節(jié)的內(nèi)容很契合。



























