1. 程式人生 > >(轉)資料流圖詳解(DFD)

(轉)資料流圖詳解(DFD)

一、概念

它是將提供給使用者的業務流程圖(“物理模型”)進行功能建模,轉化成開發人員能夠理解的一系列“邏輯模型”圖,即以圖形化的方法描繪資料在系統中的流動和處理的過程,這些圖都應該用規範的DFD描述。

二、原理

DFD設計過程就是將資料和處理進行逐層分解就形成了若干層次的DFDDFD分為頂層圖(只有一張)0層圖(也只有一張)、子圖、子子圖等等。

三、包含主要元素

即在DFD中包括哪些主要元素,資料流、加工、資料儲存、外部實體。

(1) 資料流:用單箭頭表示,如――>。是由一組固定成分的資料組成,表示資料的流向。資料流圖中描述的是資料流,而不是控制流。除了流向資料儲存或從資料儲存流出的資料不必命名外,每個資料流必須要有一個合適的名字,以反映該資料流的含義。

(2) 加工:用圓或橢圓表示,如〇。描述了輸入資料流到輸出資料之間的變換,也就是輸入資料流經過什麼處理後變成了輸出資料。每個加工都有一個名字和編號。編號能反映該加工位於分層的資料流圖的哪個層次和哪張圖中,能夠看出它是由哪個加工分解出來的子加工。

(3) 資料儲存:用雙槓(帶一邊開口,一邊閉合)表示, 又叫做檔案,資料儲存表示暫時儲存的資料。每個資料儲存都有一個名字。

(4) 外部實體:用實心長方形表示,如███。外部實體是存在於軟體系統之外的人員或組織,他指出資料所需要的發源地或系統所產生的資料的歸屬地。

四、設計方法

1.畫頂層資料流圖

即畫整個系統的輸入輸出(畫系統也可以將各子系統分開畫)

把整個系統視為一個大的加工(也只能含一個加工)然後根據資料系統從哪些外部實體接收資料流,以及系統傳送資料流到那些外部實體,就可以畫出輸入輸出圖。這張圖稱為頂層圖。

頂層圖的作用在於表明被開發系統的範圍以及它和周圍環境的資料交換關係。

2.0層資料流圖

即畫系統的內部。

把頂層圖的加工分解成若干個加工,並用資料流將這些加工連線起來,使得頂層圖的輸入資料經過若干加工處理後,變成頂層圖的輸出資料流。這張圖稱為0層圖。從一個加工畫出一張資料流圖的過程就是對加工的分解。

確定加工的方法:在資料流的組成或值發生變化的地方應該畫出一個加工,這個加工的功能就是實現這一變化,也可以根據系統的功能決定加工。

確定資料流的方法:

使用者把若干資料當作一個單位來處理(這些資料一起到達、一起處理)時,可以把這些資料看成一個數據流。

關於資料儲存:對於一些以後某個時間要使用的資料,可以組織成為一個數據儲存來表示。

3.畫加工的內部

把每個加工看作一個小系統,把加工的輸入輸出資料流看成小系統的輸入輸出流。於是可以象畫0層圖一樣畫出每個小系統的加工的DFD圖。

4.畫子加工的分解圖

對第三步分解出來的DFD圖中的每個加工,重複第三步的分解過程,直到圖中尚未分解的加工都是足夠簡單的(即不可再分解)。至此,得到了一套分層資料流圖。

5.對資料流圖和加工編號

對於一個軟體系統,其資料流圖可能有許多層,每一層又有許多張圖。為了區分不同的加工和不同的DFD子圖,應該對每張圖進行編號,以便於管理。

●頂層圖只有一張,圖中的加工也只有一個,所以不必為其編號。

0層圖只有一張,圖中的加工號分別是0.10.2、…,或者1 2

●子圖就是父圖中被分解的加工號。

●子圖中的加工號是由圖號、圓點和序號組成,如:1.121.3 等等。

五、其它事宜

1.命名。應適當的為資料流、加工、資料儲存以及外部實體命名,名字應該反映該成分的實際含義,避免使用空洞的名字。

2.畫資料流圖,不是畫控制流。資料流反映系統“做什麼”,不反映“如何做”,因此箭頭上的資料流名稱只能是名詞或名詞短語,整個圖中不反映加工的執行順序。

3.一個加工的輸出資料流,不應與輸入資料流同名,即使他們的組成完全相同。

4.允許一個加工有多條資料流流向另一個加工,也允許一個加工有兩條相同的輸出資料流流向不同的加工。

5.編號。如果一張資料流圖中的某個加工分解成另一張資料流圖時,則上層圖為父圖,直接下層圖為子圖。子圖及其所有的加工都應編號。

6.保持父圖與子圖的平衡。也就是說,父圖中的某加工的輸入輸出流必須與他的所有子圖的輸入輸出資料流在數量上和名字上相同。值得注意的是,如果父圖中的一個輸入(輸出)資料流對應於子圖中的幾個輸入(輸出)資料流,而子圖中組成這些資料流的資料項的全體正好是父圖中的這一個資料流,那麼他們仍然算是平衡的。

7.在自頂向下的分解過程中,若一個數據儲存首次出現時,只與一個加工有關係,那麼這個資料儲存應作為這個加工的內部檔案而不必畫出。

8.保持資料守恆,也就是,一個加工的所有輸出資料流中的資料必須能從該加工的輸入流中直接獲得,或者通過該加工能產生的資料。

9.每個加工必須既有輸入資料流,又有輸出資料流。

10.在整套資料流圖中,每個資料儲存必須既有讀的資料流,又有寫的資料流。但是在某張子圖中,可能只有讀沒有寫,或者只有寫沒有讀。

11.區域性資料儲存。當某層資料流圖中的資料儲存不是父圖中相應加工的外部介面,而只是本圖中某些加工之間的資料介面,則稱這些資料儲存為區域性資料儲存。

 12.提高資料流圖的易懂性。注意合理分解,要把一個加工分解成幾個功能相對獨立的子加工,這樣可以減少加工之間輸入、輸出資料流的數目,增加資料流圖的可理解性。

總結:DFD其實主要是對加工不斷分解的過程,在此過程中要重點注意父子圖以及資料、資料流的平衡。

其他相關資料及例項請參考: