結構化分析工具之數據流圖


什么是數據流

數據流是一組數據。在數據流圖中數據流用帶箭頭的線表示,在其線旁標注數據流名。在數據流圖中應該描繪所有可能的數據流向,而不應該描繪出現某個數據流的條件。在數據流圖中加工用圓圈表示,在圓圈內寫上加工名。一個處理框可以代表一系列程序、單個程序或者程序的一個模塊。

什么是數據流圖?

數據流圖(Data Flow Diagram)簡稱:DFD,通過系統對數據“流”的圖形表示,是從數據傳遞和加工角度,顯示了系統輸入和輸出的信息,數據的流向以及最終存儲在哪里,能讓用戶更加直觀的明白系統的工作原理。

數據流圖是SA方法中用於表示邏輯系統模型的一種工具,它從數據傳遞和加工的角度,以圖形的方式來刻畫數據流從輸入到輸出的變換過程。它是一種圖形化的系統模型,它在一張圖中展示信息系統的主要需求,即輸入、輸出、處理(過程)、數據存儲。是結構化系統分析方法的主要表達工具及用於表示軟件模型的一種圖示方法。

 

數據流程圖包括:
a.指明數據存在的數據符號,這些數據符號也可指明該數據所使用的媒體;
b.指明對數據執行的處理的處理符號,這些符號也可指明該處理所用到的機器功能;
c.指明幾個處理和(或)數據媒體之間的數據流的流線符號;
d.便於讀、寫數據流程圖的特殊符號。
 
數據流圖是結構化系統分析和設計方法SSADM的三個基本視角之一。項目發起人和最終用戶需要在系統演進的各個階段得到簡要介紹和咨詢。通過數據流圖,用戶可以看到系統將如何運行,系統將完成什么以及如何實現系統。可以繪制舊系統的數據流圖,並與新系統的數據流圖進行比較,以便比較以實現更高效的系統。數據流圖可以用來為最終用戶提供一個物理的概念,即它們輸入的數據最終對整個系統的結構從訂單到發送到報告有影響。如何開發系統可以通過數據流圖模型來確定。

基本元素

由於從 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 的繪制是一個自頂向下、由外到里的過程,通常按照以下幾個步驟進行。
  1. 畫系統的輸入和輸出:就是在圖的邊緣標出系統的輸入、輸出數據流。這一步其實是決定研究的內容和系統的范圍。在畫的時候,可以先將盡可能多的輸入、輸出畫出來,然后再刪除多余的,增加遺漏的。
  2. 畫數據流圖的內部:將系統的輸入、輸出用一系列的處理連接起來,可以從輸入數據流畫向輸出數據流,也可以從中間畫出去。
  3. 為每一個數據流命名:命名的好壞與數據流圖的可理解性密切相關,應避免使用空洞的名字。
  4. 為加工命名:注意應該使用動賓短語。

不考慮初始化和終點,暫不考慮出錯路徑等細節,不畫控制流和控制信息。

繪制注意事項

在單張數據流圖時,必須注意以下原則:
1.一個加工的輸出數據流不應與輸入數據流同名,即使它們的組成成分相同。
2.保持數據守恆。也就是說,一個加工所有輸出數據流中的數據必須能從該加工的輸入數據流中直接獲得,或者說是通過該加工能產生的數據。
3.每個加工必須既有輸入數據流,又有輸出數據流。
4.所有的數據流必須以一個外部實體開始,並以一個外部實體結束。
5.外部實體之間不應該存在數據流


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM