首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

功能模型深度解析:資料流圖分層分解、功能依賴與優化準則

     編輯:關於C#

功能模型核心定位

著重系統內部資料傳遞與處理,定義「輸入經運算轉換為輸出」的映射關係,不考慮執行時序 (時序屬動態模型)。

資料流圖 (DFD) 核心元素

符號名稱說明範例
▭外部實體系統邊界外的資料來源/目的地客戶、供應商、銀行、監管機構
○ / ⬟處理序資料轉換邏輯、業務規則執行計算稅額、驗證訂單、生成報表
━━━━━━資料儲存靜態資料保持、供後續存取客戶主檔、產品目錄、訂單歷史
→資料流資料在元素間移動、攜帶資訊訂單明細、付款確認、庫存扣減

DFD 分層分解架構

  • 第 0 層 (上下文圖):單一處理序代表整個系統,展示與外部實體的資料流。
  • 第 1 層:將系統分解為 3-7 個主要子系統/處理序 (避免過多)。
  • 第 2 層...:逐層細化,直到處理序邏輯可用簡單敘述/伪代碼描述 (原子處理序)。
  • 每層處理序編號承襲上層 (如 1.0 → 1.1, 1.2, 1.3)。

建立功能模型 5 步驟

  1. 確定輸入與輸出值:識別外部實體提供/接收的資料項、格式、頻率、品質要求。
  2. 用 DFD 表示功能依賴性:繪製分層 DFD,確保資料流平衡 (輸入 = 輸出 + 儲存變化)。
  3. 具體描述每個功能:為每個原子處理序撰寫處理規範 — 演算法、業務規則、前置/後置條件、例外處理、效能指標。
  4. 確定限制:資料完整性約束 (PK/FK/唯一/檢查)、業務規則 (不可違反不變條件)、技術約束 (延遲/吞吐/可用性)。
  5. 確定功能優化準則:最小化處理時間、最大化吞吐量、最小化資料冗餘、最小化儲存成本、最大化資料品質。

功能模型與物件模型的關係

功能模型元素對應物件模型元素備註
處理序類別操作 / 服務方法一個處理序可能對應多個操作
資料儲存實體類別 / Repository / 資料庫表DFD 儲存較抽象,物件模型更細緻
資料流參數 / 回傳值 / 事件承載 / DTO資料流項目 → 類別屬性/建構子參數
外部實體介面 / Actor / 外部系統整合點介面契約定義資料流格式

常見建模錯誤

錯誤徵兆修正
控制流混入資料流DFD 出現「啟動信號」「完成旗標」資料流控制邏輯移至動態模型 (狀態圖/序列圖)
處理序過度細分超過 7 個子處理序、層次超過 5 層合併同質處理序、調整分解粒度
資料流不平衡子圖輸入/輸出與父圖資料流不匹配嚴格遵守資料流平衡原則 (輸入 = 輸出 + Δ儲存)
忽略資料約束DFD 無標註唯一性/參考完整性/值域在資料儲存/資料流旁標註約束或連結資料字典

現代替代技術

  • 用例圖 + 活動圖 (UML):更強調使用者目標與業務流程。
  • BPMN 2.0:業務流程建模標準,支援執行引擎 (Camunda/Flowable)。
  • 事件風暴 (Event Storming):工作坊快速建立領域事件流、命令、聚合。
  • C4 模型:容器/元件/程式碼層級架構視圖,替代傳統 DFD 分層。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved