資料流程圖(DFD)仍然是系統分析與設計的基石。它提供了系統內資訊流動的視覺化表示,突出顯示資料如何進入、通過流程並離開系統。對系統分析師而言,掌握清晰、準確圖表的製作不僅是一項技術技能,更是一種溝通上的必要條件。本指南概述了確保您的DFD能有效達成目的的關鍵最佳實踐。

資料流程圖是一種結構化建模技術,用於視覺化展示資料在系統中的流動。與專注於控制流和決策邏輯的流程圖不同,DFD專注於資料本身。它回答以下問題:資料來自哪裡?它會發生什麼變化?最終會去往何處?
在建立DFD時,目標是抽象化複雜性。您是在描繪業務邏輯,而不必陷入程式碼、資料庫結構或特定硬體等實作細節。這種抽象化使利益相關者能夠在無需技術專業知識的情況下理解系統。
無論使用哪種特定方法論(例如Yourdon & DeMarco或Gane & Sarson),所有DFD都依賴於一組標準符號。理解這些元件是掌握最佳實踐的第一步。
| 元件 | 符號形狀 | 功能 |
|---|---|---|
| 處理程序 | 圓形或圓角矩形 | 將輸入資料轉換為輸出資料。 |
| 外部實體 | 矩形 | 系統外部資料的來源或目的地。 |
| 資料儲存 | 開口矩形 | 用於後續使用的資料儲存(檔案、資料庫)。 |
| 資料流 | 箭頭 | 顯示資料在組件之間的流動。 |
複雜系統無法在單一視圖中呈現。DFD具有層次結構。將其分解為不同層級,可實現逐步細化。
這是最高層級的視圖。它將整個系統表示為單一處理過程。它顯示系統邊界以及系統與外部實體的互動方式。它不顯示內部處理過程或資料儲存。
此圖將上下文圖中的單一處理過程分解為主要的子過程。它引入資料儲存,並顯示資料在主要功能區域之間的流動方式。
這些圖表進一步深入探討第0層中的特定處理過程。它們用於詳細設計與實作指導。
| 層級 | 細節 | 主要受眾 |
|---|---|---|
| 上下文 | 高階 | 管理層、利害關係人 |
| 第0層 | 功能 | 專案經理、架構師 |
| 第1層及以上 | 詳細 | 開發人員、測試人員 |
為了建立穩健且可維護的資料流程圖,請遵循這些結構與邏輯規則。
標籤至關重要。讀者應能在不需圖例的情況下理解圖表。模糊不清會導致開發錯誤。
資料守恆是一項基本規則。進入一個流程的資料必須等於離開該流程的資料,即使經過轉換也不應遺失。你不應有從無中創造資料(魔法)的流程,或在沒有記錄的情況下刪除資料(除非明確設計)。
一個常見的錯誤是將決策邏輯混入資料流中。DFD 展示的是資料如何移動,而非決策如何做出。如果需要決策,應在獨立的規格說明或決策表中記錄,而非以菱形符號標示在 DFD 上。
資料必須流入和流出資料儲存。一個流程不能單獨存在於真空之中。
視覺清晰度至關重要。一張看起來像一盤意大利麵的圖表毫無用處。
即使經驗豐富的分析師也會犯錯。了解常見陷阱有助於你維持高品質。
一個有輸入但無輸出的流程。這意味著數據被消耗卻未產生任何結果。在一個正常運作的系統中,這在邏輯上是不可能的,除非數據被丟棄,而這必須明確標示。
一個有輸出但無輸入的流程。這暗示數據憑空出現。每個輸出都必須有其來源。
外部實體不應在未經過系統的情況下直接將數據傳遞給彼此。如果實體A將數據給實體B,數據必須先進入系統,經過處理,然後再離開。
如果你將一個流動稱為「使用者資料」在上下文圖中,就不要稱它為「客戶資訊」在0級圖中。一致性確保可追溯性。
不要在0級圖中詳細列出每一個步驟。應保持在功能層級。如果你正在列出每一個按鈕點擊,你其實是在建立UI線框圖,而不是資料流程圖。
DFD 不是在孤立情況下創建的。它們必須與業務需求保持一致。
DFD 是一份活文件。系統上線後,圖表仍應持續維護。
為確保您的 DFD 專業且實用,請在設計會議期間隨時攜帶此檢查清單。
區分 DFD 與其他建模技術非常重要,以避免混淆。
使用正確的工具完成正確的工作,可防止模型疲勞,並確保每個圖表在文件套件中發揮獨特的作用。
建立資料流程圖需要在技術準確性與商業溝通之間取得平衡。透過遵循既定的最佳實務,可確保您的圖表不僅是繪圖,更是系統成功的功能性藍圖。專注於清晰性、一致性和驗證。當利益相關者看到您的圖表並說:「是的,這正是我們的工作方式」時,您就達到了目標。
請記住,圖表只是一種手段,而非最終目的。其價值在於所產生的理解,以及在程式碼撰寫之前幫助避免的錯誤。優先考慮資料流的邏輯,維持嚴格的命名規範,並保持層級結構的邏輯性。秉持這些實務,您的系統分析將變得穩健、清晰且有效。