設計一個穩健的資訊系統,不僅僅需要程式碼,更需要清楚理解資料如何在流程中流動。資料流程圖(DFD)即是這一流動的藍圖。它能視覺化外部實體、內部流程與資料儲存之間的資訊流動。本指南深入探討如何建立有效的DFD,確保你的系統分析具備結構性、邏輯性與可擴展性。
無論你是設計新應用程式,還是審核現有系統,資料流的原則始終不變。本指南涵蓋DFD的結構組成、層級、建立步驟與最佳實務,讓你無需依賴特定工具,也能建立專業級的圖示。重點始終放在方法論與視覺化背後的邏輯上。

資料流程圖是一種以圖形方式呈現資料在資訊系統中流動的表示法。與專注於控制邏輯與決策步驟的流程圖不同,DFD專注於資料本身。它回答以下問題:資料從哪裡來?它會被如何處理?它會去往何處?又會被儲存在哪裡?
DFD是結構化分析與設計方法論中不可或缺的一環。它幫助利害關係人視覺化系統的邊界,並識別遺漏的資料路徑或不必要的複雜性。透過將複雜系統分解為可管理的層級,分析師能確保每一筆資料都有明確的目的與去向。
要建立有效的DFD,必須理解圖中使用的四種基本符號。這些符號具有普遍性,無論使用何種符號風格(如Yourdon/DeMarco或Gane/Sarson),其意義都不會改變。掌握這些元件是準確建模的關鍵。
下表總結了這些元件之間的互動關係:
| 元件 | 功能 | 所需輸入 | 所需輸出 |
|---|---|---|---|
| 外部實體 | 啟動或接收資料 | 否 | 是(或接收端為否) |
| 流程 | 轉換資料 | 是 | 是 |
| 資料儲存 | 保留資料 | 是(寫入) | 是(讀取) |
| 資料流 | 傳輸資料 | 不適用 | 不適用 |
複雜系統無法以單一視圖描述。為了管理複雜性,DFD 會在不同細節層級上建立。這種技術稱為「分解」。您從高階概覽開始,逐步將流程分解為子流程,直到細節層級足以進行實作。
上下文圖是抽象層級最高的圖。它將整個系統顯示為單一流程,並呈現其與外部實體的互動。此圖確立了系統的邊界。它回答的問題是:「系統整體是什麼?」
在第 1 層圖中,上下文圖中的單一流程被分解為主要的子流程。這揭示了系統的內部結構,而不陷入過於細節的內容。它將主要功能區域與外部實體相連接。
第 2 層圖進一步分解第 1 層中的特定流程。此過程持續進行,直到流程簡單到足以讓開發人員或操作員理解為止。對於高度複雜的演算法或財務計算,可能需要第 3 層或第 4 層圖。
| 層級 | 焦點 | 複雜度 | 主要受眾 |
|---|---|---|---|
| 上下文圖 | 系統邊界 | 低(1 個流程) | 利害關係人、管理層 |
| 第 1 層 | 主要功能區域 | 中等(3–9 個流程) | 分析師、專案經理 |
| 第 2 層及以上 | 特定子流程 | 高(詳細邏輯) | 開發人員、程式設計師 |
建立資料流程圖(DFD)是一個有條理的過程。僅僅畫出形狀是不夠的;您必須遵循邏輯順序,以確保所有層級之間的資料完整性和一致性。
首先列出所有資料的來源與目的地。這些是與您的系統互動的使用者、其他系統或部門。避免在此處放置內部資料儲存;應將其分開處理。每個實體都應有明確的名稱,例如「客戶」、「管理員」或「付款網關」。如果存在多種類型的使用者,請避免使用「使用者」等模糊術語。
針對上下文圖,畫一個代表系統的單一圓圈,並以系統名稱標示。這將是您的參考點。確保所有進入或離開此圓圈的資料流都與步驟 1 中識別的實體相符。
畫出連接實體與流程的箭頭。為每個箭頭標示所傳輸的具體資料。不要只寫「資料」,而應寫出「訂單詳情」或「發票」等明確內容。這種明確性對後續開發階段至關重要。確保沒有箭頭在沒有明確連接點的情況下交叉。
為了建立第 1 層,將單一系統圓圈替換為多個流程。這些流程應代表主要功能,例如「驗證訂單」、「處理付款」和「更新庫存」。使用先前識別的資料流,將這些流程彼此之間以及與外部實體連接起來。
識別資料需要儲存的位置。如果資料需要用於後續流程或報表,則必須存入資料儲存。將資料儲存連接到寫入它的流程以及讀取它的流程。請記住,流程無法直接寫入另一個流程;若需持久化,必須透過儲存來進行。
檢查每個流程,確保輸入等於輸出。這就是資料守恆的原則。您無法憑空創造資料,也無法在沒有記錄的情況下刪除資料。如果一個流程有輸入但無輸出,則稱為「黑洞」;如果有輸出但無輸入,則稱為「奇蹟」。這兩者都是模型中的錯誤。
資料流程圖(DFD)是一種溝通工具。如果閱讀起來令人困惑,就達不到其主要目的。遵守嚴格的規範有助於在團隊之間維持清晰度。
即使經驗豐富的分析師也可能犯錯。及早識別這些常見錯誤,可大幅減少後續的重做工作。
人們常將資料流程圖與其他繪圖方法混淆。了解其差異可確保你使用正確的工具完成任務。
| 圖表類型 | 重點 | 最適合用途 |
|---|---|---|
| 資料流程圖 | 資訊流動 | 系統需求、處理邏輯 |
| 流程圖 | 控制邏輯、決策 | 演算法設計、逐步程序 |
| 實體關係圖 | 資料結構、關係 | 資料庫設計、結構定義 |
雖然流程圖顯示操作的順序(若 X,則 Y),但資料流程圖顯示資料轉換之間的依賴關係。資料流程圖不關心執行順序,只關注資訊流動。這使得資料流程圖非常適合在邏輯尚未確定前分析系統需求。
系統會演進,需求會改變,功能也會增加。專案初期建立的資料流程圖可能隨時間變得過時。隨著系統演進,維持圖表的更新至關重要。
建立資料流程圖是一項需要耐心與精確度的學問。它迫使你思考資料,而不僅僅是功能。透過遵循上述的結構化方法,可確保所產生的模型準確、易於維護,並在系統的整個生命週期中具有實用性。
請記住,目標不是立即創造出完美的圖像。而是要建立一個能引導開發團隊的地圖。從情境圖開始,驗證邊界,然後深入細節。隨著練習,分解過程將變得更加直覺,你的圖表將成為團隊間強大的溝通工具。
保持對資料的關注。確保每一個箭頭都有其目的,每一個流程都有轉換,每一個儲存位置都有存在的理由。這種有紀律的方法將帶來穩健、可擴展且符合業務需求的系統。