S03 · 结构化分析:DFD 与数据字典


第 3 周|主打科目:案例分析第 1 题(必做,必须稳拿)|对应知识域:系统分析与设计(SA/SD)、软件工程|主打基本问题:Q1(对需求做一致性检验)|本阶段产出:分层 DFD(上下文图 + 1 层图)+ 数据字典

项目宪法见 00-课程总纲.md;案例选做策略与”第 1 题必做”原则见 02-考点地图.md 第二节。

一、情境开场(Hook)

你把画好的第一版流程图摊在会议室桌上,准备讲半小时。结果三分钟就被打断了。

生产部长指着图上一个方框问:”这个’质量异常判定’是谁干的?是系统自动判,还是质检员判?”你说”系统”。他立刻摇头:”不可能。同样的参数,A 班判合格,B 班判不合格——这不是规则问题,是经验问题,机器判不了。”你忽然意识到,你画的那张图里,有一个加工既没有明确的输入,也没有明确的输出规则——你默认了”异常”是系统自己知道的东西。

质量部长接着指出第二处:”你的图上,检验结果从’质检员’直接进了’检验记录表’,中间没有加工。那谁来验证这个数据?没经过校验就入库的数据,追溯链条是不可信的。”

设备部长没看图,只问一句:”你这张图上,’设备状态’存在哪儿?我那 180 台设备里有 46 台夜里没有网络,采上来的数据是先落本地还是直接丢了?”——你在图上根本没画这个分支。

散会后你重新审视那张图,发现真正的问题不是画错了三条线,而是:你画的不是系统,是你脑子里想象的那个理想流程。 加工没有编号、数据流没有命名、存储与实体之间直接连线、有的加工只有输入没有输出——这些在纸面上看不出来,但落到代码里就是黑洞和奇迹。

于是本周的问题来了:在需求还没被写对的情况下,你凭什么保证你画出来的这张图,和用户心里的那件事是同一件? 数据流图就是回答这个问题的工具——它不画控制、不画实物、不画时序,只画数据在哪里被加工

二、为什么学这一周(Where & Why)

  1. DFD 四元素与画图硬规则:综合知识 3–5 题,几乎每年必考”下列 DFD 中正确的是”或”图中有几处错误”。这是纯规则题,把 5 条硬规则背熟就是白送的分。
  2. 分层 DFD 与父子图平衡:综合知识 2–3 题,且是案例第 1 题”补充缺失数据流”的唯一解题方法。数据守恒是第 1 题的核心采分点,通常值 6–10 分。
  3. 数据字典的符号与条目类型:综合知识 2–3 题,案例常要求”用数据字典定义某条数据流”(约 5 分)。=+[|]{}() 五个符号必须会用会认。
  4. 加工逻辑的三种描述工具:综合知识 2–3 题,案例”某加工逻辑复杂,应选哪种工具”是固定问法。判定表与判定树的适用边界年年考。
  5. 耦合与内聚的七级排序:综合知识每年必考 1–2 题,是本章性价比最高的死记硬背点;案例”模块划分不合理”也要求用这两个术语说明。
  6. 第 1 题(必做)的建模套路:直接决定案例能否稳拿 20+ 分。按 02-考点地图.md,第 1 题是可以练到几乎不错的一题;放弃它,你就要在剩下 4 题里多拿一题的分,难度翻倍。

三、核心讲义(Equip)

3.1 DFD 的四种元素与两种符号体系

定义:数据流图(Data Flow Diagram, DFD)从数据传递与加工的角度,图形化刻画系统的逻辑功能、数据在系统内的逻辑流向与逻辑变换。它是逻辑模型——不描述物理实现、不描述控制流、不描述时序。

元素 含义 Gane-Sarson 符号 Yourdon 符号 命名规则
外部实体(External Entity / Source-Sink) 系统之外的人、组织或其他系统,数据的源点或终点 矩形(带阴影) 正方形 名词:”质检员””MES 系统”
加工 / 处理(Process) 对数据进行的变换,即”做什么” 圆角矩形 圆 / 椭圆 动宾短语:”生成追溯报告”;禁止”处理数据”这类空词
数据流(Data Flow) 一组成分固定的数据的流向 带箭头的直线 名词:”报工单”;禁止无名数据流
数据存储(Data Store / File) 暂存或持久保存的数据,”静止”的数据 开口矩形(右端开口) 两条平行线 名词(表名):”检验记录表”

