
資料流程圖(DFD)在系統分析與設計中扮演著基石角色。它以視覺化方式呈現資訊如何在系統中流動,強調外部實體、內部流程、資料儲存與連接它們的資料流之間的互動。雖然概念簡單,但這些圖表的細節層級會因所需詳細程度而有顯著差異。在此層級結構中,兩個最重要的階段是第0級與第1級DFD。理解這兩個層級之間的差異,對需要在不陷入不必要的複雜性中傳達系統邏輯的架構師、分析師與利害關係人而言至關重要。
本指南探討第0級與第1級圖表的結構差異、使用情境與最佳實務。我們將檢視如何從高階的上下文視圖過渡到詳細的功能分解,確保系統文件的清晰與精確。
🧭 什麼是第0級資料流程圖?
第0級DFD,通常稱為情境圖,將系統呈現為單一、封閉的流程。這是DFD層級結構中的最高抽象層級。此階段的主要目標是定義系統的邊界,並展示系統如何與外部世界互動。
主要特徵
- 單一流程節點: 整個系統以一個圓形或圓角矩形表示,通常標示系統名稱。
- 外部實體: 這些是位於系統邊界之外的資料來源或目的地。範例包括使用者、其他系統或法規機構。
- 資料流: 箭頭表示外部實體與系統之間的資料輸入與輸出。
- 無內部細節: 圖中未顯示資料儲存、子流程或內部資料移動。
此圖表回答的問題是:「系統做什麼,與誰互動?」 它通常是在需求收集階段最先產生的成果。在深入探討系統機制之前,為利害關係人提供對專案範圍的共同理解。
第0級的視覺結構
想像頁面中央有一個大圓圈,標示為「訂單處理系統」。此圓圈周圍是代表外部實體的矩形,例如「客戶」、「倉儲」與「付款網關」。線條將這些矩形連接到中央圓圈,並標示所交換的資料,例如「訂單請求」或「付款確認」。這種簡潔性確保非技術背景的利害關係人能迅速理解系統的目的。
⚙️ 什麼是第1級資料流程圖?
第1級DFD透過將第0級中的單一系統流程分解為主要子流程,進一步擴展了第0級圖表。它揭示了系統的內部邏輯,但不深入細節。此層級在高階情境與詳細設計規格之間架起橋樑。
主要特徵
- 流程分解: 第0級的單一流程被分解為5到9個主要子流程。此數量僅為保持可讀性的參考指引。
- 內部資料儲存: 此層級引入資料存放的儲存庫,例如資料庫、檔案或佇列。
- 細化的資料流: 箭頭現在顯示資料如何在子流程與資料儲存之間移動。
- 輸入/輸出平衡 第0層流程的輸入和輸出必須與第1層子流程的總輸入和總輸出相匹配。
此圖表回答了以下問題:「系統是如何實現其功能的?」 對於需要理解資訊流以建立基礎架構的開發人員和系統架構師而言,這一點至關重要。
第1層的視覺結構
以先前的例子為基礎,「訂單處理系統」的圓圈被一組較小的圓圈所取代。其中一個可能是「驗證訂單」,另一個是「更新庫存」,第三個是「生成發票」。這些圓圈透過箭頭相互連接,顯示資料在它們之間的流動。此外,還可能出現一個圓柱形狀,代表「客戶資料庫」或「訂單日誌」。這種結構使團隊能夠看見依賴關係和資料保留需求。
🆚 比較:第0層 vs 第1層
為了釐清兩者的差異,我們可以從多個維度來比較這兩個層級。此表格突顯了結構與功能上的差異。
| 特徵 | 第0層(上下文圖) | 第1層(功能分解) |
|---|---|---|
| 細節程度 | 系統整體視圖(黑箱) | 主要功能模組(灰箱) |
| 流程數量 | 僅1個 | 5至9個主要子流程 |
| 資料儲存 | 未顯示任何項目 | 明確包含 |
| 目標對象 | 利害關係人、管理層、使用者 | 開發人員、系統架構師、分析師 |
| 主要目標 | 定義系統邊界 | 定義內部邏輯與流程 |
| 複雜度 | 低 | 中等 |
🔄 平衡的概念
從第 0 級移動到第 1 級時的一項關鍵規則是平衡。進入和離開第 0 級流程的輸入與輸出,必須與進入和離開第 1 級子流程的輸入與輸出總和完全相同。這確保了在分解過程中不會產生或消滅任何資料。
例如,如果第 0 級顯示「客戶資料」作為進入系統的輸入,第 1 級必須顯示「客戶資料」流入至少一個子流程。如果第 0 級顯示「收據」作為離開系統的輸出,第 1 級必須顯示某個子流程產生「收據」資料。未能維持此平衡,表示分析中存在錯誤或設計中遺漏了某個元件。
🛠 設計的最佳實務
建立有效的資料流程圖(DFD)需要紀律並遵守特定的規範。遵循這些指南有助於保持清晰度,並避免混淆。
1. 命名規範
流程應使用動詞-名詞結構命名(例如「計算稅額」而非「稅額」)。資料流應使用表示內容的名詞短語命名(例如「發票細節」而非「發票」)。外部實體應明確命名,以反映提供資料的參與者或系統。
2. 避免線路交叉
圖形佈局應盡量減少資料流線的交叉。交叉的線條會造成視覺雜訊,使資訊傳遞路徑難以追蹤。若無法避免交叉,應確保交叉點明顯且標示清楚。
3. 資料儲存的一致性
確保資料儲存的標籤在各張圖表中保持一致。第 1 級中命名為「客戶資料庫」的資料庫,不應在第 2 級中更名為「使用者表格」。一致性有助於在不同層級之間進行導航與理解。
4. 限制子流程數量
雖然第 1 級應具備足夠細節,但不應過於詳盡。若單一子流程包含過多邏輯,可能需要進一步拆解為第 2 級。然而,第 1 級通常應保持在可管理的範圍內,以避免讓讀者感到負擔。
📈 每一層級的使用時機
選擇適當的層級取決於專案階段與目標對象。
第 0 級適用於:
- 專案啟動: 早期建立範圍與邊界。
- 高階主管摘要: 為非技術背景的主管提供高階概覽。
- 介面定義: 明確指出系統與外部系統的連接點。
第 1 級適用於:
- 系統設計: 指導開發團隊掌握內部邏輯。
- 整合規劃: 用以識別資料儲存與內部資料流的位置。
- 測試策略: 依據流程路徑與資料轉換來定義測試案例。
🔍 常見挑戰與解決方案
創建這些圖表通常會帶來特定的挑戰。了解這些問題有助於產生準確的成果。
問題:遺漏的資料儲存
分析師有時會忘記在第1級圖表中包含資料儲存,假設資料會直接在流程之間流動。然而,大多數系統都需要持久性。請確保識別出資料在交易之間儲存的位置。
問題:幽靈資料流
幽靈資料流是指指向無處或起源於無處的箭頭。每個箭頭都必須從一個來源(流程、實體或儲存)開始,並結束於一個目的地。請檢查您的圖表,確保所有線條都正確地固定。
問題:過度複雜
試圖在第1級中顯示每一個步驟,可能會導致圖表混亂。如果第1級圖表變得無法閱讀,請考慮將系統拆分成邏輯子系統,並為每個子系統建立獨立的第1級圖表,而不是只使用一個龐大的圖表。
🔗 轉向更高層級
一旦第1級圖表完成,它便成為第2級圖表的父圖。第1級中的每個子流程都可以進一步分解。這種遞迴過程持續進行,直到流程簡單到足以直接以程式碼或設定實現為止。第1級圖表是關鍵步驟,確保在深入探討特定演算法或資料庫結構細節之前,分解策略是穩妥的。
📝 差異總結
第0級與第1級資料流程圖在系統分析中扮演著明確但互補的角色。第0級定義了系統的邊界及其與外部環境的關係。第1級則揭開面紗,揭示主要的功能組件與內部資料處理。它們共同構成了一種分層視圖,支援戰略規劃與戰術執行。
透過遵循平衡、命名一致性和適當細節層次的原則,團隊可以利用這些圖表減少歧義、統一期望,並建立穩健的系統。無論您是在記錄遺留應用程式,還是設計新架構,掌握這兩個層級的差異都能確保清晰的溝通與有效的系統建模。











