數據流程圖是比較通用的軟體建模模型,它可用於需求分析階段和系統設計階段的建模。數據流程圖被很多程式設計師使用,是因為它簡單易懂,從事項目的開發人員只要通過查看流程圖就能明白系統緊密結合的各個部分。數據流程圖很容易被人理解是因為它只有幾個圖形符號,人們只需稍微的學習就可以讀懂和理解數據流程圖。數據流程圖的主要圖形符號見下表。
表格 1 數據流程圖主要圖形符號
下圖是數據流程圖的一個例子,表示人脈系統的一部分。圖中的方形框表示外部實體,即用戶,它是在系統外數據的來源和目的。圓角矩形是名為「查詢名片」的流程,流程定義了轉換輸入到輸出的規則,該流程的輸入是查詢詞,輸出是名片列表。帶箭頭的線是數據流,該流程的用戶和查詢名片流程之間有兩條數據流,一條叫「查詢詞」的輸入數據流,一條叫「名片列表」的輸出數據流。三邊矩形表示數據存儲,每一個數據存儲代表一個文件或資料庫中的一個表,它用來存儲一個數據實體的信息。在這個例子中,數據流從數據存儲指向流程表示流程從名為「名片數據」的存儲中查詢信息。
剛才描述的例子顯示了系統響應用戶查詢名片的事件過程,流程內的細節我們並不清楚。在系統架構設計階段,可以使用一個高層的數據流程圖模型,模型不需要描述較低層次的細節。但到了詳細設計階段,就需要展開高層設計,並描述流程內的細節。這是就可以把高層的數據流程圖分解成若干獨立的、低層次的、詳細的數據流程圖。
為了分解上面例子的數據流程圖,我們可以把上面的例子作為0層圖,然後分解查詢名片流程,繪製查詢名片的數據流程圖,並把該流程圖作為1層圖。如果在0層圖有多個流程,就要繪製多個1層圖,分別對應0層圖中的不同的流程。層次分解可以依次進行,分別對應2層圖、3層圖等等。下圖是上面例子的1層圖,該數據流程圖分解了上面例子的查詢名片流程。
在查詢名片0層數據流程圖中,查詢名片流程的細節我們並不了解,但我們可以從1層圖中獲取這些細節。外部實體用戶通過查詢窗口流程輸入查詢詞,查詢窗口流程輸出查詢表單,查詢表單輸入到表單處理流程,表單處理流程將查詢表單轉換為SQL查詢語句,SQL查詢流程使用SQL查詢語句從名片資料庫中獲取符合查詢條件的名片列表,並對獲取的名片列表進行處理轉換為名片展示列表,名片展示列表輸入到顯示窗口流程,顯示窗口將輸入的數據轉換為HTML內容展現給用戶。
數據流程圖可以應用在項目的需求分析和設計階段的建模,需求分析階段的建模主要是圍繞已識別的事件,對事件中發生的數據流做出描述。設計階段的高層設計和詳細設計都會用到數據流程圖,高層設計主要是從系統的架構方面描述系統的數據流向,詳細設計主要是描述每個流程的數據流向。