数据流图(DFD)概念及画法
轉載自:https://blog.csdn.net/xiaoxiang2017/article/details/81456317
數據流圖(Data Flow Diagram):簡稱DFD,它從數據傳遞和加工角度,以圖形方式來表達系統的邏輯功能、以圖形的方式描繪數據在系統中流動和處理的過程,由于它只反映系統必須完成的邏輯功能,所以它是一種功能模型。
數據流圖中沒有任何具體的物理元素,只是描繪信息在系統中流動和處理的情況。
不要將數據流圖(DFD)與系統流程圖、程序流程圖相混淆,數據流圖是從數據角度來描述一個系統,而框圖是從對數據進行加工的工作人員的角度來描述系統。
一、.基本圖形符號
? ? (1)數據源點或終點:系統外部環境中的實體(人員,組織或其他軟件系統),?統稱外部實體,表達該系統數據的外部來源和去向。
? ? ?(2)數據處理:(又稱加工)對數據進行某些操作或變換,每個處理需要被命名,通常動詞短語,簡明描述完成什么處理。在分層的數據流圖中還應編號。
? ? ?(3)數據存儲:(又稱為文件),指暫時保存的數據,它可以是數據庫文件或任何形式的數據組織,一般為表結構。
? ? ?(4)數據流。數據流是數據傳遞的路徑,因此由一組成分固定的數據組成,箭頭表示數據流向。由于數據流是流動中的數據,所以必須有流向,除了與數據存儲之間的數據流不用命名外,數據流應該用名詞或名詞短語命名。
二、命名方法
(1)為數據流(或數據存儲)命名
??? A.名字應該代表整個數據流(或數據存儲)的內容;
??? B.不要使用空洞的、缺乏具體含義的名字(如“數據”、“輸入”);
??? C.如果為某個數據流(或數據存儲)起名字時遇到困難,則很可能是因為對數據流圖的分解不恰當造成的,應該試試重新分解數據流圖;
(2)為處理命名
??? A.通常先為數據流命名,然后再為與之相關聯的處理命名;
??? B.名字應該反映整個處理的功能;
??? C.應該盡量避免空洞籠統的動詞做名字,如“處理”、“加工”;
??? D.通常用一個動詞命名,如果必須用兩個動詞才能描述整個處理的功能,則可能要把這個處理分解成兩個處理更恰當;
??? E.如果在為某個處理命名時遇到困難,則很可能是發現了分解不當的情況,應考慮重新分解。
(3)為數據源點/終點命名
通常,為“數據源點/終點”命名時,采用它們在問題域中習慣使用的名字(如“倉庫管理員”、“采購員”)。
三、.分層數據流圖
1 、數據流圖采用分層的形式來描述系統數據流向,每一層次都代表了系統數據流向的一個抽象水平,層次越高,數據流向越抽象。高層次的DFD圖中處理可以進一步分解為低層次、更詳細的DFD圖。
據層級數據流圖分為頂層數據流圖、中層數據流圖和底層數據流圖。除頂層數據流圖外,其他數據流圖從零開始編號。
? ? ? 頂層數據流圖只含有一個加工表示整個系統;輸出數據流和輸入數據流為系統的輸入數據和輸出數據,表明系統的范圍,以及與外部環境的數據交換關系。
? ? ?中層數據流圖是對父層數據流圖中某個加工進行細化,而它的某個加工也可以再次細化,形成子圖;中間層次的多少,一般視系統的復雜程度而定。
? ? ? 底層數據流圖是指其加工不能再分解的數據流圖,其加工稱為“原子加工”。
2、在單張數據流圖時,必須注意以下原則:
(1)一個加工的輸出數據流不應與輸入數據流同名,即使它們的組成成分相同。
(2)保持數據守恒。也就是說,一個加工所有輸出數據流中的數據必須能從該加工的輸入數據流中直接獲得,或者說是通過該加工能產生的數據。
(3)每個加工必須既有輸入數據流,又有輸出數據流。
(4)所有的數據流必須以一個外部實體開始,并以一個外部實體結束。
(5)外部實體之間不應該存在數據流
四、DFD畫法? ?(來自百度百科)
(1)確定系統的輸入輸出
由于系統究竟包括哪些功能可能一時難于弄清楚,可使范圍盡量大一些,把可能有的內容全部都包括進去。此時,應該向用戶了解“系統從外界接受什么數據”、“系統向外界送出什么數據”等信息,然后,根據用戶的答復畫出數據流圖的外圍。
(2)由外向里畫系統的頂層數據流圖
首先,將系統的輸入數據和輸出數據用一連串的加工連接起來。在數據流的值發生變化的地方就是一個加工。接著,給各個加工命名。然后,給加工之間的數據命名。最后,給文件命名。
(3)自頂向下逐層分解,繪出分層數據流圖
對于大型的系統,為了控制復雜性,便于理解,需要采用自頂向下逐層分解的方法進行,即用分層的方法將一個數據流圖分解成幾個數據流圖來分別表示
舉例說明:
舉例一:
下圖是一個飛機機票預訂系統的數據流圖,它反映的功能是:旅行社把預訂機票的旅客信息 (姓名、年齡、單位、身份證號碼、旅行時間、目的地等)輸入機票預訂系統。系統為旅客安排航班,打印出取票通知單(附有應交的賬款)。旅客在飛機起飛的前一天憑取票通知單交款取票,系統檢驗無誤,輸出機票給旅客。
?
(1)首先畫系統的輸入輸出,即先畫頂層數據流圖。頂層流圖只包含一個加工,用以表示被開發的系統,然后考慮該系統有哪些輸入數據、輸出數據流。頂層圖的作用在于表明被開發系統的范圍以及它和周圍環境的數據交換關系。圖3-3為飛機機票預訂系統的頂層圖。
(2)畫系統內部,即畫下層數據流圖。不再分解的加工稱為基本加工。一般將層號從0開始編號,采用自頂向下,由外向內的原則。畫0層數據流圖時,分解頂層流圖的系統為若干子系統,決定每個子系統間的數據接口和活動關系。例如,在上面的機票預訂系統按功能可分成兩部分,一部分為旅行社預訂機票,另一部分為旅客取票,兩部分通過機票文件的數據存儲聯系起來,圖3-4為0層數據流圖
(3)注意事項。
①命名。不論數據流、數據存儲還是加工,合適的命名使人們易于理解其含義。
②畫數據流而不是控制流。數據流反映系統“做什么”,不反映“如何做”,因此箭頭上的數據流名稱只能是名詞或名詞短語,整個圖中不反映加工的執行順序。
③一般不畫物質流。數據流反映能用計算機處理的數據,并不是實物,因此對目標系統的數據流圖一般不要畫物質流。
④每個加工至少有一個輸入數據流和一個輸出數據流,反映出此加工數據的來源與加工的結果。
⑤編號。如果一張數據流圖中的某個加工分解成另一張數據流圖時,則上層圖為父圖,直接下層圖為子圖。子圖及其所有的加工都應編號。
⑥父圖與子圖的平衡。子圖的輸入輸出數據流同父圖相應加工的輸入輸出數據流必須一致,此即父圖與子圖的平衡。
⑦局部數據存儲。當某層數據流圖中的數據存儲不是父圖中相應加工的外部接口,而只是本圖中某些加工之間的數據接口,則稱這些數據存儲為局部數據存儲。
⑧提高數據流圖的易懂性。注意合理分解,要把一個加工分解成幾個功能相對獨立的子加工,這樣可以減少加工之間輸入、輸出數據流的數目,增加數據流圖的可理解性
舉例二:
(1)接受顧客的訂單,檢驗訂單,若庫存有貨,進行供貨處理,即修改庫存,給倉庫開備貨單,并且將訂單留底;若庫存量不足,將缺貨訂單登入缺貨記錄。
(2)根據缺貨記錄進行缺貨統計,將缺貨通知單發給采購部門,以便采購。
(3)根據采購部門發來的進貨通知單處理進貨,即修改庫存,并從缺貨記錄中取出缺貨訂單進行供貨處理。
(4)根據留底的訂單進行銷售統計,打印統計表給經理
?
?
總結
以上是生活随笔為你收集整理的数据流图(DFD)概念及画法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 期货的技巧
- 下一篇: 企业安全建设之API网关kong的搭建