Data Flow Diagram (DFD) ,是資料流圖,最主要的概念就是在表示資料的流程,這個流程圖的表示符號只有 4 個,整體概念都非常簡單,甚至可以作為與交付對象(客戶)溝通的需求分析工具。
DFD 的核心理念是希望做到定義系統範圍跟邊界問題,如果系統規模很大,光一個 DFD 可能很難完全解釋得清楚,所以為了降低複雜性,會採用逐一分解來繪製,詳情可以參考 [1] 。
DFD 圖表的使用的符號目前由好幾種風格定義,最早是由 Tom DeMarco 提出部分結構,接著又定義出幾種風:
可以看看每個人的風格長怎樣 (圖自 [2]):
可以看到圖的內容基本上都差不多,元素也都一樣。
DFD 有 4 種符號表示,分別對照英文是:
這篇文章使用的符號是 Yourdon & DeMacro 的定義,並在下方的圖中,把每一個符號都使用過一次看看它們的用途。
對於一個基本的資料流圖,可以參考一個租借影片系統的範例:
這圖中,可以看到一個 Entity (顧客)、 Entity (影片供應商),有很多箭頭形容資料流與影片租借系統這個 Process (function) 的關係。
上面有提到,如果要建構一個很複雜的系統,要如何使用逐層分解這個概念來進行圖表設計?
逐層分解是把複雜系統分解的核心做法,每次分解都是一個 Level,用以下例子來看看這是什麼意思。
從圖中可以看到,要做一個訂單系統,在 Level 0 階段,定義了使用者可能會走完的流程,以及系統內部細節的所有流程 (可以包含 Level 1,但太細節的流程可以做在 Level 1)。 如果單看 Level 1 本身的視角,是只有 【2. 建立訂單資訊】 跟他的 Level 1 子項目,其他的都不會看見,這個 Level 就是要開始對每個功能詳細定義行為,細分下去。
這個做法就是逐層分解的原理。
再次 Recall 一下, Level 0 是指完整的所有系統樣貌,比方說,我們目前有一個影片租借系統,它的完整架構是:
在這個圖表中,可以看到特別備標註 DB 的方塊,就是指 Data Store (資料儲存) 的圖表區塊。 特別關注 【2. 租借影片】 這個部分,可以再做成一個更細的流程,了解 【2. 租借影片】 的內部流程是什麼,像是下圖把每一個功能再開成細節,下圖就是 Level 1 的圖了。
個人認為 DFD 適合用在建立現場討論、與交付對象(e.g: 客戶)討論時、或是對外會議文件用的圖片,主要是因為圖表元素非常簡單,易於學習,如果要開白板畫畫,立刻就可以動手進行,甚至非專業人員不需要太多 DFD 基本知識,只要專業人員了解如何引導 DFD 逐層分解,對項目拉出資料流給交付對象確認就行。
References:
[1] https://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E6%B5%81%E7%A8%8B%E5%9C%96
[2] https://online.visual-paradigm.com/knowledge/software-design/dfd-using-yourdon-and-demarco/
[3] https://cacoo.com/ja/blog/what-is-dfd/