什麼是數據流圖,為什麼它仍然對軟件開發有用?

數據流模型 是顯示系統如何處理數據的直觀方式。 在分析級別,它們應該用於對現有系統中處理數據的方式進行建模。

DeMarco 的《結構化系統分析》一書出版後 ,數據流模型在分析中的應用越來越廣泛。它們是從這項工作開發的結構化方法的固有部分。這些模型中使用的符號代表函數處理(圓角矩形)、數據存儲(矩形)和函數之間的數據移動​​(標記箭頭)。

為什麼 DFD 仍然對軟件開發有用?

儘管 面向數據流的建模 被一些軟件工程師認為是一種過時的技術,但它仍然是最廣泛使用的需求分析符號之一。儘管數據流圖 (DFD) 不是 UML 的正式部分,但它們可用於補充 UML 圖並提供對系統需求和流程的額外洞察。

數據流模型很有價值,因為跟踪和記錄與特定流程相關的數據如何在系統中移動有助於分析師了解正在發生的事情。數據流圖的優勢在於,與其他一些建模符號不同,它們簡單直觀。通常可以向可能參與需求分析和驗證的潛在系統用戶解釋它們。

為什麼選擇 DFD?

DFD 以圖形方式表示在系統及其環境之間以及系統組件之間捕獲、操作、存儲和分發數據的功能或過程。視覺表示使其成為用戶和系統設計師之間的良好溝通工具。DFD 的結構允許從廣泛的概述開始並將其擴展到詳細圖表的層次結構。由於以下原因,經常使用 DFD:

  • 系統邏輯信息流
  • 確定物理系統構建要求
  • 符號的簡單性
  • 建立手動和自動化系統要求

DFD 是一個自上而下的分解過程

數據流建模是一個“自上而下”的過程。首先分析整個採購流程。然後以自上而下的分解方式分析子過程。

DFD 可用於對任何抽象級別的系統或軟件進行建模。如前所述,DFD 可以分為代表不斷增加的信息流和功能細節的級別。DFD 中的級別數為 0、1、2 或更高。在這裡,我們將看到數據流圖中的三個主要級別,即 0 級 DFD、1 級 DFD 和 2 級 DFD。

DFD 自頂向下分解過程

上下文圖 – DFD 的級別

上下文圖(也稱為0級DFD),它將整個軟件需求表示為一個氣泡,輸入和輸出數據由輸入和輸出箭頭表示。

然後將該系統分解為具有多個氣泡的 DFD。然後將每個氣泡所代表的系統部分分解並記錄到越來越詳細的數據流圖中。這個過程可以在必要的層次上重複,直到手頭的程序被完全理解。

必須保持級別之間的輸入和輸出數量,這一概念稱為 DeMacro 調平。因此,如果氣泡“A”有兩個輸入 X1 和 X2 以及一個輸出 Y,那麼代表上層 DFD“A”的子級數據流圖應該正好有兩個外部輸入和一個外部輸出。

在 1 級 DFD 中,上下文圖被分解為多個流程。在這一層中,我們突出了系統的主要功能,並將 0 級 DFD 的高級流程進一步分解為子流程,以表示處理活動的細節。

上下文圖(0 級 DFD)  ——上下文圖 DFD 是表示系統概覽及其與“世界”其他部分交互的圖表。

1 級數據流圖 ——1 級 DFD 通過顯示構成整個系統的主要子流程和數據存儲,提供了比上下文圖更詳細的系統視圖。

2 級(或更低)  ——數據流建模技術的一個主要優勢是,現實世界系統的詳細複雜性可以通過一種稱為“分級”的技術在抽象級別進行管理和建模。任何數據流圖的某些元素都可以在層次結構的較低級別分解(“分解”)為更詳細的模型

DFD 級別 – 示例– 食品訂購系統

0級

