在结构化系统分析中,数据流图 (Data Flow Diagram, DFD)采用分层建模 的方法,将复杂系统逐步分解为可管理的部分。根据抽象层次的不同,数据流图通常分为以下几个层次:
✅ 数据流图的主要层次
1. 上下文图 (Context Diagram)------ 第0层 DFD
- 作用 :系统最高抽象层次,展示整个系统作为一个整体(一个处理),及其与外部实体之间的数据流。
- 特点 :
- 系统用一个单一处理(如圆形或矩形)表示。
- 只显示与系统交互的外部实体(如用户、其他系统)。
- 显示数据流入和流出的方向。
- 目的:定义系统边界,明确"谁在用系统"和"数据如何流动"。
🌰 示例:
"在线购物系统"作为一个整体,与"顾客"、"支付网关"、"物流系统"之间交换订单、支付信息等。
2. 第1层 DFD(Level 1 DFD)
- 作用 :将第0层的"单一处理"分解为几个主要子过程(通常3-7个),展示系统内部的主要功能模块。
- 特点 :
- 原始系统被拆分为多个高层处理(如"接收订单"、"验证用户"、"处理支付")。
- 数据存储(如数据库)可能首次出现。
- 每个数据流仍需连接外部实体。
- 目的:展示系统的主要功能模块及其相互关系。
🌰 示例:
"处理订单" → "验证库存" → "生成发票"等。
3. 第2层 DFD(Level 2 DFD)
- 作用 :对第1层中的某个复杂处理进一步分解,展示更细粒度的子过程。
- 特点 :
- 并非所有过程都需要展开,只对复杂的处理进行细化。
- 更多数据存储和控制流可能显现。
- 目的:深入理解关键模块的内部逻辑。
🌰 示例:
"处理支付" → "连接支付网关"、"接收确认"、"更新支付状态"。
4. 第3层及更深层 DFD(可选)
- 作用:继续细化特定模块,直到逻辑足够清晰,便于实现。
- 实际使用 :
- 一般项目中很少超过第3层。
- 层次过深会导致复杂性增加,违背"清晰表达"的初衷。
🟨 是否有固定层数?
- 没有固定数量,层次数量取决于系统复杂度。
- 通常:
- 简单系统:0 ~ 1 层
- 中等系统:1 ~ 2 层
- 复杂系统:可达 3 层或更多
- 原则 :每层分解应保持"7±2"个元素(心理学认知负荷理论),避免信息过载。
🔁 层次之间的关系(自顶向下分解)
第0层:系统(整体)
↓
第1层:主要功能模块(分解系统)
↓
第2层:子功能细化(分解模块)
↓
第3层:详细处理逻辑(可选)
这种分解称为 "爆炸"(Explode),每个处理可被"爆炸"成更详细的子图。
✅ 总结:数据流图的层次一览
| 层次 | 名称 | 内容 | 关键元素 |
|---|---|---|---|
| 0 | 上下文图 | 整个系统与外部交互 | 1个处理、外部实体、数据流 |
| 1 | 第1层DFD | 主要功能模块 | 多个处理、数据存储、数据流 |
| 2 | 第2层DFD | 模块内部细节 | 子处理、更细粒度数据流 |
| 3+ | 更深层 | 极细粒度逻辑(可选) | 用于复杂模块的实现设计 |
💡 提示:
- 所有层次必须保持输入/输出平衡 (即"守恒原则 "):
一个处理的输入数据流应能支撑其输出。 - 每个处理应有唯一编号(如 1.0, 1.1, 2.1 等),便于追踪。