初學者用的資料流程圖符號

Infographic in stamp and washi tape craft style explaining the four core Data Flow Diagram symbols for beginners: External Entity rectangle for data sources, Process circle for data transformation, Data Store open rectangle for data at rest, and Data Flow arrow for data movement, plus hierarchical DFD levels for system analysis and documentation

理解資訊如何在系統中流動,是系統分析與設計的基礎。資料流程圖(DFD)提供了這種流動的視覺化表示。與專注於程式碼或資料庫結構的技術藍圖不同,DFD專注於資料的流動以及轉換資料的處理程序。本指南詳細說明構建這些圖表所使用的關鍵符號,確保您的文件清晰且精確。

什麼是資料流程圖? 🤔

資料流程圖是一種結構化分析工具。它描繪資訊處理活動的順序。它不會以程式碼邏輯來描述系統。相反,它說明了資料的移動方式、來源、去向以及變化方式。這種抽象使利害關係人能夠理解功能需求,而不必陷入技術實現細節。

DFD具有層級結構。它從高階概覽開始,逐步分解為更詳細的視圖。這種分解有助於管理複雜性。透過定義邊界與互動,分析人員可在開發開始前識別需求缺口或潛在瓶頸。

四個核心符號 🛠️

標準的DFD符號依賴於四種主要形狀。雖然不同方法論(例如Yourdon/DeMarco或Gane/Sarson)之間存在差異,但核心概念保持一致。每個符號代表系統邊界內的特定功能。

符號名稱 視覺呈現 功能
外部實體 矩形 資料的來源或目的地
處理程序 圓形或圓角矩形 資料的轉換
資料儲存 開放矩形 靜態資料的儲存
資料流 箭頭 資料的移動

1. 外部實體 📦

外部實體代表位於所建模系統外部的資料來源或目的地。它們是與系統互動的參與者,但並非系統內部邏輯的一部分。實體可以是個人、團體、另一個電腦系統或部門。

實體通常以矩形繪製。在某些符號系統中,也可能以橢圓形呈現。其關鍵特徵是系統會向其傳送資料或從其接收資料。例如,顧客就是一個實體。系統處理其訂單,但顧客的存在獨立於訂單處理軟體。

  • 輸入: 資料從實體進入系統。
  • 輸出: 資料離開系統並傳送到實體。

重要的是不要將外部實體與處理程序混淆。實體不會轉換資料;它僅僅產生或消耗資料。

2. 處理程序 🔄

處理程序是圖表中的主動元素。它們代表將輸入資料轉換為輸出資料的功能。處理程序即是正在執行的工作。它可以是計算、驗證檢查、決策,或資料操作程序。

處理程序通常以圓形或圓角矩形繪製。在形狀內部,放置描述動作的名稱,例如「計算總額」或「驗證登入」。每個處理程序必須至少有一個輸入和一個輸出。若只有資料流入而無資料流出,則該處理程序是不完整的。

處理程序會編號以表示層級關係。例如,「處理程序 1」可能被分解為「處理程序 1.1」、「處理程序 1.2」等。此編號方式有助於在不同圖表之間追蹤細節層級。

3. 數據存儲 📁

數據存儲代表數據被保存以供未來使用的場所。它們是資料庫。在物理系統中,這可能是一個資料庫表格、一個檔案,或一個實體文件櫃。在邏輯圖中,它僅僅是數據存放的位置。

常見的形狀包括開口的矩形或平行線。存儲內部的名稱應為複數形式,表示一組記錄,例如「客戶檔案」或「訂單日誌」。

  • 讀取: 一個流程從存儲中讀取數據以使用它。
  • 寫入: 一個流程將數據寫入存儲以保存它。

數據流會流入和流出存儲。必須注意的是,數據流在未經過流程的情況下不能直接交叉。你不能在兩個數據存儲之間畫一條直接的線;必須有一個流程位於中間,以說明數據為何移動。

4. 數據流 ➡️

數據流是連接符號的箭頭。它們代表數據在系統中的移動。與程式設計中的控制流不同,數據流代表實際的資訊封包。

每個箭頭都應標註通過它的數據名稱。例如,從客戶到流程的箭頭可能標註為「訂購請求」。從流程到數據存儲的箭頭可能標註為「新訂單記錄」。

箭頭必須具有單一方向。如果兩個點之間的數據雙向流動,應使用兩個獨立的箭頭。標籤必須一致使用單數或複數。避免使用模糊的標籤,如「數據」或「資訊」。應具體明確,例如「運送地址」或「庫存報表」。

理解DFD層級 📈

DFD以層級方式建立,以管理複雜性。這種方法稱為分解。

第0層:上下文圖

第0層圖是最高層級。它將整個系統顯示為單一流程。它強調系統與外部實體之間的關係。此視圖回答的問題是:「系統的邊界是什麼?」

