下面把 DFD(数据流图)相关的所有知识点系统整理成一份完整文档,从概念、符号、分层、平衡、命名、连线到考试题型和答题方法,层层递进,最后给出背诵清单和速记口诀。
DFD 数据流图 · 系统整理
一、DFD 是什么
DFD(Data Flow Diagram,数据流图)是一种结构化分析工具,用图形方式描述系统的数据流动和加工过程。它回答四个问题:数据从哪里来、经过什么加工、存到哪里、最后输出给谁。
DFD 只关心数据流,不关心控制流、时序和判断条件。它是下午试题一(15分必答)的固定题型。
二、DFD 的四个基本元素
DFD 只有四种符号,必须条件反射地识别和画对。
| 元素 | 标准图形 | 内部写什么 | 命名规则 | 核心约束 |
|---|---|---|---|---|
| 外部实体 | 封闭矩形 | 实体名称 | 名词(客户、财务部门、银行系统) | 系统边界之外,是数据源点或终点 |
| 加工 | 圆角矩形(推荐)或圆形 | 编号 + 加工名(P1 验证订单) | 动词 + 名词,不能只写动词 | 必须有输入,必须有输出 |
| 数据存储 | 开口矩形(右边开口)或两条平行线 | 编号 + 名称(D1 订单表) | 名词(表/文件/库/清单/档案) | 只能与加工相连 |
| 数据流 | 带箭头的直线(单向) | 流名称写在线上方 | 名词短语(订单数据、付款通知) | 至少一端是加工,不能用动词命名 |
各元素详解
外部实体
- 系统边界之外的人、组织或外部系统。
- 同一实体可在图中不同位置多次出现,角落加斜线标记。
- 外部实体之间不能直连,必须经过加工中转。
- 顶层图中外部实体与系统加工之间的数据流,必须原样出现在0层图中(父子平衡)。
加工
- 对数据执行变换或处理的功能单元。
- 编号从 P1 开始(顶层图的整体系统加工为 P0)。
- 每个加工至少一条输入流和至少一条输出流。只有入没有出是“数据黑洞”,只有出没有入是“数据奇迹”,都是硬性错误。
- 更深层子图用父编号加点号:P1.1、P1.2,体现逐层分解。
数据存储
- 数据的静态存放处,本身不加工数据。
- 开口矩形三条边、右边不封口;左侧小格写 D 编号,右侧写名称。两条平行线是简化画法,左右都不封口。
- 不能画成封闭矩形(会和外部实体混淆),不能画成圆角矩形(会和加工混淆)。
- 数据存储只能与加工相连:箭头指向存储 = 写入;箭头从存储引出 = 读取。
- 数据存储之间不能直连,外部实体与数据存储之间也不能直连。
数据流
- 单向箭头,表示数据在元素之间的流动方向。
- 命名必须是名词或名词短语,描述“流动的是什么”。
- 绝对不能用动词或加工名来命名(“查询”“计算工资”“处理完成”都是错误命名)。
- 每条流必须有起点和终点,且至少一端是加工。合法连接只有:实体↔加工、加工↔加工、加工↔存储、存储↔加工。
三、DFD 的分层体系
DFD 采用自顶向下、逐层分解的画法,每一层都是一张完整的图。
顶层图(上下文图)
- 整个系统画成一个加工(P0,命名为“XX系统”)。
- 只画外部实体和对外数据流。
- 不出现数据存储,不展开内部加工。
- 作用:界定系统边界,明确系统与外界的所有交互。
0层图
- 顶层图中那个系统加工展开后的第一层细图。
- 包含多个主加工(P1、P2、P3……)、数据存储(D1、D2……)、外部实体(与顶层图同一批)和内部数据流。
- 加工编号从1开始,不出现0号加工(0号留给顶层图的系统整体)。
更深层子图
- 0层图中某个加工继续展开,得到1层图、2层图……
- 子图编号用父编号加点号:P1.1、P1.2。
- 考试中通常只考顶层图和0层图,更深层偶尔以“判断某加工能否继续分解”的形式出现。
分层关系一句话
顶层图只有1个加工,0层图把系统拆成几大块,更深层把某一块再拆细。每层都是一张完整的图,不是把上一层的图改一改。
四、数据平衡三原则(核心考点)
原则一:顶层图与0层图平衡
- 顶层图中系统与外部实体之间的每一条输入流和输出流,在0层图中都必须原样出现(名称一致、方向一致、连接的外部实体一致)。
- 0层图不能多出顶层图没有的对外数据流,也不能缺少顶层图已有的对外数据流。
- 0层图内部的加工间数据流、加工与存储间的数据流,不需要在顶层图中出现,不影响平衡。
原则二:父图与子图平衡
- 父图中某个加工的输入流和输出流,必须与它展开后的子图的输入流和输出流完全一致。
- 子图不能多出父图中没有的跨边界数据流,也不能缺少父图中已有的跨边界数据流。
- 平衡只看跨边界的数据流,子图内部加工之间的流不需要与父图对应。
原则三:加工自身平衡
- 每个加工必须既有输入数据流,又有输出数据流。
- 只有入没有出 = 数据黑洞;只有出没有入 = 数据奇迹。两者都是硬性错误。
平衡口诀
顶层对外几条流,0层必须条条有;名称方向不能变,内部怎么拆随便。父图加工的入出,子图边界不能丢;每个加工有进有出,黑洞奇迹都没有。
父图与子图通俗理解
- 父图是较粗的那层图,某个加工还没有展开。
- 子图是把父图中某一个加工单独展开后得到的细图。
- 这个被展开的加工,就是父图和子图之间的“接口”。
- 举例:0层图中有加工“2.统计成绩”,把它展开得到1层图(2.1读取成绩、2.2计算平均分、2.3生成统计表)。0层图是父图,1层图是子图,平衡要求“2.统计成绩”的对外输入输出与1层图整体的对外输入输出一致。
五、命名规则(高频扣分点)
| 元素 | 正确命名 | 错误命名 | 原因 |
|---|---|---|---|
| 外部实体 | 客户、财务部门 | 提交订单、审核申请 | 实体是名词,不是动作 |
| 加工 | 验证订单、计算总成本 | 校验、处理 | 必须“动词+宾语”,不能只有动词 |
| 数据存储 | 订单表、库存文件 | 存储订单、记录维修 | 存储是名词,不是动作 |
| 数据流 | 订单数据、付款通知 | 计算工资、查询完成 | 数据流是名词短语,不能用加工名 |
数据流命名是最高频扣分点。看到数据流名称是动词或加工名,基本可以判定为错误。
六、连线规则与三大禁令
合法连接(只有这五种)
- 外部实体 → 加工
- 加工 → 外部实体
- 加工 → 加工
- 加工 → 数据存储(写入)
- 数据存储 → 加工(读取)
三大禁令
- 数据存储之间不能直连。
- 外部实体之间不能直连。
- 外部实体与数据存储之间不能直连。
所有连接都必须经过加工中转。违反禁令是下午题改错的高频考点。
七、考试题型与答题方法
题型一:补充外部实体或数据存储名称
问法:“指出顶层图中E1、E2分别是什么”“0层图中D1~D4分别是什么”。
方法:
- 外部实体:读题干,找系统边界之外的“人/部门/外部系统”,用题干原词。
- 数据存储:找题干中带“文件、表、库、清单、档案”的名词。
题型二:补充缺失的数据流
问法:“0层图中某加工缺少一条输入数据流,请指出名称、起点和终点”。
方法:
- 先对比顶层图与0层图,找不平衡的对外流。
- 逐句读题干,找“提到要读某存储但图上没有入线”或“提到要输出给某实体但图上没有出线”的加工。
- 检查每个加工是否只有入没有出、或只有出没有入。
- 答案格式:在加工Y与存储Z之间添加数据流“XX信息”,方向要明确。
关键:数据流的起点或终点必须有一个是加工。
题型三:改错
问法:“0层图中哪条数据流方向画错了”“找出图中的错误”。
方法:按“形状→命名→连线→平衡”四步检查:
- 形状对不对(实体矩形、加工圆角、存储开口)。
- 命名对不对(数据流是否用动词、加工是否只有动词)。
- 连线是否违反三大禁令。
- 加工是否有进有出,父子是否平衡。
题型四:判断某加工能否继续分解
方法:看该加工是否足够简单、是否只有一个明确功能。如果加工内部还有多个子功能或判断逻辑,就可以继续分解;如果已经是原子操作,就不必再拆。
答题规范
- 补充数据流时用题干原词,不要自己发明口语化名称。
- 答案写成“在XX与XX之间添加数据流‘XX’”,起点终点方向明确。
- 数据流名称写名词短语,不写动词。
- 加工名称写动词+名词。
八、高频易错点汇总
- 数据流用动词或加工名命名(如“计算工资”“处理完成”)→ 必须用名词短语。
- 数据存储画成封闭矩形 → 与外部实体混淆。
- 数据存储画成圆角矩形 → 与加工混淆。
- 加工只有入没有出,或只有出没有入 → 数据黑洞/数据奇迹。
- 父图子图不平衡:子图多出或缺少数据流,或名称方向不一致。
- 外部实体与数据存储直连 → 必须经过加工。
- 数据存储之间直连 → 必须经过加工。
- 外部实体之间直连 → 必须经过加工。
- 顶层图出现数据存储 → 顶层图只有加工、实体和数据流。
- 加工名只写一个动词(如“校验”)→ 必须写清校验什么。
- 数据流没有起点或终点,或两端都不是加工。
- 补充数据流时自己发明名称,不用题干原词。
九、DFD 答题检查清单
答完DFD题,按以下顺序自查:
第一步:形状
- 外部实体是封闭矩形?
- 加工是圆角矩形或圆形?
- 数据存储是开口矩形或两条平行线(不是封闭矩形、不是圆角矩形)?
- 数据流是带箭头的单向直线?
第二步:命名
- 数据流是名词短语(不是动词、不是加工名)?
- 加工是“动词+名词”(不是只有动词)?
- 数据存储是名词(不是动作)?
第三步:连线
- 存储没有直连存储?
- 实体没有直连实体?
- 实体没有直连存储?
- 每条数据流至少一端是加工?
- 每个加工有进有出?
第四步:平衡
- 顶层图与0层图的对外流名称、方向、数量一致?
- 父图加工的入出流与子图边界流一致?
- 没有数据黑洞或数据奇迹?
十、DFD 背诵清单(直接背)
- 四个元素:外部实体(矩形)、加工(圆角矩形/圆)、数据存储(开口矩形/平行线)、数据流(带箭头直线)。
- 命名规则:实体名词、加工动宾、存储名词、数据流名词短语(不能用动词)。
- 加工约束:必须有进有出,不能是黑洞或奇迹。
- 存储约束:只能连加工,不能连存储或实体。
- 实体约束:不能直连实体,不能直连存储,必须经过加工。
- 顶层图:1个加工(P0),只有实体和数据流,无数据存储。
- 0层图:多个加工(P1起),可出现数据存储,外部实体与顶层图相同。
- 平衡三原则:顶层与0层平衡、父图与子图平衡、加工自身平衡。
- 父图子图:父图是粗图,子图是父图中某一个加工展开后的细图;平衡要求该加工的对外接口展开前后不变。
- 平衡口诀:顶层对外几条流,0层必须条条有;名称方向不能变,内部怎么拆随便。
- 答题格式:在XX与XX之间添加数据流“XX”,起点终点明确,用题干原词。
- 三大禁令:存储不直连存储、实体不直连实体、实体不直连存储。
十一、DFD 速记口诀
实体矩形在边界,加工圆角带编号;
存储开口只连工,数据箭头名词报。
加工有进必有出,实体存储不直交;
顶层一个对外流,0层条条不能少。
父图子图看边界,名称方向要对牢;
数据流名用名词,动词加工全不要。
把以上内容按“符号→分层→平衡→命名→连线→题型→易错点”的顺序过一遍,再拿历年真题的DFD题练手,重点练“找缺失数据流”和“改错”,这两类问法占分最重。