數據流圖(Data Flow Diagram,DFD),從數據傳遞和加工的角度,以圖形的方式刻畫系統內數據的運動情況。它可以用少數幾種符號綜合地反映出信息在系統中的流動、處理和存儲的情況。
數據流圖具有抽象性和概括性:抽象性表現在它完全舍去了具體的物質,只剩下數據的流動、加工處理和存儲;概括性表現在它可以把信息中的各種不同業務處理過程聯系起來,形成一個整體。
(1)數據流圖的基本成分:外部實體、數據流、數據存儲和處理邏輯。
①外部實體:外部實體指不受系統控制,在系統以外又與系統有聯系的事物或人,它表達了目標系統數據的外部來源或去處。例如,顧客、職工、供貨單位,等等。外部實體也可以是另外一個信息系統。
為了區分不同的外部實體,可以在正方形的左上角用一個字符表示。在數據流圖中,為了減少線條的交叉,同一個外部實體在一張數據流圖中可以出現多次,這時在該外部實體符號的右下角畫斜線,表示重復。若重復的外部實體有多個,則相同的外部實體畫數目相同的斜線。
②數據流:數據流表示數據的流動方向,用一個水平箭頭或垂直箭頭表示。數據流可以是訂單、發票等。數據流一般不會是單純的數據,而是由一些數據項組成。例如“發票”數據流有品名、規格、單位、單價、數量等數據項組成。
對數據流的描述寫在箭頭的上方,一些含義十分明確的數據流,也可以不加以說明。
③數據存儲:數據存儲表示數據保存的地方(不是物理介質,是邏輯描述)。
數據存儲用一個右邊開口的長方形條來表示,圖形右部填寫存儲的數據和數據集的名字。左邊填寫該數據存儲的標識,用字母D和數字組成。同一數據存儲可在一張數據流圖中出現多次,這時在數據存儲符號上畫豎線,表示重復。指向數據存儲的箭頭,表示送數據到數據存儲(存放、改寫等);從數據存儲發出的箭頭,表示從數據存儲讀取數據。
④處理邏輯(加工):處理邏輯指對數據的邏輯處理功能,也就是對數據的變換功能。它包括兩方面內容:一是改變數據結構;二是在原有數據內容基礎上增加新的內容,形成新的數據。
在數據流圖中,處理邏輯可以用一個帶圓角的長方形來表示,長方形分為三個部分。
標識部分用來標明一個功能,一般用字符串表示,如P1,P1.1等。功能描述部分是必不可少的,它直接表達這個處理邏輯的邏輯功能。一般用一個動詞加一個名詞表示。
功能執行部分表示這個功能由誰來完成,可以是一個人,也可以是一個部門,甚至可以是某個計算機程序。
(2)數據流圖的繪制。
①確定外部項。一張數據流圖表示某個子系統或某個系統的邏輯模型。外部項就是那些不受所描述的系統的控制,但又影響系統運行的外部環境,也是系統的數據輸入的來源和輸出的去處。
②自頂向下逐層擴展。信息系統龐大而復雜,數據的加工可能成百上千,自頂向下的原則為繪制數據流圖提供了一條清晰的思路和標准化的步驟。
③合理布局。一般把系統數據主要來源的外部項盡量安排在左方,而要把數據主要去處的外部項盡量安排在右邊。數據流的箭頭線盡量避免交叉或過長,必要時可用重復的外部項和重復的數據存儲符號。
④數據流圖只反映數據流向、數據加工和邏輯意義上的數據存儲,不反映任何數據處理的技術過程、處理方式和時間順序,也不反映各部分相互聯系的判斷與控制條件等技術問題。只從系統邏輯功能上討論問題。
⑤數據流圖繪制過程,就是系統的邏輯模型的形成過程。必須與用戶及其他系統建設者共同商討以求一致意見。
( 3 )數據流圖的改進。
①檢查數據流圖的正確性。
a.數據是否守恆,即輸入數據與輸出數據是否匹配。數據不守恆的情況有兩種。一種是某個處理過程產生輸出數據,但沒有輸入數據給該處理過程,這肯定是某些數據流被遺漏了。另一種是有輸入數據給處理過程,但沒有輸出數據,這種不一定是錯誤,但要認真推敲是否可去掉以簡化邏輯。
b.數據存儲的使用是否恰當。在一套數據流圖中的任何一個數據存儲,必定有流入的數據流和流出的數據流,即寫文件和讀文件,缺少任何一種都意味着遺漏了某些處理邏輯。
c.父圖和子圖是否平衡。父圖中某一處理框的輸入、輸出數據流必須出現在相應的子圖中,否則就會出現父圖與子圖的不平衡。尤其是在對子圖進行修改時,必須仔細檢查其父圖是否要做相應的修改,以保證數據流的平衡。父圖與子圖的關系,類似於全國地圖與各省地圖的關系。
d.任何一個數據流至少要有一端是處理框。換句話說,數據流不能從外部實體直接到數據存儲,也不能從數據存儲直接到外部實體,也不能在外部實體之間或數據存儲之間流動。(數據流是處理功能的輸入輸出)
②提高數據流圖的易理解性
簡化處理間的聯系、保持分解的均勻性、適當命名。
重新分解的步驟:
a.把需要重新分解的數據流圖的所有子圖拼接成一張圖。
b.把新拼接成的圖分成幾個部分,使各部分之間的聯系最少。
c.重新建立父圖,即把b步驟所得的每一部分畫成一個處理框。
d.重新建立各張子圖,這只需要把b步驟所得的圖沿各個部分邊界分開即可。
e.為所有處理重新命名和編號。