數據流圖 (DFDS) 表示通過系統的信息流。DFD 很快成為一種流行的方式來可視化軟件系統過程中涉及的主要步驟和數據。
數據流圖 (DFD) 是表示流程或系統(通常是信息系統)的數據流的一種方式,例如:
- 數據從何而來?
- 它去哪兒了?
- 它是如何存儲的?
換句話說,它顯示了系統如何使用自上而下的分解技術(或稱為逐步細化)在輸入和輸出方面處理數據。
什麼是逐步細化?
解決複雜問題的有效方法之一是將其分解為更簡單的子問題。您首先將整個任務分解為更簡單的部分。
逐步細化本質上是對系統進行分解,以深入了解構成系統的子系統,稱為自頂向下分解法。
例如,系統概述被開發為 系統上下文圖 ,它指定但不指定子系統的任何級別。然後將這些子系統中的每一個細化到更詳細的程度(例如 DFD 中的級別 0、1、2 等),有時在許多其他子系統級別上進行細化,直到整個規範簡化為基本元素。
通常,頭腦風暴產生的想法(實際上是我們的待辦事項)處於不同的“細節”級別——其中一些比其他“低級”,或者,我們可以說,一些包含其他。
讓我們按層次排列這些。換句話說,讓我們確定哪些步驟是另一個步驟的一部分。一種方法是將每個動作視為一組動作。
逐步細化示例
收拾屋子
{真空餐廳,整理客廳}
廚師
{選擇食譜,購買食材,烤雞。做蔬菜}
設置表
{找桌布 , 拿出盤子 , 拿出玻璃器皿 , 拿出銀器 , 餐巾}
烤雞
{烤箱預熱至 400 度, 將雞肉放入鍋中,將雞肉放入 400 度烤箱中 90 分鐘}
做素食
{切菜,煮菜}
(*來源: 自上而下的設計和逐步細化——維基書籍)
一旦確定了這些基本元素,我們就可以將它們構建到計算機模塊中。一旦它們建成,我們就可以將它們組合在一起,並用這些單獨的組件組成整個系統。
DFD中的自頂向下分解技術
在 DFD 中, 自上而下的分解 (也稱為分級或逐步細化)是一種用於在較低級別的 DFD 中顯示更多細節的技術。調平是通過繪製一系列越來越詳細的圖表來完成的,直到達到所需的詳細程度。如圖所示,DFD Leveling 首先將目標系統顯示為單個進程,然後顯示更多細節,直到所有進程都是功能原語。
- 更高級別的 DFD 不太詳細
- 高層 DFD 將被分解為更詳細的低層 DFD
- 上下文圖是層次結構中最高的(請參閱 DFD 創建規則)。所謂的零級後面是DFD 0,從進程編號開始(EG,進程1,進程2)。
- 接下來,所謂的第一層——DFD 1——繼續編號。EG Process 1分為DFD的前三個層次,分別編號為1.1、1.2和1.3。
- 同樣,第二級 (DFD 2) 中的流程編號為 EG 1.1.1、1.1.2、1.1.3 和 1.1.4。
- 級別的數量取決於模型系統的大小。級別 0 中的每個過程可能沒有相同數量的分解級別。
DFD 示例 — 客戶服務系統示例
數據流圖是一個層次結構圖,包括:
- 上下文圖(概念上為零級)
- 1 級 DFD
- 以及可能的 2 級 DFD 和更多級別的功能分解,具體取決於系統的複雜性
上下文 DFD
下圖顯示了為鐵路公司的客戶服務系統繪製的上下文數據流圖。它包含一個過程(形狀),表示要建模的系統,在本例中為“ CS 系統”。它還顯示了將與系統交互的參與者,稱為外部實體。在此示例中, CS 助手 和 乘客 是與系統交互的兩個實體。在流程和外部實體之間,存在數據流(連接器),表明實體和系統之間存在信息交換。
上下文 DFD 是數據流模型的入口。它包含一個且只有一個進程,並且不顯示任何數據存儲。
1級DFD
下圖顯示了1級DFD,它是上下文DFD中顯示的CS System流程的分解(即分解)。通讀該圖,然後我們將根據該圖介紹一些關鍵概念。
CS 系統數據流圖示例包含四個進程、兩個外部實體和四個數據存儲。雖然沒有設計指南來管理數據流圖中形狀的位置,但我們傾向於將流程放在中間,將數據存儲和外部實體放在兩側,以便更容易理解。
由圖可知, Passenger 可以 從 Inquiry Transport Details流程中接收到Transport 詳細信息 ,詳細信息由數據存儲 Transport Details 和 Railway Live Statistic提供。雖然存儲在 運輸詳細信息 中的數據是持久數據(由標籤“D”表示),但存儲在 鐵路實時統計 中的數據是短暫保存的數據(由標籤“T”表示)。標註形狀用於列出乘客可以查詢的詳細信息類型。
CS Assistant 可以啟動 購買紀念品 流程,這將導致將 訂單詳細信息 存儲在 訂單 數據存儲中。雖然客戶是購買紀念品的真實人,但 訪問系統以存儲訂單詳細信息的是CS助手。因此,我們將數據從 CS Assistant 流向 Buy Souvenir 流程。
CS Assistant還可以 通過提供 訂單詳細信息 來啟動 購買票流程,詳細 信息將再次存儲在 訂單 數據存儲中。數據流圖是一種高度抽象的高級圖。這裡繪製的數據存儲Order並不一定意味著真實的訂單數據庫或數據庫中的訂單表。訂單詳細信息的物理存儲方式將在稍後實施系統時決定。
最後, CS Assistant可以 通過提供 事件和物品詳細信息 來啟動 報告丟失流程, 並且信息將存儲在 丟失物品 數據庫中。