先把父图里的那个加工圈出来
父图到子图的展开,本质上是把一个较粗的加工拆成多个更细的加工。你先不要急着看子图空缺,先在父图里找到被分解的加工,看看它和外部实体、数据存储之间有哪些输入和输出。
如果父图中加工 P 有两个输入、一个输出,那么子图展开后,在子图边界上也应当能看到这几个输入输出的对应关系。中间怎么拆、加工编号怎么细化,可以变化;但外部看到的输入输出边界要守住。
| 检查对象 | 要看什么 | 常见错误 |
|---|---|---|
| 父图加工 | 进入和离开该加工的数据流 | 只看子图,不回父图 |
| 子图边界 | 是否保留父图输入输出 | 子图凭空多出外部输入 |
| 外部实体 | 是否和父图边界一致 | 外部实体之间直接传数据 |
| 数据存储 | 是否通过加工读写 | 数据存储之间直接连线 |
平衡不是说图形长得一样
很多人误以为父图和子图平衡,就是箭头数量必须完全一样、名字必须逐字一样。实际做题时,名字可以更具体,内部加工也可以更多;关键是父图对外表现出来的输入输出,在子图中要能解释得通。
比如父图中“订单信息”进入加工,子图中可能拆成“订单基本信息”和“订单明细”,这不一定错,要看题干是否支持这种拆分。反过来,如果子图突然出现父图没有来源的“审批结果”,就要警惕不平衡。
老师式判断
先看父图:这个加工从外部拿了什么,又给外部什么。
再看子图:这些输入输出有没有在边界上出现。
最后看题干:空格名称尽量用题干原词,不要自己发明。
下午题填空怎么利用平衡原则
如果子图某条数据流空着,可以回父图找同方向、同业务含义的数据流。尤其是从外部实体进入系统、从系统输出给外部实体的数据流,父图通常已经给过暗示。
如果父图里有,而子图里找不到对应,就优先怀疑子图缺少某条数据流;如果子图里有一个父图完全没有来源的边界数据流,就要看它是否应该来自内部加工,而不是外部边界。
最容易丢分的地方
第一,外部实体之间直接传数据。DFD 里外部实体和外部实体之间不应绕过系统加工直接连线。第二,数据存储之间直接传数据。数据存储的读写通常要通过加工。第三,父图有输入输出,子图展开后边界没体现。
做 DFD 题时别只盯空格。先按业务读题,再按平衡原则校验,最后再填名称。这个顺序比直接猜空格稳得多。
相关题目解析
下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。
- 数据流图中的加工表示什么?数据流图 / 软件设计师数据流图
- 结构化设计中的变换分析主要用于什么场景?结构化设计 / 变换分析
- UML 时序图主要用来描述什么?UML / 时序图