数据流图(DFD)是信息在系统中流动方式的视觉表示。它关注的不是系统的外观,而是数据如何被处理、存储和传输。对于分析师和架构师而言,掌握这种表示法对于理解复杂的流程至关重要,而不会陷入技术实现细节的泥潭。
本指南将剖析数据流图的结构。我们将研究构成这些图表的五个核心要素,探讨它们之间的相互作用,并提供实用示例。最后,您将理解创建清晰、可操作的系统地图所需的结构完整性。

数据流图是一种图形化表示,用于展示数据在信息系统中的流动过程。与关注控制逻辑和决策点的流程图不同,数据流图专注于数据的流动。它抽象了物理实现,以展示信息的逻辑流动。
数据流图具有层次性。它们从高层次视图开始,逐步深入到具体细节。这种分层方法使利益相关者能够一目了然地理解系统,同时帮助开发人员看清具体的数据需求。
要构建一个有效的数据流图,必须包含五个特定元素。前四个是图形符号,而第五个是确保准确性的概念性要求。
处理过程表示将输入数据转换为输出数据的功能。它是系统的引擎。在数据流图中,处理过程通常以圆角矩形或圆形表示,具体取决于记法风格(Yourdon/DeMarco 与 Gane/Sarson 之分)。
关键特征:
示例: 考虑一个电子商务系统。一个处理过程可能是“验证付款”。它接收信用卡数据(输入),并返回批准或拒绝代码(输出)。
数据存储是信息被保存以供后续使用的场所。它代表数据库、文件、纸质档案柜或任何持久化机制。关键的是,数据存储不会处理数据,它只是保存数据。
关键特征:
示例: 在一个图书馆系统中,“图书库存” 数据存储保存了可用图书的详细信息。当一本书被借出或归还时,该存储会被更新。
外部实体是系统边界之外的数据源或目的地。它们代表与主系统交互但不属于其内部逻辑的人、组织或其他系统。
关键特征:
示例: 在一个薪资系统中,“员工” 是一个外部实体,提供工作时数并接收工资单。
数据流是连接处理过程、数据存储和外部实体的箭头。它们表示数据的流动。数据流必须有一个名称,用以描述所传输数据的内容。
关键特征:
示例: 连接 “登录” 处理过程与 “用户数据库” 数据存储的箭头应标记为 “认证请求”.
虽然数据字典本身并未绘制在图中,但它是完整DFD规范的第五个关键组成部分。它是一个集中式存储库,用于定义图中使用的所有数据元素的结构、类型和格式。没有它,图表就会变得模糊不清。
关键特性:
示例: 字典可能将 “出生日期” 定义为 YYYY-MM-DD 且不允许为空值。这可以防止流程中出现逻辑错误。
在设计阶段,可使用此表快速查阅每个组件的属性。
| 组件 | 符号形状 | 功能 | 示例标签 | 语法规则 |
|---|---|---|---|---|
| 处理 | 圆角矩形 / 圆形 | 转换数据 | 计算税款 | 动词 + 名词 |
| 数据存储 | 开口矩形 / 平行线 | 存储数据 | 订单历史 | 名词(复数) |
| 外部实体 | 方形 / 矩形 | 源/汇 | 银行系统 | 名词(单数) |
| 数据流 | 箭头 | 移动数据 | 支付详情 | 名词短语 |
| 数据字典 | 文档 / 列表 | 定义数据 | 数据定义 | 技术模式 |
DFD很少单独绘制。它们存在于一个层级结构中,允许不同层次的抽象。理解这些层级可以确保在每个阶段正确应用五个组成部分。
这是最高层级的视图。它将整个系统显示为一个单一的过程。它识别外部实体以及进入或离开系统的主数据流。
该图将上下文图中的单一过程分解为主要子过程。它引入了第一层内部数据存储和过程。
此层级将第 0 层的过程分解为其组成部分功能。用于详细设计和开发。
创建数据流图是一个迭代过程。为确保图表保持有用且准确,请遵循以下结构规则。
当你将一个过程分解到更低层级时,输入和输出必须保持一致。如果父过程接收“订单数据”,子过程必须共同处理相同的“订单数据”。你不能凭空创造数据或销毁数据。
一致性是关键。所有组件都应使用标准化的命名规范。除非在组织内普遍理解,否则避免使用缩写。确保一个图表中标记为“发票”的数据流在另一个图表中不应标记为“账单”。
一个常见错误是将控制逻辑(if/else)混入DFD中。DFD展示的是数据流动,而不是决策逻辑。应使用决策表或流程图来表示控制逻辑。在DFD中,决策点由一个根据输入输出不同数据流的处理过程来表示。
除非是新创建或归档的数据存储,否则必须同时具有输入和输出。仅接收数据的存储是黑洞。仅提供数据的存储是奇迹(凭空创造)。两者都违背了系统逻辑。
即使是经验丰富的建模者也会犯错。回顾这些常见陷阱可以在分析阶段节省时间。
让我们将五个组件应用于一个实际场景。设想一个简化的在线订单系统。
DFD并非孤立存在。它们通常与其他建模技术相辅相成。
为确保您的数据流图具有价值,请牢记以下原则。
通过严格应用这五个组成部分并遵守结构规则,您将为系统开发创建一个稳健的蓝图。这种清晰性减少了歧义,最小化了返工,并确保最终实现与预期的数据架构保持一致。
请记住,DFD是一份动态文档。随着需求的变化,图表必须随之演变以反映系统的全新现实。定期维护图表及其配套的数据字典,是成熟分析过程的标志。