它也被稱為 上下文圖。它被設計成一個抽象視圖,將系統顯示為單個進程及其與外部實體的關係。

  • 上下文圖必須適合一頁。
  • 上下文圖中的進程名稱應該是信息系統的名稱。
  • 例如,評分系統、訂單處理系統、註冊系統。
食品訂購系統 — 上下文圖 — 0 級 DFD

在 1 級 DFD 中,上下文圖被分解為多個流程。在這一層中,我們突出了系統的主要功能,並將 0 級 DFD 的高級流程進一步分解為子流程,以表示處理活動的細節。

級別 1 – 食品訂購系統

在 1 級 DFD 中,上下文圖被分解為多個流程。在這一層中,我們突出了系統的主要功能,並將 0 級 DFD 的高級流程進一步分解為子流程,以表示處理活動的細節。

1 級 DFD — 食品訂購系統示例

如果一個流程在幾個外部實體之間有大量數據流鏈接,我們可以先將該特定流程和關聯的外部實體提取到一個類似於上下文圖的單獨圖表中,然後再將流程細化為單獨的 DFD 級別;通過這種方式,您可以更輕鬆地確保它們之間的一致性。

DFD 符號

有 四個基本符號 用於表示數據流圖。

過程

一個進程接收輸入數據並產生具有不同內容或形式的輸出。流程可以簡單到收集輸入數據並保存在數據庫中,也可以復雜到生成包含西北地區所有零售店月銷售額的報告。

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

該名稱由一個動詞組成,後跟一個單數名詞。

例子:

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

DFD 表示法

  • 圓角矩形代表一個進程
  • 進程被賦予 ID 以便於引用

流程示例

數據流

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

例子:

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

數據流示例:

符號

  • 帶有傳入箭頭的直線是輸入數據流
  • 帶外向箭頭的直線是輸出數據流

注意:

因為每個進程都將數據從一種形式更改為另一種形式,所以每個進程符號必須至少有一個數據流進入,一個數據流必須退出。

數據存儲

數據流圖中使用數據存儲或數據存儲庫來表示系統必須保留數據的情況,因為一個或多個進程需要在以後使用存儲的數據。

符號

  • 可以將數據寫入數據存儲區,由外向箭頭表示
  • 可以從數據存儲中讀取數據,數據存儲由傳入箭頭表示。
  • 例如:庫存、應收賬款、訂單和每日付款。

數據存儲示例

注意:

  • 數據存儲必須通過數據流連接到流程。
  • 每個數據存儲必須具有至少一個輸入數據流和至少一個輸出數據流(即使輸出數據流是控製或確認消息)。

外部實體

外部實體是向系統提供數據或從系統接收輸出的個人、部門、外部組織或其他信息系統。外部實體是信息系統邊界之外的組件。它們代表了信息系統如何與外部世界交互。

  • 一個矩形代表一個外部實體
  • 他們要么提供數據,要么接收數據
  • 他們不處理數據

符號

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

外部實體示例

注意:

  • 外部實體也被稱為終結者,因為它們是數據源或最終目的地。
  • 外部實體必須通過數據流連接到流程。

數據流規則

開發 DFD 的規則之一是所有流程都必須以處理步驟開始和結束。這是非常合乎邏輯的,因為數據不能隨著處理而自行轉換。通過使用拇指規則,可以很容易地識別非法數據流並在 DFD 中糾正它們。

錯誤/正確描述

一個實體不能在沒有進行某些處理的情況下向另一個實體提供數據。

數據不能在未經處理的情況下直接從實體移動到數據故事。

未經處理的數據不能直接從數據存儲中移動。

數據不能在未經處理的情況下直接從一個數據存儲移動到另一個數據存儲。

DFD 中的其他常見錯誤

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

  • 黑洞——一個處理步驟可能有輸入流但沒有輸出流。
  • 奇蹟——一個處理步驟可能有輸出流但沒有輸入流。
  • 灰洞——一個處理步驟的輸出可能大於其輸入的總和

免費的 UML 工具

DFD 不同表示法

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。