数据流图(DFD)回答“数据从哪来、经过什么处理、存到哪去”。它不画控制流程、不画时序,只画数据的流动,这正是需求分析阶段想要的视角。画错的 DFD 十有八九错在符号混用和父图子图不平衡。

四类符号与基本约束

外部实体(矩形)是系统之外的人或外部系统;加工(圆角矩形或圆)是对数据的处理,编号如 P1、P2;数据存储(开口矩形)是文件或数据库表;数据流(箭头)是被加工的数据,必须标名字。

两条硬约束:任何加工必须既有输入又有输出;数据流不能直接从外部实体到数据存储,必须经过加工——数据不会自己跳进表里。

  • 外部实体:矩形,系统边界外
  • 加工:圆角矩形,编号 + 动词短语命名
  • 数据存储:开口矩形,写表或文件名
  • 数据流:箭头,必须标数据名

分层画法:先总后细

顶层图(context 图)只画系统和外部实体的边界,一个加工代表整个系统;0 层图把系统拆成 3 到 7 个主加工;某个加工还需要展开时再画 1 层图。层数按需,能讲清就行。

上下两层要满足“父图与子图平衡”:子图的输入输出数据流必须和父图对应加工的输入输出一致。评审抽查的就是这个,拆图拆丢了输入输出是最常见的扣分点。

三类典型错误与自查

黑洞:加工只有输入没有输出;奇迹:只有输出没有输入;无名流:箭头不标数据名。还有一种隐蔽错误是把控制流(“完成后通知”)当成数据流画进 DFD,那不是数据。

自查方法:顺着每条数据流问三个问题——从哪来、到哪去、名字是什么;再对着父图核对一遍边界数据流。两个动作做完,DFD 的结构性错误基本能清零。

常见问题

数据流图和 ER 图都要画吗?

要,两者讲的事不同:DFD 讲数据怎么流动和加工,ER 图讲数据怎么组织成表结构,分别对应需求分析和数据库设计章节。

数据流可以画双向箭头吗?

尽量拆成两条单向流并分别命名。双向箭头分不清两个方向各传了什么数据,评审常把这当不规范。

用工具做一遍

在线画数据流图

打开对应工具,把教程里的例子换成你的论文内容。

打开工具