需求分析与建模61 条

数据流图(DFD)

结构化分析方法的核心图型:用外部实体、处理过程、数据存储与数据流四类元素描述数据流动,按上下文图、0 层、1 层逐级分解。

DFD 的表达范围

数据流图(Data Flow Diagram)是结构化分析的核心图型,用外部实体、处理过程、数据存储与数据流四类元素描述“数据从哪来、经过什么加工、落到哪去”。它按上下文图、0 层、1 层逐级分解,适合与业务人员核对数据来源与去向,也适合在需求阶段暴露遗漏的输入输出。它不表达控制顺序与并发,因此需要与状态图或活动图配合使用。

基本信息

四类元素外部实体、处理过程、数据存储、数据流
分层方式上下文图(整系统一个过程)→ 0 层 → 1 层,逐级分解
不表达控制顺序、并发、时序与性能约束
配套图状态图表达状态迁移,活动图表达流程控制,用例图表达角色目标

典型使用场景

  • 需求调研:与业务方逐条核对数据的来源、加工与去向
  • 系统改造前的现状梳理:把现有数据流画出来,找出重复录入与断点
  • 接口边界划分:通过数据存储归属确定服务边界与数据所有权
  • 合规与审计准备:说明敏感数据在系统间的流转路径
  • 新旧系统对接:用同一套图型对照两侧的输入输出差异

四类元素

元素含义常见记法
外部实体系统之外的数据来源或去向矩形,标注角色名
处理过程对数据做变换的功能圆角矩形或圆形,带编号
数据存储数据停留的位置开口矩形或双横线
数据流数据移动方向与内容带箭头的命名连线

分解层级示例

分解层级示例
上下文图:客户 | 下单系统 | 支付网关 | 仓储系统
0 层:1 接收订单 → 2 校验库存 → 3 处理支付 → 4 生成出库单
1 层(展开过程 3):
  3.1 组装支付请求 → 3.2 调用网关 → 3.3 记录支付结果
# 每个过程都要有输入流与输出流,不能只进不出

使用要点

  • 数据流必须命名且名称具体,写“数据”等于没写,评审时无法核对口径
  • 分解到“一个过程可被一句话描述清楚”即可停止,继续拆分的维护成本会超过收益
  • 过程编号与层级对应,子过程编号能看出父过程,便于追溯
  • 同一个数据存储在不同层级保持一致命名,避免同一实体出现多个名字
DFD 不表达控制顺序与并发,适合与业务人员核对数据来源去向;控制逻辑用活动图或状态图补充,别指望一张图讲清所有事。
把 DFD 画成流程图是常见误用:一旦在连线里加入条件分支与触发顺序,图就失去“数据视角”的核对价值,评审时反而不易发现遗漏的输入输出。

易错点

  • 数据流没有名称或名称含糊(写“数据”),评审时无法核对口径
  • 分解层级过深,图数量膨胀,维护成本超过收益,没人再更新
  • 混淆数据流与控制流:把触发条件与顺序画进连线,掩盖了真正的数据依赖
  • 只画理想路径,异常分支与人工干预环节缺失,上线后才发现有未覆盖的输入
  • 画完不评审:业务方未确认就进入设计,数据口径理解偏差被固化进实现

数据来源与参考

  • Edward Yourdon & Tom DeMarco 结构化分析著作(1970s)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