数据流图 (DFD)

从理论到实践:系统逻辑可视化的终极指南

引言:什么是 DFD?

数据流图 (Data Flow Diagram, DFD) 是一种图形化工具,用于描绘信息流和数据在系统内部的流动、处理、存储过程。它是结构化系统分析与设计 (SA/SD) 的核心。


核心价值:

  • 抽象化:忽略具体技术细节(如编程语言、硬件),专注于逻辑功能。
  • 可视化:将复杂的业务逻辑转化为直观的图形。
  • 沟通桥梁:帮助技术人员与非技术人员(用户、管理层)达成共识。
复杂现实系统 ? 清晰逻辑模型

第一部分:核心构成要素

1.1 外部实体 (External Entity)

定义:系统边界之外的人、组织或外部系统。

功能:数据的源点(Source)或终点(Sink)。

客户 / 银行 符号:矩形

1.2 过程 (Process)

定义:对数据进行变换或加工的单元。

功能:输入数据 → 处理 → 输出数据。

订单 P1 验证订单 有效订单

1.3 数据存储 (Data Store)

定义:数据的静态存储点。

功能:保存数据以供后续使用。

D1 库存表 D2 用户库

1.4 数据流 (Data Flow)

定义:数据移动的路径。

规则:必须连接一个过程。不能直接连接两个实体或两个存储。

输入流 输出流

第二部分:DFD 的层级分解

2.1 语境图 (Context Diagram / Level 0)

将整个系统视为一个单一的过程,展示系统与外部环境的交互。它界定了系统的边界


2.2 逐层细化 (Decomposition)

自顶向下:将语境图中的过程分解为更详细的子过程(第1层),再继续分解(第2层...)。

平衡原则:父图与子图的输入/输出数据流必须完全一致。

Level 0: 语境图 顾客 订餐系统 厨房 订单 菜单详情 分解 (Zoom In) Level 1: 细节展开 订单 1.0 接收 2.0 处理 3.0 计费 D1 菜单库 菜单详情

第三部分:最佳实践

3.1 命名规范

使用清晰的业务术语。

  • 过程:动词 + 名词 (如 "计算税额")
  • 实体/存储/流:名词 (如 "客户", "税率表")

3.2 保持简洁

7 ± 2 原则:每张图的过程数量控制在 5-9 个之间。如果太复杂,请创建下一层子图。

3.3 逻辑而非物理

描述做什么 (What),而不是怎么做 (How)。不要画具体的硬件或程序流程。

3.4 数据守恒

黑洞与奇迹:过程不能只有输入没有输出(黑洞),也不能只有输出没有输入(奇迹)。

总结与应用

DFD 需求分析 系统设计 文档化 沟通工具

DFD 是构建清晰、一致系统逻辑视图的基石。虽然它不擅长描述控制流(如循环、条件判断),但在数据驱动的系统分析中,它是不可替代的强大工具。

实际应用案例

案例:在线购物系统

使用DFD建模在线购物系统的核心流程,帮助开发团队清晰理解系统逻辑。

  • Level 0: 整个系统作为单一过程,与客户、支付网关、物流系统等外部实体交互。
  • Level 1: 分解为用户管理、商品浏览、订单处理、支付处理等子过程。
  • Level 2: 进一步分解订单处理为订单创建、库存检查、价格计算等详细步骤。

案例:医院管理系统

使用DFD建模医院管理系统,帮助识别系统中的数据流和处理逻辑。

  • 外部实体: 患者、医生、药房、保险公司。
  • 数据存储: 患者记录、医疗记录、药品库存、账单信息。
  • 核心过程: 挂号、诊断、处方、 billing、取药。