数据流图有几种层次

在结构化系统分析中,数据流图 (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 等),便于追踪。