为什么需要它:四元素的形状与命名规则是考试第一道门槛。把”加工”画成矩形、把”外部实体”画成圆形——符号错了,整题采分点全部落空。

记忆口诀实体是方框、加工是圆角、存储是开口、流是箭头线;命名上”加工动宾、其余名词“。

真题级短例子:题目给一张图问”共有几处错误”。四类名错:① 加工命名”数据处理”(空泛);② 数据流线上没写名字;③ 外部实体命名”录入”(动词);④ 数据存储命名”存储”(空泛)。凡命名空泛,一律算错。

3.2 画图硬规则:五条铁律 + 三条补充

# 规则 违反的症状 为什么
1 数据流的两个端点中,至少有一个必须是加工 实体↔实体、存储↔存储、实体↔存储 直接连线 数据只有经加工才会变化;不经加工的数据移动是货物搬运,不是信息处理
2 加工必须有输入,也必须有输出 只有输入 = 黑洞(Black Hole);只有输出 = 奇迹(Miracle) 无输出的加工不产生价值;无输入的加工凭空造数据
3 父子图必须保持平衡(数据守恒) 父图某加工有输入流 A,子图中找不到 A 分解不改变接口,只展开内部
4 每个加工有唯一编号,子图编号继承父图 同一图上有两个”加工 2” 编号是追溯与平衡校验的索引
5 数据流不表示控制流、不表示实物、不表示触发条件 画”当库存不足时触发采购” 那是状态图与控制流的事;DFD 只答”数据去哪、被谁加工”

三条补充规则:① 同一条数据流不能重复出现表示不同内容,同名数据流必须是同一数据;② 一条数据流可以流向多个加工(同一份数据被多方使用,合法的”分支”),但不能把一份数据拆成两条不同的数据流;③ 加工分解粒度以 3–7 个子加工为宜(7±2 原则),只分解出 1 个子加工等于没分解。

判定步骤(拿到 DFD 找错误的标准扫描顺序):① 扫元素——四元素符号与命名是否规范,外部实体是否与系统有交互;② 扫规则 1——有无实体↔实体、存储↔存储、实体↔存储 直连;③ 扫规则 2——逐个数加工的输入输出流,找黑洞与奇迹;④ 扫规则 3——父图与子图逐条比对,找不平衡;⑤ 扫规则 5——有无混入控制流、实物(物料)流。

真题级短例子:”某 DFD 中’客户’与’订单表’之间有一条从客户直接指向订单表的数据流。”——违反规则 1,必须在中间插入加工(如”登记订单”)。

3.3 分层 DFD:从上下文图到二级分解

定义:分层 DFD(Hierarchical DFD)自顶向下逐层分解,把复杂系统化为可理解的若干层。

层级 名称 内容 本项目示例
顶层 上下文图 / 语境图(Context Diagram) 只有 1 个加工代表整个系统,周边是全部外部实体 加工”生产质量一体化系统”;实体:生产部/质检员/设备部/现有 MES/ERP
第一层 1 层图(部分教材称 0 层图) 把顶层加工分解为若干主要加工 1 采集报工数据 / 2 检验管理 / 3 追溯查询 / 4 设备状态监控 / 5 报表与预警
第二层 2 层图 对 1 层中的某个复杂加工再分解 加工 3 分解为 3.1 解析追溯请求 / 3.2 检索批次链条 / 3.3 组装追溯报告

术语说明:软考不同教材对”顶层图 / 0 层图 / 1 层图”叫法混用。考试时以图上编号和加工数量为准:只有一个加工的那层 = 上下文图 / 顶层图;其余按编号 11.1 判断层级,不要在名词上纠结。

编号规则:顶层加工编号通常为 0;1 层为 1, 2, 3 …;2 层为 1.1, 1.2 …子图编号 = 父加工编号 + “.” + 序号)。

