考点频率 :★★★★☆(选择题常考,下午题偶尔结合DFD考查映射关系)
难度 :⭐⭐⭐
建议:重点掌握变换流和事务流的识别特征,以及各自映射为SC图的步骤
1️⃣ 什么是面向数据流的设计?
面向数据流的设计 是结构化设计方法中的核心内容。它回答的问题是:有了DFD(数据流图),怎么把它变成SC图(结构图)?
简单来说,就是根据数据在系统中的流动特征,决定程序模块应该怎么划分。
DFD中的数据流按形态可以分为两种:
| 类型 | 特征 | 映射方式 |
|---|---|---|
| 变换流 | 数据呈线性流动:输入 → 加工 → 输出 | 变换流映射 |
| 事务流 | 数据在某个节点根据条件分岔,走不同路径 | 事务流映射 |
一个大型系统的DFD中,可能同时包含变换流和事务流。通常先识别事务流,再对每个分支应用变换流映射。
2️⃣ 变换流映射
2.1 什么是变换流?
变换流 是指数据沿 "输入 → 变换(加工) → 输出" 的线性路径流动,整体呈直线型或流水线型结构。
外部实体 → 输入数据 → 加工A → 加工B → 输出数据 → 外部实体
识别方法:DFD中不存在明显的"事务中心"(即没有根据条件选择不同路径的加工),数据就是一路向前流,经过若干加工后输出结果。
举例:
- 工资计算系统:考勤数据 → 计算工资 → 工资条
- 数据统计系统:原始数据 → 数据清洗 → 统计分析 → 报表
- 计费系统:通话记录 → 计费规则计算 → 账单
2.2 变换流映射为SC图的步骤
把变换流DFD映射为SC图,本质上是 "三步定位、三类模块" :
第一步:在DFD中找到三个关键区域
| 区域 | 位置 | 内容 |
|---|---|---|
| 输入流(传入部分) | 数据流入主加工之前的部分 | 负责接收原始数据、进行初步校验和格式转换的加工 |
| 中心变换(主加工) | DFD中真正发生"转化"的加工 | 对输入数据进行核心业务处理 |
| 输出流(传出部分) | 主加工结束到数据输出之间的部分 | 负责对结果进行格式化和输出的加工 |
第二步:分别映射为三类SC模块
┌─────────────────┐
│ 主控模块 │ ← 调度整个流程
└────────┬────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ 输入模块 │ → │ 变换模块 │ → │ 输出模块 │
│ (传入) │ │ (中心) │ │ (传出) │
└───────────┘ └───────────┘ └───────────┘
举例:工资计算系统的DFD中,考勤数据输入→计算工资→生成工资条,映射为"输入模块→工资计算模块→输出模块"。
3️⃣ 事务流映射
3.1 什么是事务流?
事务流 是指数据在某个加工处根据条件或类型 ,选择不同的处理路径,整体呈分支结构(类似switch-case)。
┌─────────────────┐
│ 事务中心加工 │ ← 接收数据,判断类型
└────────┬────────┘
│
┌──────────┬─────────┼─────────┬──────────┐
▼ ▼ ▼ ▼ ▼
┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
│动作A │ │动作B │ │动作C │ │动作D │ │动作E │
└──────┘ └──────┘ └──────┘ └──────┘ └──────┘
识别方法:DFD中存在一个加工,它接收输入数据后,根据某个条件(如订单类型、用户等级、支付方式)将数据分发到不同的下游加工。
举例:
- 订单处理:根据订单类型(普通/加急/国际)走不同流程
- 支付系统:根据支付方式(支付宝/微信/银联)调用不同接口
- 审批流程:根据金额大小走不同审批路径
3.2 事务流映射为SC图的步骤
第一步:在DFD中找到事务中心
事务中心通常是一个"判断型加工"------输入数据进来后,根据某个条件变量决定走哪条分支。在DFD中通常表现为一个加工有多条输出流,每条流向不同的下游加工。
第二步:将DFD映射为SC图
┌─────────────────────┐
│ 主控模块 │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ 事务调度模块 │ ← 对应DFD中的事务中心
└──────────┬──────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ 动作模块1 │ │ 动作模块2 │ │ 动作模块3 │
│ (普通订单)│ │ (加急订单)│ │ (国际订单)│
└───────────┘ └───────────┘ └───────────┘
事务流与变换流的组合 :
在实际项目中,事务流的每个动作分支内部,往往又包含完整的变换流结构(输入→处理→输出)。所以映射时通常是先找事务中心,把大的分支结构定下来,再在每个分支内部做变换流映射。
4️⃣ 变换流 vs 事务流
| 对比项 | 变换流 | 事务流 |
|---|---|---|
| 数据流向 | 线性(直线型) | 分支(树型) |
| 核心特征 | 输入→加工→输出 | 根据条件选择路径 |
| DFD中特征 | 数据一路向前,无分岔 | 存在"事务中心"加工 |
| 映射产出 | 输入模块+变换模块+输出模块 | 调度模块+多个动作模块 |
| 典型场景 | 批处理、数据转换、报表生成 | 订单分流、支付路由、审批流转 |
5️⃣ 经典例题
例题1:某DFD中,数据从"客户信息"经"验证身份"加工后进入"处理订单"加工,再经"生成回执"加工输出给客户。数据流整体呈线性路径。这种数据流类型属于( ),映射为SC图时,"处理订单"应映射为( )模块。
A. 变换流;输出模块
B. 事务流;变换模块
C. 变换流;变换模块
D. 事务流;输出模块
解析 :数据呈线性流动(客户信息→验证身份→处理订单→生成回执→客户),属于变换流 。"处理订单"是数据真正发生转化和核心计算的位置,属于中心变换,应映射为变换模块 。选 C。
例题2:某订单管理系统中,DFD中有一个加工"订单分类",它根据订单类型(普通/加急/国际)将订单分发到三个不同的下游加工。这种数据流类型属于( ),映射为SC图时需要先确定( )。
A. 变换流;事务中心
B. 事务流;事务中心
C. 变换流;中心变换
D. 事务流;中心变换
解析 :数据在"订单分类"处根据条件走不同分支路径,属于事务流 。映射时需要先定位事务中心(即"订单分类"加工),再为每个分支建立动作模块。选 B。
6️⃣ 记忆口诀
变换流线性走,事务流岔路分。
变换找中心,事务找调度。
输入变换输出三模块,调度加动作分支分。
7️⃣ 小测验(评论区对答案)
某DFD中,数据从"原始数据"经过"数据清洗"加工,再进入"统计分析"加工,最后经过"报表生成"输出。以下说法正确的是( )。
A. 该DFD属于事务流,"统计分析"是事务中心
B. 该DFD属于变换流,"统计分析"是中心变换
C. 该DFD属于事务流,"数据清洗"是事务中心
D. 该DFD属于变换流,"报表生成"是中心变换
🔔 本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容
#软考中级 #软件设计师 #变换流 #事务流 #结构化设计 #软件工程