在此圖中,僅有一個流程節點。所有數據流都直接連接到這個中心流程。此層級不顯示內部數據存儲,因為內部運作被隱藏。

第1層:主要流程

第1層圖將第0層的單一流程分解為其主要子流程。這使系統被拆分成可管理的模塊。你會看到多個流程節點、數據存儲,以及連接它們的具體數據流。

此層級定義了主要的功能區域。例如,一個電子商務系統可能被分解為「管理庫存」、「處理付款」和「處理運送」。每一項都代表一個主要流程。

第2層:詳細邏輯

第2層圖深入探討第1層的特定流程。如果第1層的流程較為複雜,則會為其建立獨立的圖。這使分析師能夠在不混亂整體視圖的情況下,詳細繪製特定功能的每一步驟。

在此階段,符號的細節更加豐富。你可能會看到多個數據存儲以及複雜的數據流路徑。這正是具體業務規則常被視覺化的地方。

規則與慣例 ✅

為保持清晰,DFD必須遵守嚴格的規則。違反這些規則可能導致混淆和誤解。

命名的一致性

同一個數據流在任何地方出現時都必須使用相同的名稱。如果在一個圖中將流標註為「使用者ID」,在另一個圖中就不能標註為「ID編號」。一致性有助於跨層級追蹤數據。

無黑洞或奇蹟

「黑洞」是指有輸入但無輸出的流程。這意味著數據消失,通常這是錯誤的。『奇蹟』是指有輸出但無輸入的流程。這意味著數據憑空出現。兩者都是圖中的邏輯錯誤。

數據存儲平衡

當你分解一個流程時,與父流程相連的數據存儲必須繼續與子流程保持連接。除非邏輯發生顯著變化,否則不能在較低層級刪除數據存儲。數據流必須在各層之間保持平衡。

箭頭方向

箭頭表示方向。不要不必要地畫出交叉的箭頭。交叉的線條會使圖難以閱讀。使用彎折或斷點來保持路徑清晰。如果兩個數據流交叉,請確保數據類型不同,以避免混淆。

DFD與流程圖 🧩

人們常將數據流圖(DFD)與流程圖混淆。雖然它們外觀相似,但用途不同。

流程圖描述操作的邏輯與順序。它顯示決策點(菱形)、迴圈以及步驟的確切順序。它是程序性的,回答的是「系統如何執行?」

DFD描述的是數據的移動。它不會明確顯示迴圈或決策邏輯。它專注於數據的「什麼」與「何處」。它回答的是「哪些數據被移動和轉換?」

使用DFD來表示控制邏輯是一種錯誤。它不應包含決策菱形。如果需要顯示邏輯,應在DFD旁使用決策表或結構化英文描述。這種關注點的分離能保持圖表的清晰。

實際應用 📝

建立圖表時,請從上下文圖開始。識別系統邊界。繪製外部實體。繪製代表系統的單一處理過程。繪製連接它們的資料流。

接下來,進入第1級。將中心處理過程分解為主要功能。識別資料儲存的位置。確保每個處理過程都有輸入和輸出。檢查資料流是否與上下文圖相符。

與利害關係人審查圖表。詢問資料流是否符合他們對業務的理解。如果利害關係人說:「我們不在這裡儲存那筆資料」,則調整資料儲存位置。如果他們說:「我們不會把資料傳給那個人員」,則調整實體。

驗證至關重要。若使用者無法理解的圖表毫無用處。它作為溝通工具,彌補技術團隊與業務擁有者之間的差距。

清晰度的最佳實務 🌟

保持單頁上的符號數量在可管理範圍內。若圖表過於擁擠,其價值將喪失。使用子圖表來拆分圖表。若系統過於龐大,超出視覺容量,切勿試圖將整個系統繪製於單一頁面。

使用標準符號。雖然存在多種變體,但堅持使用一種風格(例如:Yourdon/DeMarco 或 Gane/Sarson)可避免混淆。切勿在同一文件中混合使用不同風格。

為所有項目加上標籤。未標籤的箭頭毫無意義。未標籤的處理過程含義模糊。即使是簡單的形狀,也需命名以傳達意義。

避免線條交叉。這會造成視覺雜訊。若線條必須交叉,請使用「跳躍」或線條斷裂來表示它們並未實際相交。

符號語義摘要 📋

回顧核心元件:

  • 實體:在系統外部。資料來源或目的地。
  • 處理過程:在系統內部。轉換資料。
  • 儲存:在系統內部。儲存資料。
  • 資料流:連接上述項目。移動資料。

掌握這些符號,能讓您清楚地記錄複雜系統。它為分析師與開發人員提供了一種共通語言。遵循分解與一致性的規則,您所創造的圖表不僅是繪圖,更是功能規格。

從簡單開始。建立上下文。逐步擴展細節。與使用者確認。此迭代過程確保圖表真實反映現實情況。