【软件工程】面向数据流的设计方法(变换流/事务流)

考点频率 :★★★★☆(选择题常考,下午题偶尔结合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属于变换流,"报表生成"是中心变换

🔔 本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容

#软考中级 #软件设计师 #变换流 #事务流 #结构化设计 #软件工程

相关推荐
wabs66616 小时前
关于图论【深度优先搜索的理论基础】
算法·深度优先·图论
zhangrelay17 小时前
笔记本轻量高品质延寿工具完整分系统清单
运维·笔记·学习
巴巴媛66617 小时前
STM32学习笔记【38.DHT11实验】
笔记·stm32·学习
先吃饱再说17 小时前
LeetCode 101. 对称二叉树
算法
是Dream呀17 小时前
人眼看不出的伪造,AI如何识别?实测合合信息跨模态鉴伪与去反光技术
算法
caimouse17 小时前
MM 学习笔记 01:miarm.h 核心头文件分析
笔记·学习·reactos
QN1幻化引擎17 小时前
SFA 信号场注意力:用8KB参数换248x KV Cache压缩,边缘设备也能跑长序列
人工智能·算法·gitee·gitlab
段一凡-华北理工大学18 小时前
向量数据库实战:选型、调优与落地~系列文章03:向量相似度算法全解:余弦、欧氏、内积,到底该用哪个?
大数据·数据库·人工智能·算法·机器学习·向量相似度·高炉炼铁
cjr_xyi19 小时前
AT1202Contest_c binarydigit 题解
c语言·c++·算法
疯狂打码的少年19 小时前
【软件工程】软件测试阶段:单元测试与集成测试(高频对比考点)
笔记·单元测试·集成测试·软件工程