1. 程式人生 > >資料流圖概述與應用

資料流圖概述與應用

資料流圖(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)分析試題難度。