mcpField
D
Data Flow Diagrams

Data Flow Diagrams

github.com/danhvb开发97 次安装
代码仓库

关于 Data Flow Diagrams

一项使用数据流图(DFD)描述系统内数据移动方式的技能,适用于系统分析、集成设计、隐私审查和安全审计,并说明标准符号与分层方法。

主要功能

  1. 01DFD 实体、处理、存储与流
  2. 02绘制 Level 0 上下文图
  3. 03拆分 Level 1 处理流程
  4. 04数据守恒与连接规则
  5. 05区分 DFD 与流程图

适用场景

  1. 01梳理遗留系统的数据流
  2. 02追踪个人数据的去向
  3. 03规划系统集成
  4. 04审查安全信任边界

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/danhvb/my-ba-skills --skill data-flow-diagrams

安装后在 Claude Code 中输入/data-flow-diagrams确认已加载。

详细介绍

数据流图(DFD)技能

目的

将数据在系统中的流动过程可视化。DFD 展示系统如何处理数据,而流程图展示的是控制流(执行顺序)。

适用场景

  • 理解旧系统。
  • 分析数据隐私(个人身份信息会流向何处?)。
  • 设计集成方案。
  • 安全审计(识别信任边界)。

DFD 表示法(Gane & Sarson 或 Yourdon)

  1. 处理过程(圆形/圆角矩形):转换数据。
    • 格式:动词 + 名词。
    • 示例:Calculate Tax、Validate User。
  2. 外部实体(方形):数据的来源或接收方(超出范围)。
    • 示例:Customer、Bank API、Admin。
  3. 数据存储(开口矩形/平行线):静态存储的数据。
    • 示例:Customer DB、Orders File。
  4. 数据流(箭头):数据包的流动。
    • 标签:Order Details、Invoice。

DFD 层级

第 0 层:上下文图

范围:将整个系统视为一个处理过程。 展示内容:系统边界及其与外部环境的交互。

示例:

graph LR
    Customer[Customer] -->|Order| System((Order Mgmt System))
    System -->|Invoice| Customer
    System -->|Payment Info| Bank[Bank]
    Bank -->|Confirmation| System
    Warehouse[Warehouse] -->|Stock Levels| System
    System -->|Shipping Request| Warehouse

注意:第 0 层通常不展示数据存储,除非这些存储由外部系统共享。

第 1 层:系统分解

范围:将“一个处理过程”拆分为多个主要子处理过程(3–7 个气泡)。 展示内容:这些处理过程使用的数据存储。

示例:

  1. 处理过程 1.0:验证订单
    • 输入:订单(来自客户)
    • 输出:有效订单
  2. 处理过程 2.0:计算总额
    • 输入:有效订单 + 价格(来自产品数据库)
    • 输出:总金额
  3. 处理过程 3.0:处理付款
    • 输入:总金额 + 卡信息
    • 输出:收据

方法规则

  1. 数据守恒:处理过程不能凭空创建数据(必须有输入)。处理过程不能消耗数据却没有输出(黑洞)。
  2. 禁止直接连接:
    • 实体 ↔ 实体(超出范围)
    • 实体 ↔ 数据存储(必须经过处理过程)
    • 数据存储 ↔ 数据存储(必须经过处理过程)
  3. 标注:所有箭头都必须标注流动的数据(而非动作)。

DFD 与流程图对比

DFD流程图
关注数据关注控制流/执行顺序
“Calculate Tax”“If Tax > 0 Then...”
没有循环/分支包含循环/判断
默认并行/异步默认顺序执行

创建 DFD 的步骤

  1. 识别实体:谁发送/接收数据?(客户、经理、API)。
  2. 识别处理过程:会发生哪些逻辑操作?(检查库存、保存用户)。
  3. 识别数据存储:信息存放在哪里?(文件、表)。
  4. 绘制第 0 层:将实体连接到“系统”。
  5. 展开至第 1 层:将系统拆分为子处理过程。
  6. 验证:检查数据守恒及是否存在缺失的数据流。

最佳实践

  • 保持逻辑性:无需考虑物理实现(例如,在逻辑 DFD 中,“纸质文件”和“SQL DB”并无区别)。
  • 为处理过程编号:1.0、2.0、3.0。子处理过程:1.1、1.2。
  • 控制复杂度:如果某一层包含超过 7 个处理过程,则进一步分解(第 2 层)。

工具

  • Visio。
  • Lucidchart。
  • Draw.io。
  • Mermaid(图表样式)。

评论

支持 Markdown