父子图平衡(数据守恒)校验五步:① 取父图待分解的加工 P,列出其全部输入与输出数据流;② 打开 P 的子图,列出所有子加工与外部(外部实体、数据存储)之间的数据流;③ 逐个比对——子图对外的数据流集合应等于父图 P 的数据流集合(数量与名称都要对);④ 父图 P 有输入 A 而子图没有 → 子图缺失数据流 A;反之 → 子图多出无来源的流;⑤ 特例:若父图 P 与某数据存储之间有流,子图中该存储被多个子加工共享,仍按集合相等校验——共享存储不违反平衡。

本项目上下文图的外部实体清单(S03 交付物直接用):生产部(工段长)、操作工(报工)、质检员、设备部、ERP 系统、现有 MES 系统、质量监管平台。注意:现有 MES 与 ERP 是外部实体,不是本系统的加工。

3.4 数据字典:符号、条目与加工逻辑

定义:数据字典(Data Dictionary, DD)是关于 DFD 中所有元素的定义集合,与 DFD 配合构成结构化分析的核心模型——DFD 画结构,数据字典写语义

五个符号(必背)

符号 含义 例子 说明
= 定义为 / 由…组成 报工单 = 工单号 + 工位号 + 数量 左边条目名,右边组成
+ 与(顺序连接) 订单 = 客户信息 + 商品清单 + 金额 各成分按顺序出现
`[ ]` 或(选择其一) `检验结论 = [合格
{ } 重复 订单明细 = {商品行}1-50 上下限写在右下
( ) 可选 报工单 = 工单号 + (备注) 可出现 0 或 1 次
@ 基本数据元素(不可再分) 工单号 = @ 部分教材使用

条目类型(数据字典登记什么):① 数据元素(最小单位,定义名称、类型、长度、取值范围);② 数据结构(若干数据元素/结构的组合);③ 数据流(来源、去向、组成、流量,如”报工单:操作工 → 加工 1,峰值 300 条/分钟”);④ 数据存储(组成、关键字、存取频率、数据量);⑤ 加工逻辑(描述加工怎么做);⑥ 外部实体通常只登记名称与说明。

真题级短例子——用数据字典定义”追溯请求”:追溯请求 = 批次号 + 追溯方向 + (追溯深度)追溯方向 = [正向|反向|双向]追溯深度 = [1|2|3|全部]批次号 = 4{数字}4-12(4 到 12 位数字)。

3.5 加工逻辑的三种描述工具(年年考边界)

工具 适用场景 优点 缺点
结构化语言(Structured Language) 顺序、选择、循环的一般处理逻辑 简洁、可嵌套、与代码接近,无组合爆炸 条件组合多时嵌套深、可读性差
判定表(Decision Table) 条件多、条件组合多、动作复杂,需穷举验证有无遗漏 列出全部组合,易发现逻辑漏洞;可化简 条件超 4 个时表格膨胀
判定树(Decision Tree) 条件较少(一般 ≤ 4)、每条件取值少、判断顺序清晰 直观、易读、易与业务方沟通 组合多时树枝爆炸;不易表达循环

判定表四区结构条件桩(左上,列全部条件)、条件项(右上,各条件取值组合,每列一种组合)、动作桩(左下,列全部动作)、动作项(右下,每组合执行哪些动作,打 ×)。化简规则动作项完全相同、且条件项中仅有一个条件取值不同的两列可合并,合并后该条件记为 (无关)。

本项目判定表实例(质量异常等级判定,为便于演示化简,此处仅列”参数超差、客户等级”两个条件)

1 2 3 4
参数超差 Y Y N N
客户等级为战略客户 Y N Y N
放行 × ×
冻结批次并通知质量部长 × ×
记录留痕待评审 ×

化简演示:第 1、2 列动作项完全相同(都是”冻结批次并通知质量部长”),且条件项中仅”客户等级”一个条件取值不同 → 可合并为一列,合并后该条件记为 :**”参数超差 = Y,客户等级 = — → 冻结批次并通知质量部长”
反之,第 3、4 列虽然都有”放行”,但第 3 列还执行”记录留痕待评审”、第 4 列不执行,
动作项并不完全相同,故不能合并**——化简必须以”动作项完全相同、且仅一个条件取值不同”为前提,缺一不可。

注意:问”某加工含 6 个条件、每条件 2 种取值,要求不遗漏任何组合”→ 选判定表(2⁶ = 64 种组合,结构化语言必然遗漏);问”条件仅 3 个且判断顺序明显,需与业务方快速确认”→ 选判定树

3.6 状态图、E-R 基础与结构化设计的耦合内聚

状态转换图(State Transition Diagram, STD):描述对象或系统在事件驱动下状态的变化。四要素:状态(圆角矩形)、初态(实心圆 ●)、终态(同心圆 ◎)、迁移(箭头,标注 事件[监护条件]/动作)。与 DFD 的分工:DFD 是静态的功能分解,STD 是动态的行为模型;本项目中”工单状态 = 已下发 → 生产中 → 待检 → 已入库/已报废”必须用 STD 表达,画进 DFD 就是错误E-R 图基础(S05 详讲,本周只求能认)实体(矩形)、属性(椭圆)、联系(菱形);三种基数 1:1(车间—车间主任)、1:n(批次—检验记录)、m:n(零件—供应商),判定方法是从两端各数一遍“这边 1 个对应那边几个”。结构化设计(Structured Design, SD)的两种数据流类型变换型(Transform)——“输入通路 → 变换中心 → 输出通路”的线性结构,映射为”输入模块 + 中心变换模块 + 输出模块”;事务型(Transaction)——数据流到达事务中心后按类型选择若干活动通路之一,映射为”事务调度模块 + 若干活动模块”。实际系统常为混合型(上层事务型、分支内变换型)。

耦合七级(由低到高,高频必背)

级别 名称 含义 本项目例子
1 最低 非直接耦合 两模块无直接联系,仅由上级调用 追溯查询模块与设备台账模块
2 数据耦合 通过参数传递简单数据项 查询批次(批次号)
3 标记耦合 数据结构/记录但只用其中一部分 传入整个”工单对象”只用批次号
4 控制耦合 控制信息(开关、标志)决定对方行为 flag=1 决定正向还是反向查询
5 外部耦合 通过外部环境联系(共享 I/O、通信协议、外部约束) 多模块依赖同一套 OPC 通信约定
6 公共耦合 多模块访问同一公共数据区/全局变量 多模块读写同一张全局配置表
7 最高 内容耦合 直接进入另一模块内部(改代码、访内部数据、非正常入口) 直接跳转进入另一模块内部语句

黄金原则追求高内聚、低耦合。”某模块内各处理元素共同完成一个功能且缺一不可” → 功能内聚;”两模块通过参数表传递记录型数据” → 标记耦合

内聚七级(由低到高,高频必背)

级别 名称 含义 反例
1 最低 偶然(巧合)内聚 成分毫无关系,只是碰巧放一起 “工具类”里堆了日期、加密、日志
2 逻辑内聚 成分逻辑上同类,由参数决定执行哪一个 输出(type),type 决定报表还是图表
3 时间内聚 成分在同一时间执行 系统初始化(建连接、加载配置、清缓存)
4 过程内聚 成分按特定次序执行,但操作的数据未必相关 “读工单 → 打印工单 → 归档工单”
5 通信内聚 成分操作同一数据集(同一输入或同一输出) 都读写”检验记录表”的一组操作
6 顺序内聚 顺序执行,且上一步输出是下一步输入 “解析请求 → 检索链条 → 组装报告”
7 最高 功能内聚 所有成分共同完成单一功能,缺一不可 “计算批次追溯链条”

黄金原则追求高内聚、低耦合。典型问法:”某模块内各处理元素共同完成一个功能且缺一不可,内聚类型是?” → 功能内聚;”两模块通过参数表传递记录型数据” → 标记耦合

四、典型考法

4.1 综合知识怎么考

题 1:下列关于数据流图的说法,正确的是(  )。 A. 数据流可以存在于两个外部实体之间 B. 数据存储之间可以直接存在数据流 C. 每条数据流至少有一端是加工 D. 加工可以只有输入数据流而没有输出数据流
答案:C。解析:这是铁律 1。A、B 违反”数据流至少有一端是加工”;D 是黑洞,加工必须既有输入又有输出。
题 2:关于父图与子图的平衡,正确的是(  )。 A. 子图的加工数量必须与父图相同 B. 子图对外的数据流集合必须与父图对应加工的输入输出数据流一致 C. 子图必须画出父图中所有数据存储的内部结构 D. 父图与子图之间不需要保持编号的继承关系
答案:B。解析:数据守恒即”分解不改变接口”。A 错在加工数量必然增加;C 错在数据存储不必在每个子图都出现;D 错在编号必须继承(11.1)。
题 3:某加工的处理逻辑含 5 个判断条件,每条件 2 种取值,要求穷举所有组合并检查有无遗漏。最适宜的描述工具是(  )。 A. 结构化语言 B. 判定表 C. 判定树 D. 程序流程图
答案:B。解析:条件多、组合多(2⁵ = 32 种)且要求穷举与查漏,正是判定表的适用场景。判定树在组合多时树枝爆炸;结构化语言嵌套过深易遗漏;程序流程图不属需求阶段的加工逻辑描述工具。
题 4:模块 A 调用模块 B 时,将”员工信息记录”整体作为参数传递给 B,而 B 只使用了其中”员工编号”字段。A 与 B 之间的耦合类型是(  )。 A. 数据耦合 B. 标记耦合 C. 控制耦合 D. 公共耦合
答案:B。解析:传递数据结构(记录)但只用其中一部分 = 标记耦合;只传”员工编号”这一简单数据项才是数据耦合。看传的是”数据项”还是”数据结构”,这是本题最经典的陷阱。
题 5:下列模块内聚类型中,内聚程度
最高
的是(  )。 A. 通信内聚 B. 顺序内聚 C. 逻辑内聚 D. 时间内聚
答案:B。解析:由低到高为 偶然 → 逻辑 → 时间 → 过程 → 通信 → 顺序 → 功能,选项中顺序内聚最高。

4.2 案例分析怎么考

【案例题】(共 25 分)

承接本项目。某系统分析师绘制了”生产质量一体化系统”的顶层(上下文)图1 层数据流图(以清单形式给出):
外部实体:操作工、质检员、生产部、设备部、ERP 系统、现有 MES 系统 | 1 层加工:1 报工数据采集、2 检验管理、3 追溯查询、4 设备状态监控 | 数据存储:D1 报工记录表、D2 检验记录表、D3 批次档案表、D4 设备台账
数据流清单:① 操作工 → 加工 1:报工数据;② 加工 1 → D1:报工记录;③ D1 → 加工 3:报工记录;④ 加工 2 → D2:检验结果;⑤ 质检员 → 加工 2:检验项录入;⑥ 生产部 → 加工 3:追溯请求;⑦ 加工 3 → 生产部:追溯报告;⑧ 现有 MES 系统 → D3:历史批次数据;⑨ 设备部 → 加工 4:设备台账维护请求;⑩ 加工 4 → D4:设备台账信息;⑪ D4 → 加工 3:设备状态;⑫ 加工 2 → 加工 4:检验异常通知
顶层图中,外部实体”生产部”与系统之间有两条数据流:向系统提交”追溯请求”,从系统接收”追溯报告”。

【问题 1】(9 分) 指出上述 1 层数据流图中存在的错误并说明理由(至少 4 处)。 【问题 2】(8 分) 指出图中可能缺失的数据流并说明理由(至少 3 条),同时说明你用什么方法发现的。 【问题 3】(8 分) 加工”2 检验管理”的检验结论判定涉及参数超差程度、客户等级、历史合格率、是否关键工序 4 个条件。请说明应采用哪种加工逻辑描述工具、说明理由,并给出该工具的组成结构。

采分点拆解:问题 1——每指出一处错误并说明理由得 2–3 分,至少 4 处给满 9 分,只写”错误”不写理由扣一半分,必须引用规则名称。问题 2——每指出一条缺失流并说明理由得 2 分(至少 3 条给 6 分),说明发现方法(父子图平衡 / 数据守恒)得 2 分。问题 3——工具选择 2 分,理由 3 分(条件多、组合多、需穷举查漏各 1 分),组成结构 4 分(条件桩、条件项、动作桩、动作项,缺一项扣 1 分)。理由与工具不匹配最多 2 分。

标准作答范例

【问题 1】(列出 5 处,答 4 处即可,每点 2 分,另 1 分条理性分)

  1. 数据流 ⑧ 错误现有 MES 系统 → D3外部实体与数据存储直接相连,中间无加工,违反”数据流两个端点至少有一个必须是加工“。应插入加工”5 历史数据迁移”,由其读取现有 MES 数据经验证、清洗、映射后写入 D3。
  2. 加工 4 缺少对外部实体的输出:加工 4”设备状态监控”接收了设备部维护请求(⑨)与检验异常通知(⑫),向 D4 输出台账信息(⑩),但设备部发出请求后收不到任何响应,业务上不成立。应补充”加工 4 → 设备部:设备状态告警/监控结果”。
  3. 加工 3 缺少向数据存储的输出:追溯查询向生产部输出报告,却没有任何写入,导致”谁在何时查了什么”无法审计;质量追溯系统本身要求查询可审计,应补充”加工 3 → D5 查询审计日志:追溯查询记录”。
  4. 加工 2 缺少关键输入:加工 2”检验管理”只从质检员接收检验项录入,但检验判定必须依据工艺标准与检验规程,图中缺少”加工 2 ← D6 工艺标准表:检验规程”这一输入流。
  5. 顶层图与 1 层图需核对实体覆盖:顶层图中每个外部实体在 1 层图中都必须有对应数据流;若顶层图含”质量监管平台”,则 1 层图缺失相应流——这是父子图平衡检查的必查项

【问题 2】缺失的数据流(每条 2 分)

# 缺失的数据流 理由
1 加工 1 → 生产部(或操作工):报工异常反馈 报工数据与工单不符(超产、重复报工)必须反馈,否则操作工不知道是否提交成功
2 加工 2 → D3 批次档案表:检验结论 检验结论是批次档案的核心组成;图中 D3 只有来自现有 MES 的历史数据(且该连线本身错误),本期检验结论无处写入,追溯链条在本期断裂
3 加工 3 → 质检员:追溯报告 质量部是追溯功能的核心用户,图中报告只流向生产部,与”质量部要求完整追溯”的业务目标矛盾
4 D3 批次档案表 → 加工 3:批次档案数据 加工 3 要组装追溯链条必须读取批次档案;图中加工 3 只读 D1、D4,输入不足以产生其输出(数据守恒不成立)

发现方法(2 分):采用数据守恒(父子图平衡)逐加工核对法——对每个加工列出全部输入数据流,判断”这些输入是否足以产生它的输出数据流”;再检查父图(顶层图)中每个外部实体的数据流是否都在子图被覆盖。二者结合即可系统性发现缺失,避免靠直觉找错

【问题 3】

  1. 应采用判定表(Decision Table)。
  2. 理由:该加工涉及 4 个判断条件条件多且存在组合,用结构化语言描述会产生多层嵌套、可读性差且极易遗漏分支;检验结论直接决定批次是否放行,是质量追溯的关键控制点,必须穷举所有条件组合以验证有无逻辑漏洞(这是判定表相对其他工具的核心优势);判定表可化简(动作项相同且仅一个条件取值不同的列可合并),得到的规则集可直接指导测试用例设计,保证判定逻辑可验证。不选判定树:4 个条件组合数较多,会出现树枝爆炸不选结构化语言:无法保证组合穷举。
  3. 判定表四区结构条件桩(左上)——列全部条件,如”参数超差程度””客户等级””历史合格率””是否关键工序”;条件项(右上)——各条件取值的全部组合,每列一种组合;动作桩(左下)——列全部可能动作,如”直接放行””记录留痕待评审””冻结批次并通知质量部长””触发不合格品处理流程”;动作项(右下)——标明每种组合下执行哪些动作(打 ×)。编写完成后化简:动作项完全相同、且条件项中仅有一个条件取值不同的列合并,合并处记

五、易错点(Rethink)

错误认知 为什么错 正确理解
“两个外部实体之间可以直接画数据流” 数据不经加工不会变化 数据流至少有一端必须是加工;实体间、存储间、实体与存储间均不能直连(数据同步也必须经一个加工)
“加工只要连上线就说明有输入和输出” 没看方向 必须逐个数:只有输入 = 黑洞,只有输出 = 奇迹,二者都是错误
“父图和子图只要加工对得上就算平衡” 平衡指数据流,不是加工数量 平衡 = 数据守恒:子图对外的数据流集合 = 父图该加工的数据流集合
“DFD 里可以画’当库存不足时触发采购’” 那是控制流 DFD 不画控制、不画时序、不画触发条件、不画物料搬运;这些属状态转换图
“数据流线上不写名字也能看懂” 命名是硬性要求 禁止无名数据流;加工用动宾短语,其余用名词
“判定树比判定表直观,所以优先用判定树” 忽略组合爆炸 条件多、组合多 → 判定表条件少(≤4)、顺序清晰 → 判定树
“判定表不能化简” 化简是标准步骤 动作相同且仅一个条件不同的两列可合并,合并处记
“传对象参数就是数据耦合” 混淆数据项与数据结构 简单数据项 = 数据耦合;传数据结构/记录只用一部分 = 标记耦合
“内聚都要做到功能内聚” 不切实际且成本高 目标是高内聚低耦合,通信/顺序内聚已可接受,偶然与逻辑内聚必须避免

六、GRASPS 推进(Experience)

本周五前,往交付物「业务需求规格说明书」里加三块内容,总计 1200–1600 字 + 两张图

  1. 分层 DFD(两张)上下文图——1 个加工”生产质量一体化系统”+ 7 个外部实体(操作工、质检员、生产部、设备部、ERP、现有 MES、质量监管平台),每条流必须命名,不少于 10 条。1 层图——分解为 4–6 个加工(建议 1 报工数据采集、2 检验管理、3 追溯查询、4 设备状态监控、5 历史数据迁移),2–4 个数据存储,加工编号连续,数据流不少于 15 条。画完后自己跑一遍 3.2 五条铁律 + 3.3 平衡校验,把检查过程写成 200 字”自检记录”。
  2. 数据字典(约 600 字):定义不少于 8 个条目,必须含 2 个数据流(报工数据、追溯请求)、2 个数据存储(检验记录表、批次档案表,要写关键字)、2 个数据结构2 个数据元素(要写类型、长度、取值范围);至少 1 个条目用 [|]至少 1 个条目用 {} 并标注上下限
  3. 判定表一张(约 300 字):为”质量异常等级判定”写一张完整判定表(4 个条件),做一次化简并写出化简后的规则数。

验收标准:两张 DFD 零违反五条铁律——请同伴按 3.2 扫描顺序逐条检查找不到错;上下文图与 1 层图数据守恒(顶层图每条流都能在 1 层图找到对应,1 层图对外的流不比顶层图多一条);数据字典中没有未定义的基本元素(凡未再分解的都标 @ 并写明类型长度);判定表化简前后动作数一致(化简不能改变语义);把这两张图拿给”生产部长”看,他能指出至少一个业务问题——能被业务方挑出毛病的图,才是真在描述业务

七、自测

  1. 数据流图中,表示”加工”的图形通常是(  )。 A. 矩形 B. 圆角矩形(或圆) C. 开口矩形 D. 箭头线
  2. 符合 DFD 画图规则的是(  )。 A. 外部实体之间可以有数据流 B. 数据存储之间可以有数据流 C. 加工与加工之间可以有数据流 D. 外部实体与数据存储之间可以有数据流
  3. 某加工只有输入数据流而没有输出数据流,该错误称为(  )。 A. 奇迹 B. 黑洞 C. 数据不平衡 D. 标记耦合
  4. 父子图平衡指的是(  )。 A. 子图加工数量与父图相同 B. 子图与父图的数据流保持一致(数据守恒) C. 子图必须包含父图所有数据存储 D. 子图编号必须与父图连续
  5. 数据字典中符号 { } 表示(  )。 A. 可选 B. 重复 C. 选择 D. 定义为
  6. 数据字典的”加工逻辑”条目通常不包括(  )。 A. 结构化语言 B. 判定表 C. 判定树 D. 程序流程图
  7. 下列耦合类型中,耦合度最低的是(  )。 A. 数据耦合 B. 非直接耦合 C. 标记耦合 D. 公共耦合
  8. 模块内各成分”顺序执行,且前一个的输出是后一个的输入”,内聚类型为(  )。 A. 过程内聚 B. 通信内聚 C. 顺序内聚 D. 功能内聚
  9. 状态转换图中,终态通常用(  )表示。 A. 实心圆 B. 同心圆 C. 圆角矩形 D. 菱形
  10. 结构化设计中,”输入通路 → 变换中心 → 输出通路”的数据流结构属于(  )。 A. 变换型 B. 事务型 C. 混合型 D. 层次型
题号 1 2 3 4 5
答案 B C B B B
一句话解析 加工 = 圆角矩形(Gane-Sarson)或圆(Yourdon) 只有”至少一端是加工”合法;加工↔加工合法,其余三种直连均非法 只有输入 = 黑洞;只有输出 = 奇迹 平衡 = 数据守恒,指数据流名称与数量一致 { } 重复;( ) 可选;`[
题号 6 7 8 9 10
答案 D B C B A
一句话解析 加工逻辑三工具:结构化语言、判定表、判定树;流程图属设计/实现阶段 由低到高:非直接 → 数据 → 标记 → 控制 → 外部 → 公共 → 内容 顺序内聚强调输出作为下一步输入;过程内聚只强调次序 初态实心圆 ●,终态同心圆 ◎,标注”事件[条件]/动作” 变换型 = 输入 → 变换中心 → 输出;事务型 = 事务中心选择通路

八、分档任务(Tailor)

  • 保底 45:背熟 3.2 五条铁律、3.3 平衡校验五步、3.6 耦合内聚两张排序表(排序表必须能默写完整顺序);完成 4.1 五题与自测十题。
  • 冲 60:完成 GRASPS 两张 DFD + 8 条数据字典 + 1 张判定表;案例 4.2 的【问题 1】【问题 2】手写完整作答,用 3.2 扫描顺序给自己打分;把”数据守恒逐加工核对法”练到 8 分钟内扫完一张 1 层图。
  • 冲 70:把本项目换为政务审批场景重画上下文图与 1 层图;对 1 层图的”3 追溯查询”做二级分解,画出 2 层图并校验平衡;自命题一道”补充缺失数据流”的案例题(含 4 处错误设计)并写出采分点。

九、本阶段回答基本问题

Q1(续):你已经拿到一堆需求了,凭什么说它们是自洽的、完整的?

第一,DFD 的硬规则不是绘图规范,是”需求完整性”的检查清单。 一个只有输入没有输出的加工(黑洞),业务上等价于一件事——你说你要做这件事,却说不出它的产出是什么;外部实体与数据存储直连,等价于”数据不经校验就入库”,这正是质量部长当场指出的问题。每一条被违反的规则背后都对应一个真实的需求漏洞,这也是案例第 1 题能靠规则稳拿分的原因:它不是画图题,是逻辑检查题。

第二,数据守恒是唯一能证明”分解没丢东西”的方法。 需求可以被分解成一百个用例,但分解本身会引入丢失。父子图平衡要求子图对外的每条数据流都能在父图找到来源,其实质是:分解只展开内部,绝不改变接口。 你在 1 层图发现”追溯查询”缺少来自批次档案表的输入,这个发现不是偶然看出来的,是逐加工核对”输入是否足以产生输出”算出来的。可验证性在需求阶段的落地形式,就是这个核对过程。

第三,DFD + 数据字典 + 状态图必须成套使用,缺一不可。 DFD 说”数据去哪、被谁加工”,数据字典说”这个数据到底是什么”,状态图说”系统处在什么状态、被什么事件改变”。只画 DFD 不写数据字典,等于给了骨架不给语义——“追溯请求”里有没有”追溯深度”字段,图上永远看不出来。这也解释了加工逻辑必须有独立描述工具:当一条业务规则涉及 4 个条件的 16 种组合时,任何自然语言都会漏,只有判定表能穷举。

回到 Q1 的完整答案:需求”对不对”不靠业务方签字,靠三重检验——可验证性、可追溯性、一致性。 S02 解决前两重,S03 给你第三重的工具。至于这些模型在面向对象视角下长成什么样,是 S04 的事;模型最终落成什么表结构,是 S05 要正面回答的 Q3


文章作者: v
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 v !
  目录