什么是數據流
什么是數據流圖?
數據流圖(Data Flow Diagram)簡稱:DFD,通過系統對數據“流”的圖形表示,是從數據傳遞和加工角度,顯示了系統輸入和輸出的信息,數據的流向以及最終存儲在哪里,能讓用戶更加直觀的明白系統的工作原理。
數據流圖是SA方法中用於表示邏輯系統模型的一種工具,它從數據傳遞和加工的角度,以圖形的方式來刻畫數據流從輸入到輸出的變換過程。它是一種圖形化的系統模型,它在一張圖中展示信息系統的主要需求,即輸入、輸出、處理(過程)、數據存儲。是結構化系統分析方法的主要表達工具及用於表示軟件模型的一種圖示方法。
基本元素
由於從 DFD 中可以很容易地看出系統緊密結合的各個部分,而且整個圖形模式只有 5 個符號需要記憶,所以深受分析人員的喜愛,因而廣為流行。DFD 中包括以下幾個基本元素:
- 數據流
符號:→
是由一組固定成分的數據組成,箭頭的方向表示數據的流向,箭頭的始點和終點分別代表數據流的源和目標。除了流向數據存儲或從數據存儲流出的數據不必命名外,每個數據流必須要有合適的名字,以反映數據流的含義。從一處到另一處的數據流向,如從輸入或輸出到一個過程的數據流。 - 加工
符號:○/O
又稱過程。一步步地執行指令,完成輸入到輸出的轉換。對數據進行加工處理。加工是對數據進行處理的單元,它接受一定的數據輸入,對其進行處理,並產生輸出。 - 外部實體
符號:□
也稱為源/宿,系統之外的數據源或目的。代表系統之外的實體,可以是人、物或其它系統軟件,他指出數據所需要的發源地或系統所產生的數據歸屬地。 - 數據存儲
符號:=
表示信息的靜態存儲,可以代表文件、文件的一部分、數據庫的元素等。 - 實時鏈接
符號:當過程執行時,外部實體與過程之間的來回通信。
數據流圖的結構
數據流圖有兩種典型結構:
- 變換型結構
它所描述的工作可表示為輸入、主處理和輸出,呈線性狀態。 - 事務型結構
這種數據流圖呈束狀,即一束數據流平行流入或流出,可能同時有幾個事務要求處理。
數據流圖的層次
結構化分析的思路是依賴於數據流圖進行自頂而下的分析。這也是因為系統通常比較復雜,很難在一張圖上將所有的數據流和加工描述清楚。因此,數據流圖提供一種表現系統高層和低層概念的機制。也就是先繪制一張較高層次的數據流圖,然后在此基礎上,對其中的過程(處理)進行分解,分解成為若干獨立的、低層次的、詳細的數據流圖,而且可以這樣逐一地分解下去,直至系統被清晰地描述出來。
數據流圖的層次如下圖所示:
Context 圖
Context 圖,也就是系統上下文范圍關系圖。這是描述系統最高層結構的 DFD 圖。它的特點是,將整個待開發的系統表示為一個過程,將所有的外部實體和進出系統的數據流都畫在一張圖中。
如下圖:
Context 圖用來描述系統有什么輸入、輸出數據流,與哪些外部實體直接相關,可以把整個系統的范圍勾畫出來。當完成了 Context 圖的建模之后,就可以在此基礎上進行進一步的分解。以上圖 為例,進行再分解,在對原有流程了解的基礎上,可以得到如下圖 所示的結果。
上圖 是在 Context 圖的基礎上做的第一次分解,而在 Context 圖中只有一個過程,那就是系統,將其編號為 0。而接下來對 Context 圖進行的分解,其實就是對這個編號為 0的過程進行更細化的描述,在這里引入了新的過程、數據存儲,為了能夠區分其位置的級別,在這層次上的過程將以 1、2、3 為序列進行編號。由於這是對過程 0 的分解,因此也稱之為 DFD 0 層圖。而可以根據需要對 DFD 0 層圖上的過程(編號為 1、2、3)進行類似的分解,那么就稱之為 DFD 1 層圖,在 DFD 1 層圖中引入的新過程,其編號規則就是 1.1,1.2...,以及 2.1,2.2...,以此類推,直到完成分析工作。另外,這里存在一個很關鍵的要點,那就是 DFD 0 層圖是 Context 圖的細化,因此所有的輸入和輸出應該與 Context 圖完全一致,否則就說明存在着錯誤。
如何畫 DFD
DFD 的繪制是一個自頂向下、由外到里的過程,通常按照以下幾個步驟進行。- 畫系統的輸入和輸出:就是在圖的邊緣標出系統的輸入、輸出數據流。這一步其實是決定研究的內容和系統的范圍。在畫的時候,可以先將盡可能多的輸入、輸出畫出來,然后再刪除多余的,增加遺漏的。
- 畫數據流圖的內部:將系統的輸入、輸出用一系列的處理連接起來,可以從輸入數據流畫向輸出數據流,也可以從中間畫出去。
- 為每一個數據流命名:命名的好壞與數據流圖的可理解性密切相關,應避免使用空洞的名字。
- 為加工命名:注意應該使用動賓短語。
不考慮初始化和終點,暫不考慮出錯路徑等細節,不畫控制流和控制信息。