理解資訊如何在系統中流動,對成功至關重要。無論您是在定義新平台的需求,還是審核現有工作流程,將資料流動可視化,能幫助所有人保持一致。資料流程圖(DFD)正是為此目的而設計的強大工具。它能清楚地呈現資料如何進入系統、如何變更,以及最終去向何處。對非技術利益相關者而言,學習閱讀與解讀這些圖表,能消除軟體開發與業務流程分析中的神秘感。
本指南將解析資料流程圖的核心組成部分、符號與邏輯。我們將探討全球通用的標準符號、不同細節層級的呈現方式,以及如何辨識常見錯誤。閱讀完本文件後,您將能自信地審查圖表、提出正確問題,並確保您的業務流程獲得準確呈現。

🧩 什麼是資料流程圖?
資料流程圖是資訊系統中資料流動的圖形化呈現。與流程圖不同,流程圖顯示控制流或決策順序,而 DFD 則專注於資料的移動。它不涉及時間、迴圈或傳統程式設計中的條件邏輯。相反地,它回答三個基本問題:
- 資料來自哪裡?(外部來源)
- 資料會發生什麼變化?(處理程序)
- 資料會去哪裡?(目的地或儲存位置)
將 DFD 想像成資料的地圖。就像道路地圖顯示高速公路與出口,而不會呈現每一棵樹或每一棟建築物,DFD 也只呈現資訊的主要路徑,而不陷入程式碼細節。這種抽象化正是它對業務利益相關者如此有效的原因——他們需要理解資訊的「內容」與「去向」,而非技術實作的「方式」。
🛑 DFD 符號的四個核心元素
無論您遇到哪種特定的符號風格,所有 DFD 都依賴四個基本形狀或概念。理解這些基本構成元素,是解讀任何圖表含義的關鍵。
1. 外部實體(來源或目的地) 👤
外部實體代表位於您所建模系統邊界之外的人、組織或系統。它是資料的起點或最終接收者。在圖表中,這些通常以矩形或正方形表示。
- 範例: 一位顧客下訂單。
- 範例: 薪資系統接收薪資資料。
- 範例: 監管機構要求提交報告。
需要注意的是,圖表並未顯示實體內部的運作。它僅呈現與系統的互動。若資料來自使用者,則使用者即為實體;若資料來自銀行 API,則銀行即為實體。
2. 處理程序(動作) ⚙️
處理程序代表將輸入資料轉換為輸出資料的動作。這正是「工作」發生的地方。在 DFD 中,處理程序通常以圓角矩形或圓形表示,視符號風格而定。每個處理程序至少必須有一個輸入與一個輸出。
- 範例: 計算訂單總金額。
- 範例: 驗證登入憑證。
- 範例: 產生發票 PDF 檔案。
處理程序的命名應使用動詞加名詞(例如「計算稅額」,而非僅「稅額」)。這能確保動作明確。處理程序不能單純存在;它必須以某種方式改變資料。
3. 資料儲存(記憶體) 🗃️
資料儲存區代表資訊被儲存以供後續檢索的位置。它不是伺服器上的實體資料庫,而是儲存的邏輯表示。在圖表中,這些看起來像開口的矩形或平行線。
- 範例: 包含客戶記錄的檔案。
- 範例: 儲存庫存水準的資料庫表格。
- 範例: 用於錯誤追蹤的暫時記錄檔。
資料儲存區是被動的。它們不會自行改變資料;它們等待流程寫入或讀取資料。區分資料儲存區(永久或半永久)與資料流(移動)至關重要。
4. 資料流(移動) 🔄
資料流顯示資料在實體、流程與儲存區之間的移動。這些以箭頭表示。箭頭指示資料的方向。箭頭上的標籤說明正在移動的具體資料。
- 範例: 一個標示為「客戶訂單」的箭頭,從實體移動到流程。
- 範例: 一個標示為「更新後的庫存」的箭頭,從流程移動到資料儲存區。
資料流應明確命名。避免使用「資料」或「資訊」等模糊標籤。應使用具體術語,如「信用卡詳情」或「寄送地址」。這種明確性可避免在審查會議中產生混淆。
📐 比較符號風格
業界中使用兩種主要的資料流程圖符號風格。雖然它們代表相同的概念,但形狀有所不同。了解差異有助於你解讀不同團隊或供應商所製作的文件。
| 元件 | Yourdon 與 DeMarco 符號 | Gane 與 Sarson 符號 |
|---|---|---|
| 流程 | 圓角矩形 | 圓角矩形 |
| 外部實體 | 矩形 | 矩形 |
| 資料儲存區 | 開口矩形 | 開口矩形 |
| 資料流 | 弧形箭頭 | 直線箭頭 |
兩種風格均有效。Gane 與 Sarson 風格在現代企業環境中通常更受青睞,因為矩形形狀與標準 UI 設計非常契合。然而,Yourdon 與 DeMarco 風格在傳統文檔中仍然廣泛使用。無論使用何種形狀,邏輯都保持不變。
🏗️ 資料流程圖中的細節層級
單一圖表無法呈現所有內容。為了管理複雜性,資料流程圖會以不同抽象層級建立。這種層級結構讓利害關係人可先看到整體概況,再依需求深入探討細節。
1. 上下文圖(第 0 層)🌍
上下文圖是最高層次的抽象。它將整個系統以中心的一個單一流程呈現,周圍環繞著外部實體。這裡不會顯示任何內部資料儲存或子流程。
- 目的: 定義系統的邊界。
- 使用情境: 在專案初期使用,以達成對系統內部與外部內容的共識。
- 視覺呈現: 一個圓形(系統)與外部矩形以箭頭相連。
對利害關係人而言,此圖回答了「這個系統為我們做什麼?」的問題。這是您所能獲得的最高層級視圖。
2. 第 1 層圖(功能分解)🔍
第 1 層圖將上下文圖中的單一流程擴展為主要子流程。它揭示了系統的主要功能區域。此處引入資料儲存,以顯示資訊在這些主要功能之間如何存放。
- 目的: 概述主要功能組件。
- 使用情境: 用於規劃架構並分配工作給不同團隊。
- 視覺呈現: 多個流程透過資料流與資料儲存相互連接。
在此階段,利害關係人可確認所有關鍵業務功能均已涵蓋。若某項主要業務需求在圖中缺少對應流程,則必須加以補充。
3. 第 2 層圖(詳細邏輯)🔬
第 2 層圖會將第 1 層中的特定流程進一步拆解。這些圖用於複雜計算或複雜的工作流程。除非正在調試特定功能,否則很少向非技術性利害關係人展示。
- 目的: 定義特定模組的詳細邏輯。
- 使用情境: 開發團隊參考與詳細測試計畫。
- 視覺呈現:高度細緻的流程與決策點。
利益相關者應主要關注上下文圖與第1級圖表。第2級圖表通常是技術性成果,雖能提供細節,但未必對高階審查具有業務價值。
🚦 如何有效閱讀資料流程圖
閱讀資料流程圖需要系統性的方法。不要只看形狀;應追蹤資料的流向。這能確保你理解資訊的生命周期。
步驟 1:識別邊界
觀察圖表,判斷系統內部與外部的內容。所有內部內容皆由系統控制,所有外部內容皆為外部影響。若發現本應在邊界內的流程卻位於外部,則為範圍問題。
步驟 2:追蹤輸入
找出外部實體。追隨進入系統的箭頭。問自己:「啟動此流程需要哪些資料?」若資料缺失,流程將無法運作。這有助於識別遺漏的需求。
步驟 3:追隨轉換
從一個流程移動到下一個流程。問自己:「資料是如何變化的?」若資料從流程 A 流向流程 B,則 A 的輸出成為 B 的輸入。若資料類型不匹配,則存在設計缺陷。
步驟 4:檢查儲存
定位資料儲存位置。問自己:「為什麼要儲存這些資料?」是否用於未來報表?是否用於回溯過去的交易?若某流程寫入儲存,但無其他流程讀取,則該儲存為多餘,僅增加成本。
步驟 5:驗證輸出
追隨離開系統的箭頭。它們是否抵達正確的外部實體?若系統產生報表,是否有途徑讓報表傳達給使用者?若圖表終止於死路,則系統不完整。
⚠️ 資料流程圖常見錯誤與異常
即使經驗豐富的建模者也會犯錯。作為利益相關者,了解這些常見錯誤,能讓你在審查時及時發現問題。提早發現這些問題,可大幅節省後續開發的時間與成本。
1. 黑洞
當一個流程有輸入資料卻無輸出資料時,就會出現黑洞。資料進入後消失,毫無反應。在真實系統中,這是一種錯誤。若使用者提交表單,系統必須儲存、拒絕或發送確認訊息,不能無故消失。
2. 奇蹟
奇蹟是黑洞的相反。它是一種有輸出資料卻無輸入資料的流程。資料從何而來?若系統產生每日報表,必須有輸入觸發或資料來源提供該報表。資料不能憑空產生。
3. 資料流直接在實體與儲存之間
資料必須透過流程才能到達資料儲存位置。你不能從使用者直接畫線到資料庫。必須有一個流程(例如「儲存記錄」)來處理交易。這確保在儲存前已執行驗證與邏輯。
4. 流程不平衡
當你從第0級圖表分解至第1級圖表時,輸入與輸出必須一致。若上下文圖顯示「訂單」進入,第1級圖表也必須顯示「訂單」進入。若其消失,則分解不平衡且不準確。
5. 環狀資料流
資料不應在未被處理的情況下形成環狀流動。若流程 A 將資料傳給流程 B,而流程 B 又將資料回傳給流程 A,中間未經資料儲存或外部變更,就會形成無限循環。這表示流程邏輯存在錯誤。
🤝 非技術型利益相關者的優勢
你為什麼要關心學習這種符號?其好處不僅僅是理解圖表,更能顯著提升你在專案中的角色。
更佳的需求收集
當你理解資料流程圖時,就能發現需求中的漏洞。若利益相關者表示:「我們需要追蹤使用者登入」,但圖表中卻無驗證流程,你可立即提出警告。你將從被動觀察者轉變為主動驗證者。
更清晰的溝通
文字可能具有歧義。「儲存資料」可能代表「儲存至檔案」或「儲存至資料庫」。資料流程圖能以視覺方式明確指出目的地。這能減少業務團隊與技術團隊之間的誤解。每個人都看著同一張地圖,並對目的地達成共識。
降低風險
在設計階段發現的錯誤修復成本較低。在程式碼完成後才發現的錯誤則成本高昂。在開發開始前審查資料流程圖,能及早發現邏輯缺陷。這可避免資源浪費在建構無法如預期運作的功能上。
範圍管理
資料流程圖能明確界定邊界,顯示系統內與系統外的內容。這有助於防止「範圍蔓延」。若利益相關者提出的新功能落在已定義的實體與流程之外,資料流程圖能提供視覺證據來管理此請求。
🔧 維護資料流程圖的最佳實務
圖表只有在準確時才具有價值。隨著時間推移,系統會變更,圖表也可能變得過時。保持圖表的即時性對長期成功至關重要。
- 版本控制:將資料流程圖視為程式碼一樣對待。在發生重大變更時儲存版本,這樣才能追蹤系統隨時間的演變過程。
- 審查週期:安排定期審查圖表。不要等到危機發生才檢查。每季一次的審查能確保與當前業務需求保持一致。
- 利益相關者簽核:確保在程式碼開發開始前,關鍵利益相關者已簽核一級圖表。此正式協議可驗證模型是否符合業務期望。
- 清晰度優於完整性:不要試圖顯示資料儲存中的每一筆欄位。應著重於邏輯流程。過多細節會掩蓋圖表的主要目的。
- 命名一致性:在所有圖表中使用相同的術語。若在一個地方稱為「客戶」,在另一處稱為「客戶」,會造成混淆。應維持一份術語詞彙表。
📝 結論
資料流程圖不僅僅是技術圖繪;它們是溝通工具,能彌合業務目標與技術執行之間的差距。透過理解四個核心符號、辨識不同細節層級,並知道如何發現常見錯誤,您在管理系統專案時將獲得顯著優勢。
您不必是開發人員也能從這些圖表中獲益。您只需理解資訊的流動方式。這種知識讓您能提出更好的問題、挑戰假設,並確保最終產品真正符合業務需求。隨著系統變得越來越複雜,清晰且視覺化的文件需求變得更加關鍵。掌握資料流程圖符號的基礎,是邁向更清晰、更高效專案交付的重要一步。
請記住,目標不是圖繪的完美,而是理解的清晰。運用這些圖表促進對話、識別風險,並讓團隊對系統的願景達成共識。掌握資料流程圖符號的基礎後,您將能自信且精準地應對系統設計的複雜性。











