資料流圖概述與應用
資料流圖(DFD)概述
資料流圖(DFD,Data Flow Diagram)是軟體工程結構化分析模型中的一種功能模型,用來描述系統中的資料處理過程。資料流圖服務於兩個目的:一是指明資料在系統中移動時如何被變換,二是描述對資料流進行變換的功能和子功能。
1. 資料流圖符號:
2. 一個簡單的例子:
設一個工廠採購部每天需要一張定貨報表。定貨的零件資料有:零件編號、名稱、數量、價格、供應者等。零件的入庫、出庫事務由倉庫管理員通過計算機終端輸入給定貨系統。當某零件的庫存數少於給定的庫存量臨界值時,就應該再次定貨。
資料流分析:
-
資料來源點:倉管員(負責入庫或出庫事務給定貨系統);
-
資料終點:採購員(接收每天的定貨報表);
-
資料流:事務,定貨報表;
-
資料儲存:定貨資訊,庫存清單;
求解這個問題就是不斷地把問題分解為較小的問題,直到每個底層問題都足夠簡單為止。
第一步:
畫出頂層(0層)資料流圖:
分解(1層):
繼續分解(底層):
就這樣隨著分解層次的增加,抽象級別越來越低,也就越來越接近我們想要的解。
3. 資料流圖的各個層次 :
-
頂層圖(第0層)只有代表整個軟體系統的1個加工,描述了軟體系統與外界之間的資料流
-
頂層圖中的加工經分解後的圖稱為第1層圖(只有1張)
-
中間層圖中至少有一個加工(也可以有多個)在下層圖中分解成一張子圖
-
處於最底層的圖稱為底層圖,其中所有的加工不再分解成新的子圖
4. 圖和加工的編號 :
-
頂層圖只有一個代表整個軟體系統的加工,該加工不必編號。
-
第1層圖中的加工編號分別為1,2,3,…
-
子圖號:若父圖中的加工號x分解成某一子圖,則該子圖號記為“圖x”
-
子圖中加工的編號:若父圖中的加工號為x的加工分解成某一子圖,則該子圖中的加工編號分別為x.1、x.2、x.3…
5. 分層資料流圖示例——資格和水平考試的考務處理系統 :
-
簡化的資格和水平考試的考務處理系統
-
分成多個級別,如初級程式設計師、程式設計師、高階程式設計師、系統分析員等,凡滿足一定條件的考生都可參加某一級別的考試
-
考試的合格標準將根據每年的考試成績由考試中心確定
-
考試的閱卷由閱卷站進行,因此,閱卷工作不包含在軟體系統中
5.1 功能需求:
1.對考生送來的報名單進行檢查
2.對合格的報名單編好准考證號後將准考證送給考生,並將彙總後的考生名單送給閱卷站
3.對閱卷站送來的成績清單進行檢查,並根據考試中心制訂的合格標準審定合格者
4.製作考生通知單送給考生
5.進行成績分類統計(按地區、年齡、文化程度、職業、考試級別等分類)和試題難度分析,產生統計分析表
5.2 解題過程:
資料流分析:
-
確定源點和終點:考生、閱卷站和考試中心,它們是源點也是終點。
-
頂層圖唯一的加工:軟體系統(考務處理系統)
-
確定資料流:系統的輸入/輸出資訊
-
輸入資料流:報名單(來自考生)、成績清單(來自閱卷站)、合格標準(來自考試中心)
-
輸出資料流:准考證(送往考生)、考生名單(送往閱卷站)、考生通知書(送往考生)、統計分析表(送往考試中心)
-
額外的輸出流(考慮系統的健壯性):不合格報名單(返回給考生),錯誤成績清單(返回給閱卷站)
頂層圖:
一層圖:
加工1子圖:
-
加工1:“考試報名”對應的功能需求:
-
對考生送來的報名單進行檢查。
-
對合格的報名單編好准考證號後將准考證送給考生,並將彙總後的考生名單送給閱卷站。
-
分解:
(1)檢查報名單:
(2)編准考證號:編准考證號並將准考證送給考生;
(3)登記考生:儲存考生資訊並將考生名單送給閱卷站。
加工2子圖:
-
加工2:“統計成績”對應的功能需求:
-
對閱卷站送來的成績清單進行檢查,並根據考試中心制訂的合格標準審定合格者。
-
製作考生通知單送給考生。
-
進行成績分類統計(按地區、年齡、文化程度、職業、考試級別等分類)和試題難度分析,產生統計分析表。
-
分解:
(1)檢查成績清單;
(2)審定合格者;
(3)製作考生通知單;
(4)分類統計成績;
(5)分析試題難度。