1. 数据流图是什么
数据流图提供了系统中数据处理方式的可视化表示。这些图通常用于软件工程和分析,因为它们可以提供数据及其整体处理的多层次表示。
在大多数情况下,它们通过系统的不同组件提供数据的逻辑表示和处理。除了处理之外,有关其存储、输入和输出的详细信息也包含在 DFD 中。因此,数据流图可以按以下方式使用:
- 提供系统中信息的逻辑流。
- 在物理 DFD 中补充人员、系统或介质如何承载数据;逻辑 DFD 则聚焦业务数据与转换。
- 帮助识别数据从哪里进入、经过哪些处理、保存在哪里并输出到哪里。
- 它帮助我们了解系统的可扩展性,以便我们改进其功能。
- 其他好处包括逐步完善系统和学习各种组件的行为。

2. 常用数据流图符号及含义
现在,当您知道数据流图的重要性时,让我们开始了解如何创建它们。DFD 的优点之一是它们非常容易制作并且只有四个主要组件。
数据流图存在不同记法,常见的包括 Yourdon & Coad、Yourdon/DeMarco 与 Gane & Sarson。它们的处理和数据存储外观有所不同,但四类元素的语义一致;同一张图保持一种记法即可。

(1)实体
也称外部实体或源/汇,表示当前系统边界之外、负责发送或接收数据的人、组织、设备或其他系统。例如,客户可以提交订单,仓库系统可以接收出库请求。
(2)过程
它是描述数据在任何阶段的处理过程的最重要的数据流图符号之一。一个流程将有输入数据、管理操作和输出。它通常提供逻辑管理或数据更改。在图中,您可以看到收款或下订单是一些重要流程。
(3) 数据存储
它只是描述了系统中存储数据的任何位置。它可以是一个文档或整个数据库,用作存储和处理数据的存储库。在 DFD 中,数据存储可以有一个输入来收集数据和一个可选的输出来将存储的数据提供给任何其他实体或进程。在订单场景中,订单库、商品档案或发票记录可以是数据存储;客户如果与系统交互,通常应作为外部实体,而不是数据存储。
(4)数据流
最后,如果不表示从一个实体/流程到另一个实体/流程的数据流,任何数据流图都是不完整的。正如您在图中看到的,我们使用方向线来描述数据如何从一个地方移动到另一个地方。有时,我们还会在数据流箭头上添加标题,以便其他人理解这些数据流图符号及其含义。
使用Boardmix 数据流图工具可以选择 DFD 图形、调整样式并与团队共同评审;模板适合建立初稿,最终仍需按业务边界、连接规则和父子图平衡人工校验。点击boardmix马上使用!
四种DFD元素应该如何命名?
| 元素 | 回答的问题 | 正确示例 | 容易写错 |
|---|---|---|---|
| 外部实体 | 谁在系统边界外发送或接收数据 | 客户、支付平台 | 登录页面、销售步骤 |
| 处理 | 数据发生了什么转换 | 校验订单、计算金额 | 订单、数据库 |
| 数据存储 | 哪些数据被持久保存 | 订单库、商品档案 | 保存订单、客户 |
| 数据流 | 传递的是什么数据 | 订单信息、支付结果 | 处理、下一步、数据 |
处理使用“动词+对象”,其他三类通常使用名词。箭头名称应能独立回答“传递的是什么”,而不是只写“信息”或“数据”。IBM 的DFD 说明也以四类组成建立定义和案例。
Yourdon系列与Gane-Sarson记法有什么差异?
Yourdon 系列通常用圆形或圆角处理符号,Gane-Sarson 常把处理画成带编号区域的圆角矩形;数据存储的线条样式也可能不同。差异主要是外观,不是语义。团队应在图例中注明采用的记法,并避免同一张图混用多套处理和数据存储符号。
“上下文图、0层图、1层图”的编号习惯在不同教材和组织中可能不同。比名称更重要的是:明确每一层的范围,并保证父子图外部输入输出一致。
数据流图中哪些元素可以直接连接?
| 连接 | 是否通常允许 | 原因或修正方式 |
|---|---|---|
| 外部实体 → 处理 | 允许 | 表示外部输入进入系统处理 |
| 处理 → 外部实体 | 允许 | 表示系统向外部输出数据 |
| 处理 ↔ 数据存储 | 允许 | 读取和写入应分别标明数据内容与方向 |
| 处理 → 处理 | 允许 | 必须命名传递的数据 |
| 外部实体 → 外部实体 | 不允许 | 不经过当前系统处理,不属于该系统DFD |
| 数据存储 → 数据存储 | 不允许 | 应增加说明数据转换或搬运的处理 |
| 外部实体 → 数据存储 | 不允许 | 外部数据必须先经过系统处理 |
任何处理都不应只有输入没有输出,也不应凭空产生输出。若确实存在“终止、丢弃或生成”逻辑,应把业务含义画成可解释的处理与数据流。
订单系统符号实例:从名词到连线
以订单系统为例:客户是外部实体,“提交订单”是流入系统的数据;“校验订单”是处理;订单库是数据存储;“校验结果”和“订单状态”是数据流。支付平台仍是外部实体,因为它位于当前订单系统边界之外。仓库如果只接收出库请求,也应画成外部实体,而不是数据存储。
先在Boardmix 数据流图工具中选定一套 DFD 符号,再用9步数据流图画法继续完成分层和校验。
检查符号时最容易忽略的6个问题
- 把人员、部门、页面和数据库都画成同一种矩形;
- 处理只写“订单”,没有说明对订单做什么;
- 数据流只写“信息”,无法判断内容;
- 同一张图混用多套符号,却没有图例;
- 外部实体直接连接数据存储;
- 父图与子图使用相同箭头名称,却改变了方向或含义。

