資料流程圖(DFD)是系統分析與設計中的基本工具。它提供了一種視覺化方式,用以呈現資訊如何在系統中流動。理解DFD的深度對於確保需求被準確捕捉至關重要。本指南探討了從高階的上下文圖逐步下探至詳細的第1層圖的過程。我們將不依賴特定軟體工具,探討分解、資料守恆與結構完整性等原則。

DFD並非平面文件;它們存在於層級結構中。這種結構使分析師能從不同細節層次觀察系統。每一層都為流程與資料流增加更多明確性。
從上下文圖轉向第1層圖,通常是新手分析師面臨最具挑戰性的步驟。這需要在清晰度與細節之間取得平衡。若圖示過於抽象,則缺乏可執行的資訊;若過於細膩,則會變得雜亂,失去整體視野。
上下文圖是整個DFD套件的基石。它定義了被研究系統的邊界。圓圈內的所有內容均屬於系統的一部分;圓圈外的所有內容則為外部。
建立邊界至關重要。若實體位於當前專案範圍之外,則為外部實體。例如,在薪資系統中,稅務機關可能是外部實體,但財務部門則為內部實體。錯誤識別邊界將導致範圍蔓延與混淆。
分解是將複雜流程拆分成較小、更易管理的子流程的過程。這是建立第1級圖表的核心機制。這不僅僅是分割任務,更在於揭示系統的內部邏輯。
從第0級移動到第1級時,必須遵循若干規則以維持邏輯一致性。
其中最重要的技術要求之一是資料流平衡。進入第0級流程的資料必須等於進入第1級流程的資料總和。同樣地,離開第0級流程的資料也必須等於離開第1級流程的資料總和。
如果上下文圖顯示「訂單表單」進入系統,則第1級圖表必須顯示同一個「訂單表單」進入某個子流程。如果第1級圖表顯示「客戶編號」在內部傳遞,則它在第0級圖表中不能是外部輸入或輸出,除非該編號已在第0級中出現。
一旦分解計畫準備就緒,實際建構便開始。這包括識別系統的主要功能區域。
觀察上下文圖中的單一流程。問:為實現系統目的,需要哪些主要活動?這些活動將成為第1級圖表中的氣泡或圓圈。
以箭頭連接各流程。這些箭頭代表內部流程之間的資料移動。你也可以繪製箭頭,將外部實體與這些新子流程連接。
雖然上下文圖會排除它們,但一級圖經常包含資料儲存。資料儲存是資料靜止存放的地方。它可以是資料庫、檔案,或實體的檔案櫃。
繪製資料儲存時:
即使經驗豐富的分析師在建立資料流程圖時也會遇到錯誤。及早識別這些模式可節省驗證期間的時間。
黑洞是一種具有輸入但無輸出的流程。這表示資料被消耗卻未產生任何結果。在功能系統中,每個輸入都必須產生某種形式的輸出或資料儲存。
奇蹟是一種具有輸出但無輸入的流程。這表示資料是從無中產生的。每個輸出都必須源自某種輸入資料。
資料流程圖追蹤資料流程,而非控制流程。控制流程代表啟動或停止流程的訊號(例如:「按下開始按鈕」)。如果你看到一個看似控制訊號的流程,它很可能實際上是資料(例如:「開始請求」)。資料流程圖不會明確處理時間或邏輯控制。
當一級圖的輸入與上下文圖的輸入不一致時就會發生此情況。繪製完一級圖後,務必驗證資料的守恆性。
下表總結了各層級之間的差異,以協助理解何時應使用哪一層級。
| 特徵 | 上下文圖(第 0 層) | 一級圖 |
|---|---|---|
| 中心流程 | 單一流程 | 多個子流程 |
| 資料儲存 | 無 | 是,包含 |
| 細節層級 | 高階總結 | 功能分解 |
| 外部實體 | 所有主要實體 | 子集或相同實體 |
| 主要目的 | 定義系統範圍 | 定義內部邏輯 |
完成初步草圖後,必須對圖表進行驗證。這不是一次性的檢查,而是一個反覆審查與優化的循環。
當你深入 DFD 結構時,將面臨細節層級的決策。應該深入到什麼程度?
並無通用法則,但存在一般性指導原則:
資料儲存可能使視覺流程變得複雜。請確保它們放置得合乎邏輯。不要畫一條線穿過流程。如果線必須穿過流程,請使用連接點或節點符號來表示這是經過而非互動。
區分系統內的參與者與系統外的參與者。如果人工操作員是系統工作流程的一部分(例如,一名職員輸入資料),他們可能是內部參與者,但通常會被視為外部實體,因為他們位於軟體邊界之外。此定義的一致性至關重要。
圖表僅是故事的一部分。需要文字描述來解釋邏輯。
成功從上下文圖轉向一級圖,需要採取嚴謹的方法。這並非多畫幾個方框,而是要揭示系統的真實面貌。
透過遵循這些結構化步驟,您將建立系統設計的穩固基礎。一級圖表成為開發人員的藍圖,也是業務利害關係人之間的溝通工具。它彌補了抽象需求與具體實現之間的差距。