1. 程式人生 > 其它 >資料流圖規則及分解

資料流圖規則及分解

轉自:https://www.visual-paradigm.com/cn/guide/data-flow-diagram/what-is-data-flow-diagram/

資料流圖 (DFD) 用於表示業務資訊系統中的資料流,它表達了系統中的據傳從輸入到儲存間所涉及的程式。

資料流圖可以分為邏輯形和物理形。邏輯資料流圖描述了用以完成某業務功能所涉及的、業務層面的資料流動, 物理資料流圖則描述系統層面的資料流動。

為什麼繪畫資料流圖?

資料流圖以將用以尋找、編輯、儲存和分發資料的功能或過程影象化,方便使用者和系統設計人員溝通。資料流圖的結構也容讓開發人員從高點分析系統,繼而生成一系列用以深入分析的圖表。資料流圖被廣泛應用,原因如下:

  • 用於表達系統的邏輯資訊流
  • 用於尋找系統需求
  • 簡單、以理解的圖形符號
  • 建立手動和自動系統需求

資料流圖的符號

資料流圖有四個基本符號。

程式

一個程式負責接收輸入的資料,併產生具有不同內容或形式的輸出。程式可以簡單如將收集的資料儲存在資料庫,也或者複雜如將資料加以分析並生成報表。

每個程式都有一個名稱來標識它所執行的功能。

名字由一個動片語成,後跟一個單數名詞。

例子:

  • 申請付款
  • 計算佣金
  • 驗證訂單

符號

  • 圓角矩形
  • 為了便於參考,程式都被賦予 ID

程式示例

資料流

資料流是資料從資訊系統的一個部分移動到另一個部分的路徑。資料流可以表示單個數據元素,例如客戶 ID,或者一組資料元素 (或資料結構)。

