从业务到数据:TFD与DFD在系统分析与设计中的协同应用
1. TFD与DFD系统分析的双子星刚入行做系统分析时我最常被业务部门问的一句话是你们技术到底能不能理解我们的需求后来发现**业务流程图TFD和数据流程图DFD**就是架起业务与技术沟通的桥梁。这两种图看似简单但在实际项目中它们能帮我们避免80%的需求误解。TFD就像业务部门的方言用泳道图决策节点直观展示谁在什么时候做什么事。记得第一次用TFD梳理电商退货流程业务经理指着图中一个冗余审批环节惊呼原来问题出在这儿而DFD则是技术团队的普通话用数据流加工节点揭示信息如何在不同系统间流转。有次排查订单丢失问题正是DFD帮我们发现了两个子系统间的数据存储缺失。2. TFD实战从业务痛点到流程图2.1 绘制TFD的黄金法则我习惯用**三问法**启动TFD绘制参与者是谁泳道纵向划分关键动作是什么矩形框表示决策点在哪里菱形节点标注以图书馆借阅系统为例参与者读者、管理员、财务处关键动作查书目→填借阅单→扣押金→出库登记决策点押金是否充足书籍是否可借graph TD A[读者] --|提交借阅请求| B(查书目) B -- C{可借?} C --|是| D[填借阅单] C --|否| E[提示不可借] D -- F{押金≥100?} F --|是| G[扣押金] F --|否| H[提醒充值] G -- I[出库登记]2.2 常见踩坑与避坑指南去年给某超市做库存系统时踩过大坑TFD里漏了临期商品处理分支结果上线后仓库堆积大量过期商品。现在我的检查清单必含每个决策点是否有双向出口异常流程是否覆盖如网络中断、审核驳回参与部门是否完整别漏了法务、财务等支持部门3. DFD精要数据流动的DNA3.1 分层设计技巧DFD的分层如同洋葱剥皮顶层图上下文图整个系统就是一个加工比如电商订单系统0层图分解出核心子系统如订单创建、支付、物流1层图细化到具体功能如支付分解为验卡、扣款、生成凭证某物流系统的DFD片段外部实体商家 处理过程4.1 生成运单 数据流订单详情 → 运单编号 数据存储D1 运单数据库3.2 数据字典的妙用曾有个项目因客户ID在订单和CRM系统中定义不同导致数据混乱。现在我会强制要求| 数据项 | 类型 | 长度 | 约束条件 | 来源 | |--------------|--------|------|-------------------|---------------| | 订单编号 | 字符型 | 20 | O年月日6位序列号 | 订单生成系统 | | 客户等级 | 数值型 | 1 | 1-5整数 | CRM系统 |4. 协同作战TFD到DFD的转化4.1 映射关系表TFD元素DFD对应物转化要点业务动作加工泡泡图动词短语命名如计算运费审批节点条件数据流增加审核状态数据存储部门泳道外部实体区分系统内外边界4.2 电商订单案例TFD阶段发现用户提交订单后需要选择支付方式微信/支付宝支付超时30分钟自动取消转化为DFD时增加支付网关外部实体创建D2 超时订单队列数据存储添加监控支付超时定时加工5. 工具链推荐这些年用过几十种工具这三个最顺手Visio适合传统企业符号库齐全但协作功能弱Draw.io免费神器GitHub同步是亮点Lucidchart实时协作体验最佳但需要网络导出时务必选择PNGSVG双格式PNG方便粘贴文档SVG便于后续修改。曾有个客户非要我们改三个月前的流程图幸好留了SVG文件十分钟就搞定变更。6. 进阶心法最近在做一个智慧医院项目时我把TFD和DFD玩出了新花样在TFD中用颜色区分常规流程和异常流程DFD里添加数据血缘标记比如用虚线箭头表示敏感数据流两者联动更新修改TFD的审批环节时DFD自动同步相关数据存储有次凌晨两点排查数据不一致问题正是这套方法帮我们快速定位到影像系统和HIS系统的接口字段映射错误。