數(shù)據(jù)流圖的設(shè)計(jì)
?
?
??? 數(shù)據(jù)流圖(Data Flow Diagram,簡稱DFD)是一種圖形化技術(shù),它描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)歷的變換,其既提供了功能建模機(jī)制也提供了信息建模機(jī)制。
?
一、DFD中的基本符號:
?
??? 數(shù)據(jù)流圖有四種基本圖形符號:
?
???
→:箭頭,表示數(shù)據(jù)流
??? 〇:圓或橢圓,表示加工,即變換數(shù)據(jù)的處理
??? =:雙杠(或開口矩形),表示數(shù)據(jù)存儲
??? □:方框,表示數(shù)據(jù)的源點(diǎn)或終點(diǎn)
?
二、DFD中的4中元素:
?
??? (1)數(shù)據(jù)流:數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)內(nèi)傳播的路徑,因此由一組成分固定的數(shù)據(jù)組成。如訂票單由旅客姓名、年齡、單位、身份證號、日期、目的地等數(shù)據(jù)項(xiàng)組成。
?????????????? 數(shù)據(jù)流是流動中的數(shù)據(jù),所以必須有流向,除了與數(shù)據(jù)存儲之間的數(shù)據(jù)流不用命名外,數(shù)據(jù)流應(yīng)該用名詞或名詞短語命名。
??? (2)加工(數(shù)據(jù)處理):對數(shù)據(jù)流進(jìn)行某些操作或變換。每個加工也要有名字,通常是動詞短語,簡明地描述完成什么加工。在分層的數(shù)據(jù)流圖中,加工還應(yīng)編號。
??? (3)數(shù)據(jù)存儲(文件):指暫時保存的數(shù)據(jù),它可以是數(shù)據(jù)庫文件或任何形式的數(shù)據(jù)組織。
??? (4)數(shù)據(jù)源點(diǎn)或終點(diǎn)(外部實(shí)體):是本軟件系統(tǒng)外部環(huán)境中的實(shí)體(包括人員、組織或其他軟件系統(tǒng)),統(tǒng)稱外部實(shí)體。一般只出現(xiàn)在數(shù)據(jù)流圖的頂層圖。
?
三、畫數(shù)據(jù)流圖的步驟:
?
??? (1)首先畫系統(tǒng)的輸入輸出,即先畫頂層數(shù)據(jù)流圖。頂層流圖只包含一個加工,用以表示被開發(fā)的系統(tǒng),然后考慮該系統(tǒng)有哪些輸入數(shù)據(jù)、輸出數(shù)據(jù)流。頂層圖的作用在于表明被開發(fā)系統(tǒng)的范圍以及它和周圍環(huán)境的數(shù)據(jù)交換關(guān)系。下圖為飛機(jī)機(jī)票預(yù)訂系統(tǒng)的頂層圖。
?
???
?
??? (2)畫系統(tǒng)內(nèi)部,即畫下層數(shù)據(jù)流圖。不再分解的加工稱為基本加工。一般將層號從0開始編號,采用自頂向下,由外向內(nèi)的原則。畫0層數(shù)據(jù)流圖時,分解頂層流圖的系統(tǒng)為若干子系統(tǒng),決定每個子系統(tǒng)間的數(shù)據(jù)接口和活動關(guān)系。例如,在上面的機(jī)票預(yù)訂系統(tǒng)按功能可分成兩部分,一部分為旅行社預(yù)訂機(jī)票,另一部分為旅客取票,兩部分通過機(jī)票文件的數(shù)據(jù)存儲聯(lián)系起來,0層數(shù)據(jù)流圖如上圖。
?
??? (3)注意事項(xiàng):?
??? ①命名:不論數(shù)據(jù)流、數(shù)據(jù)存儲還是加工,合適的命名使人們易于理解其含義。?
??? ②畫數(shù)據(jù)流而不是控制流:數(shù)據(jù)流反映系統(tǒng)“做什么”,不反映“如何做”,因此箭頭上的數(shù)據(jù)流名稱只能是名詞或名詞短語,整個圖中不反映加工的執(zhí)行順序。
??? ③一般不畫物質(zhì)流:數(shù)據(jù)流反映能用計(jì)算機(jī)處理的數(shù)據(jù),并不是實(shí)物,因此對目標(biāo)系統(tǒng)的數(shù)據(jù)流圖一般不要畫物質(zhì)流。?
??? ④每個加工至少有一個輸入數(shù)據(jù)流和一個輸出數(shù)據(jù)流:反映出此加工數(shù)據(jù)的來源與加工的結(jié)果。?
??? ⑤編號:如果一張數(shù)據(jù)流圖中的某個加工分解成另一張數(shù)據(jù)流圖時,則上層圖為父圖,直接下層圖為子圖。子圖及其所有的加工都應(yīng)編號。
???
⑥父圖與子圖的平衡:子圖的輸入輸出數(shù)據(jù)流同父圖相應(yīng)加工的輸入輸出數(shù)據(jù)流必須一致,此即父圖與子圖的平衡。?
??? ⑦局部數(shù)據(jù)存儲:當(dāng)某層數(shù)據(jù)流圖中的數(shù)據(jù)存儲不是父圖中相應(yīng)加工的外部接口,而只是本圖中某些加工之間的數(shù)據(jù)接口,則稱這些數(shù)據(jù)存儲為局部數(shù)據(jù)存儲。?
??? ⑧提高數(shù)據(jù)流圖的易懂性:注意合理分解,要把一個加工分解成幾個功能相對獨(dú)立的子加工,這樣可以減少加工之間輸入、輸出數(shù)據(jù)流的數(shù)目,增加數(shù)據(jù)流圖的可理解性。?
????
???
?
四、數(shù)據(jù)流程圖的主要作用:
?
??? 1、便于用戶表達(dá)功能需求和數(shù)據(jù)需求及其聯(lián)系
??? 2、便于兩類人員共同理解現(xiàn)行系統(tǒng)和規(guī)劃系統(tǒng)的框架
??? 3、清晰表達(dá)數(shù)據(jù)流的情況
??? 4、有利于系統(tǒng)建模
?
五、常見錯誤檢測:
?
??? 1、數(shù)據(jù)流圖中所有圖形符號只能是4種基本符號
??? 2、數(shù)據(jù)流圖的主圖(非頂層圖)必須包含4中基本元素,缺一不可
??? 3、主圖的數(shù)據(jù)流必須封閉在外部實(shí)體之間,外部實(shí)體可以不只1個
??? 4、每個加工至少有1個輸入數(shù)據(jù)流和1個輸出數(shù)據(jù)流
??? 5、數(shù)據(jù)流圖中必須按層給加工框編號,編號需體現(xiàn)各個層次的關(guān)系
??? 6、任何數(shù)據(jù)流子圖均與上層的一個加工對應(yīng),且父圖與子圖平衡
??? 7、圖上每個元素都必須有名字
??? 8、數(shù)據(jù)流圖中不可夾帶控制流
?
??? 注:部分文件不需要在上層圖中畫出。例如某文件僅與某個單一的加工相關(guān),則此文件為部分文件,只需要在表示該加工的子圖中畫出即可。
?
?
-The End-