例子:

  • Customer_info (姓氏,名字,SS#,電話號碼等)
  • Order_info (OrderId,Item#,OrderDate,CustomerID 等)。

資料流示例

符號

  • 帶輸入箭頭的直線即為輸入資料流
  • 帶輸出箭頭的直線即為輸出資料流

注意:

由於每個程式都將資料從一種形態轉換為另一種形態,故每個程式必須至少有一個輸入資料流和一個輸出資料流。

一些資料流的規則

資料流圖的一大原則是資料不能自行轉換成另一形態,資料必須經由某程式的處理才可被分發至系統的某個部份。通過這條規則,我們可以非常容易地識別出錯誤的畫法並加以糾正。

錯誤 正確畫法 原因
沒有經由程式處理,故實體不能將資料傳送至另一個實體。
資料不能直接從實體移動到資料儲存而沒有事先經由程式處理。
資料不能直接從資料儲存移動至實體而沒有事先經由程式處理。
資料不能直接從一個數據儲存移動到另一個數據儲存而沒有事先經由程式處理。

其他常犯的錯誤

當一個程式步驟的輸出與其輸入不匹配時,會出現第二類錯誤,它們可以分類為:

  • 黑洞 - 程式步驟可能有輸入流,但沒有輸出流。
  • 奇蹟 - 一個程式步驟可能有輸出流,但沒有輸入流。
  • 灰孔 - 程式步驟的輸出可能大於其輸入的總和

資料儲存

當系統必須保留資料以讓一個或多個程式使用或儲存資料,便可以資料儲存來表達。

符號

  • 將資料寫入資料儲存,資料流連結線以外出箭頭表示。
  • 從資料儲存中讀取資料,資料流連結線以輸入箭頭表示。
  • 一些資料儲存的例子:庫存,應收賬款,訂單和每日付款。

資料儲存示例

注意:

  • 資料儲存必須以資料流連線到程式。
  • 每個資料儲存必須至少有一個輸入資料流和至少一個輸出資料流(即使輸出資料流是一個確認訊息)。

外部實體

外部實體是向系統提供資料或從系統接收輸出的人、部門、外部組織或其他資訊系統。外部實體是資訊系統邊界之外的元件,它們代表了資訊系統如何與外界互動。

  • 矩形
  • 只提供或接收資料
  • 不處理資料

符號

  • 客戶提交訂單,然後從系統收到賬單
  • 供應商發出發票

外部實體示例

注意:

  • 外部實體也被稱為終止符,因為它們是資料的源頭或目的地。
  • 必須通過資料流將外部實體連線到程式。

高至低分解 (Top-Down Decomposition)

高至低分解用於展示更多細節。透過平整,我們將繪製出多張資料流圖,一張比一張詳細,直到達到所需的細節層次為止。如下圖所示,我們會​​先在最高層次的資料流圖中將目標系統表達成單個程式,然後將程式分解成更多層的資料流圖,以表達更多細節,直到所有程式都是功能性程式為止。

資料流圖之間的一致性

當對資料流圖進行高至低分解時,輸入和輸出資料流必須在資料流圖之間儲存一致。例如,級別n&n + 1必須具有相同的輸入和輸出。

資料流圖指南

背景圖 - 第 0 階

  • 背景圖須容於一個頁面中 (不能過大)。
  • 背景圖中的程式名稱須為資訊系統的名稱。
    • 一些例子:分級系統,訂單處理系統,註冊系統。
  • 背景圖又被稱為第 0 階圖。

使用獨特的名稱

  • 別重覆使用相同的名稱表達不同的概念。
    • 例如,在不同層次的資料流圖中只能有一個實體 CUSTOMER。

資料流圖沒有交叉線

  • 達到此目的的一種方法是嚴格控制資料流圖中的程式數。

人類只能同時處理 7 + / - 2 個符號

  • 在具有多個程式的較低階的資料流圖中,也不應該有多於九個程式。
  • 避免交叉線的另一種方法是複製外部實體或資料儲存。使用特殊符號(如星號)表示重複的符號。

編號習慣

  • 為每個程式符號使用一個唯一的參考號碼。
  • 其他程式號碼在以下層次中:
    • (1, 2, 3,...);
    • (1.1, 1.2, 1.3, ..., 2.1, 2.2, 2.3,...);
    • (1.1.1, 1.1.2, 1.1.3,...).

背景圖

背景圖用於表達一個系統的概覽,它是資料流圖中的最高級別,只包含一個代表整個系統的程式。這程式會被分解成更多細節的主要程式,每個主要程式可能會進一步分解以提供更多細節。

  • 背景圖顯示了所有的外部實體,以及來自它們的主要資料流。
  • 該圖不包含任何資料儲存。
  • 背景圖的單個程式可以被分解為下一級圖中的主要程式,其被稱為第 0 階資料流圖。

第 1 階資料流圖

第 0 階資料流圖中的程式 (具有整數)可以進一步分解以表示程式的細節。下面的例子顯示了程式被分解成下一個階級(第 1 階)。

注意:

雖然下面的第 1 階資料流圖只有三個程式 ,但是這些程式涉及不少資料的輸入和輸出,繼而導致交叉線的出現。為避免這個情況,我們可以在資料流圖中使用多重視角,讓同一元件重覆出現在圖中的不同位置。

第 2 階資料流圖

如果一個程式跟大量外部實體存在資料的輸入和輸出,我們可以首先將該程式和相關的外部實體提取到單獨的資料流圖,然後再將該程序細化到單獨的資料流圖級別,通過這種方式可以更容易確保它們之間的一致性。

邏輯與物理資料流圖

資料流圖被分類為邏輯形或物理形。邏輯資料流圖主要表達了業務和業務運作,它不關心繫統將如何構建。我們可以忽略實現細節,如計算機配置、資料儲存技術、信或訊息傳遞方法,而集中表達系統所執行的功能,如資料收集、資料跟資訊的轉換和資訊報告。

物理資料流程圖顯示系統將如何被建設起來,包括系統中的硬體、軟體、檔案和人員。它使邏輯資料流圖中描述的程式正確地實現以達到業務目標。

邏輯資料流圖的好處

  • 邏輯資料流圖主要呈現業務資訊,該圖以業務活動為中心,故有助於與使用者間的交流和溝通。
  • 邏輯資料流圖乃基於業務事件而繪製,並且獨立於特定的技術或物理佈局,這讓系統更加穩定。
  • 邏輯資料流圖讓分析師更瞭解正在研究的業務,並確定決策背後的原因。
  • 基於邏輯資料流圖而實現的系統更容易維護,因為業務功能不會經常發生變化。
  • 很多時候,邏輯資料流圖不包含檔案或資料庫以外的資料儲存,這比物理資料流圖更易於繪製。
  • 通過修改邏輯資料流圖可以很容易地產生物理資料流圖。

物理資料流圖的好處

  • 釐清哪些程式是手動的,哪些流程是自動的:手動程式需要詳細的文件,而自動化流程則需要開發計算機程式。
  • 比邏輯資料流圖更詳細地描述過程:描述處理資料的所有步驟。
  • 排序過程必須按照特定順序完成:描述導致有意義結果的活動順序。例如,必須在生成摘要報告之前執行更新。
  • 識別臨時資料儲存:描述臨時儲存,例如在雜貨店中用於顧客收據(報告)的銷售交易檔案。
  • 指定檔案和列印輸出的實際名稱:邏輯資料流圖描述了實際的檔名和報告,以便程式設計師在系統的開發階段將它們與資料字典 (Data Dictionary) 聯絡起來。
  • 新增控制元件以確保過程正確完成。

精煉邏輯資料流圖成物理資料流圖

以下示例顯示了一家雜貨店收銀員的邏輯資料流圖和物理資料流圖:

  • 客戶將ITEMS帶到登錄檔中;
  • 所有專案的價格均已預訂,然後合計;
  • 接下來,付款最終交給收銀員,客戶收到收據。

邏輯資料流圖示例 - 雜貨店

邏輯資料流圖說明了所涉及的過程,而沒有詳細描述活動的物理實現。

物理資料流圖示例 - 雜貨店

  • 物理資料流圖顯示條形碼 - 使用大部分雜貨店商品上找到的 UPC PRICE 程式碼
  • 此外,物理資料流圖提到手動處理,如掃描,並表達了臨時檔案被應用於儲存專案的小計
  • 付款可以通過CASH,CHECK或者DEBIT CARD進行
  • 最後,它用上收款人的名字:現金註冊收據