软件设计师——12 案例分析专题-数据流图
1 考点分析
-
根据考试大纲,数据流图已经成为案例分析的固定试题一,占15分,主要考查补充外部实体、补充数据存储、补充缺失数据流等;
-
数据流图中的基本概念:求数据流图的基础,具体有数据流图的组成,数据流图的分层,数据流图的平衡原则,数据字典,黑洞、奇迹、灰洞等;
-
补充外部实体:
- 几乎每次都考,通过阅读题目给出的描述,从描述中找出可能存在的外部实体,并填充到数据流图中;
- 注意:外部实体一般是指存在于软件系统之外的人员、组织或外部系统,所以在阅读题目描述时,就应该要将这样的词并标注出来;
-
补充数据存储:
- 几乎每次都考,通过阅读题目给出的描述,从描述中找出可能存在的数据存储,并填充到数据流图中;
- 注意:数据存储在描述中一般会以某某文件或某某表这样的词出现(如学生表、权限文件等)。因此在阅读题目描述时,就应该将这样的词并标注出来;
-
补充缺失的数据流:
- 几乎每次都考。需要掌握以下知识:
- 父子图数据平衡原则,即0层数据流图的输入和输出应与上下文数据流图(即顶层图)保持一致;
- 每张数据流图的数据平衡原则,即保证任何一个加工都有其对应的输入数据流和输出数据流。也就是要消除黑洞、奇迹、灰洞等情况;
- 几乎每次都考。需要掌握以下知识:
-
数据流图的改错:可能会考查错误数据流名称、错误数据流起点和终点、多余数据流等。
2 数据流图
2.1 相关概念
- 数据流图:描述数据在系统中如何被传送、变换,以及如何对数据进行变换的功能或子功能,主要用于功能建模;
-
数据流图的基本图形元素:
- **数据流(Data Flow):**表示数据的流向。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流都必须有一个明确的名字;
- 加工(Process):
- 描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成输出数据流;
- 一个加工可以有多个输入数据流和多个输出数据流,但至少有一个输入数据流和一个输出数据流;
- **数据存储(Data Store):**用来存储数据(表或文件);
- 外部实体(External Entity):指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生的数据的归宿地;
-
数据流图的分层:
- 数据流图可以分层,从上下文数据流图(即顶层图)到0层、1层等;
- **上下文数据流图(Context Data Flow Diagram):**只含有一个加工处理,它表示整个软件系统,描述了系统的输入和输出,以及与外部实体的数据交互;
-
DFD基本图形元素示意:
2.2 上下文数据流图示例
- 核心加工: “计量检定云端软件”——这个单一的加工代表了整个系统;
- **外部实体:**E1、E2、E3、E4;
- 数据流: 各个外部实体与核心加工之间的数据交换,如“充电监测及计量数据”(输入数据流)、“计量装置心跳数据”(输入数据流)、“告警信息”(输出数据流)等,都带有明确的名称和方向。
2.3 0层数据流图示例
- 外部实体: E1、E2、E3、E4;
- 分解后的加工: 整个“计量检定云端软件”被分解为多个子加工,编号为P1 ~ P6:
- 数据存储: 引入了数据存储,编号为D1 ~ D5:
- 详细的数据流: 展示了这些加工、外部实体和数据存储之间更详细的数据流动和转换关系;
- 例:E1将数据发送给P1,P1处理后将数据分别发送给D1和D3。
3 数据流图的设计原则
3.1 数据平衡原则
-
父图与子图平衡:
-
上下文数据流图:描述了信息系统和外部实体之间的数据流关系,是最高层级的视图;
-
0层数据流图:是上下文数据流图中加工(即信息系统)经分解后的图。它描述了外部实体和信息系统内部更详细的数据流关系;
-
父图与子图平衡:
- 上下文数据流图和0层数据流图互为父图、子图关系
- 其与外部实体之间的输入、输出数据流个数和名称不应该发生变化,应该保持平衡
- 在解题中,可以通过关注父图、子图中的外部实体的输入、输出数据流个数、名称是否相同,就可以确认是否存在缺少数据流的情况
- 核心思想: 父图分解成子图后,与外界的接口(外部实体的数据流)必须保持不变
-
-
每张图的图内平衡:
-
对于图内的每一个加工,要求既要有输入数据流,也要有输出数据流;
-
根据这一原则,可以对每个输入进行判断,看是否有相应的输出;反之亦然,也可以知道是否存在缺少某些数据流的情况,从而进行相应的补充;
-
核心思想:任何一个加工都不能凭空产生数据(需要输入),也不能吞噬数据而不产生结果(需要输出),除非是数据存储的写入或读取。
-
3.2 数据流相关原则
- 数据流的流向:在DFD中,数据流的流向可以有以下几种:
- 从一个加工流向另一个加工
- 从加工流向数据存储(写)
- 从数据存储流向加工(读)
- 从外部实体流向加工(输入)
- 从加工流向外部实体(输出)
- **数据流必须与加工有关。**除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个明确的名字;
- 不允许的数据流连接:
- 外部实体与外部实体之间不存在数据流
- 外部实体与数据存储之间不存在数据流
- 数据存储与数据存储之间不存在数据流
- 核心思想:数据流的传输媒介是加工。外部实体之间、外部实体与存储之间、存储与存储之间不能直接进行数据交换,必须通过加工来中转。
3.3 加工相关原则
- 对于每个加工,必须既有输入数据流,又有输出数据流;
- 对同一个加工来说,输入数据流和输出数据流名称不能相同(但类型要匹配),即使它们的组成成分相同;
- 核心思想:输入和输出代表了数据在加工前后状态或用途的变化,即使内容相同,也应该用不同的名称来区分,以清晰地表示加工的功能。
4 解题技巧
-
数据流图的考试形式相对固定,通常包含以下几个小题:
-
第一小题:补充外部实体
-
第二小题:补充数据存储
-
第三小题:补充缺失数据流
-
第四小题:考查简单概念
-
-
这些题目都不算太难,答案往往隐藏在题目描述和数据流图本身中,更像是阅读理解;
-
具体解题技巧如下。
4.1 补充外部实体
- 定义:外部实体是与信息系统进行交互的实体,可以是人员、组织或外部系统;
- 识别方法:外部实体与信息系统进行交互,这种交互在数据流图中通常表现为一个事件流。根据事件的名称结合题目说明,就可以轻易得出答案;
- 提示:根据外部实体与信息系统之间的数据流来得到外部实体,通常只需要看上下文数据流图(因为上下文数据流图直接展示了系统与外部的交互)。
4.2 补充数据存储
- 特点:数据存储通常出现在0层数据流图中,反映系统内部的数据存储;
- 识别方法:可以直接根据数据流图中数据存储的输入数据流和输出数据流来判断该数据存储的名称;
- 命名建议:一般命名为“输入数据流名称 + 表/信息表”即可;
- 快速定位数据存储:寻找从加工流向数据存储的加工所在的功能描述;
- 关键词提示:每个关键词“存储”对应一个数据存储。
4.3 补充缺失数据流
-
步骤 ①:判断父图和子图是否平衡
- 依据父图和子图间的数据平衡原则
- 核对父图中的每个输入、输出数据流是否都能在子图中找到
- 直接查看外部实体的输入、输出数据流,就可以轻易得出答案
- **核心关注点:**父子图与外部实体的数据流是否一致
-
步骤 ②:判断子图内部是否平衡
- 依据子图内的数据平衡原则
- 详细阅读题目描述,对每句话进行核对,看其是否反映在子图中
- 检查每个加工是否都有输入、输出数据流等
- 核心关注点:子图中每个加工的输入输出是否完整和合理
-
一般情况:数据流图中的加工名称与信息系统的功能标题一一对应
5 练习1
5.1 题目
-
随着新能源车数量的迅猛增长,全国各地电动汽车配套充电桩急速增长,同时也带来了充电桩计量准确性的问题。充电桩都需要配备相应的电能计量和电费计费功能,需要对充电计量准确性强制进行检定。现需开发计量检定云端软件,其主要功能是:
-
(1)数据接收。接收计量装置上报的充电数据,即充电过程中电压、电流、电能等充电监测数据和计量数据(充电监测数据为充电桩监测的数据,计量数据为计量装置计量的数据,以秒为间隔单位),接收计量装置心跳数据,并分别进行存储
-
(2)基础数据维护。管理员对充电桩、计量检定装置等基础数据进行维护
-
(3)数据分析。实现电压、电流、电能数据的对比,进行误差分析,记录充电桩的充电误差,供计量装置检定。系统根据计量检测人员给出的查询和统计条件展示查询统计结果
-
(4)充电桩检定。分析充电误差;计量检测人员根据误差分析结果和检定信息记录,对充电桩进行检定,提交检定结果;系统更新充电桩中的检定信息(检定结果和检定时间),并存储于检定记录
-
(5)异常告警。检测计量装置心跳,当心跳停止时,向管理员发出告警
-
(6)检定信息获取。供其它与充电桩相关的第三方服务查询充电桩中的检定信息。现采用结构化方法对计量检定云端软件进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图
-
-
题目:
-
【问题1】(4分)使用说明中的词语,给出图1-1中的实体E1~E4的名称。
-
【问题2】(5分)使用说明中的词语,给出图1-2中的数据存储D1~D5的名称。
-
【问题3】(4分)根据说明和图中术语,补充图1-2中缺失的数据流及其起点和终点。
-
【问题4】(2分)根据说明,给出“充电监测和计量数据”数据流的组成。
-
-
5.2 解答
-
解答1:
- E1:接收计量装置
- E2:管理员
- E3:计量检测人员
- E4:第三方服务
-
解答2:
- D1:充电监测数据与计量数据表
- D2:基础信息表
- D3:计量装置心跳数据表
- D4:充电误差信息表
- D5:检定记录表
-
解答3:
数据流 起点 终点 查询和统计条件 E3 P3 检定结果 E3 D5 更新检定信息 P4 D1 检定信息 D1 P6 -
解答4:充电过程中电压、电流、电能等充电监测数据和计量数据(充电监测数据为充电桩监测的数据,计量数据为计量装置计量的数据,以秒为间隔单位);
- 充电监测与计景数据=充电桩ID+监测电压+监测电流+监测电能+计量装置ID+计量电压+计量电流+计量电能+时间
6 练习2
6.1 题目
-
某公司欲开发一款外卖订餐系统,集多家外卖平台和商户为一体,为用户提供在线浏览餐品、订餐和配送等服务。该系统的主要功能是:
- 入驻管理。用户注册;商户申请入驻,设置按时间段接单数量阈值等。系统存储商户/用户信息;
- 餐品管理。商户对餐品的基本信息和优惠信息进行发布、修改、删除。系统存储相关信息;
- 订餐。用户浏览商户餐单,选择餐品及数量后提交订餐请求。系统存储订餐订单;
- 订单处理。收到订餐请求后,向外卖平台请求配送。外卖平台接到请求后发布配送单,由平台骑手接单,外卖平台根据是否有骑手接单返回接单状态。若外卖平台接单成功,系统给支付系统发送支付请求,接收支付状态。支付成功,更新订单状态为已接单,向商户发送订餐请求并由商户打印订单,给用户发送订单状态;若支付失败,更新订单状态为下单失败,向外卖平台请求取消配送,向用户发送下单失败。若系统接到外卖平台返回接单失败或超时未返回接单状态,则更新订单状态为下单失败,向用户发送下单失败;
- 配送。商户备餐后,由骑手取餐配送给用户。送达后由用户扫描骑手出示的订单上的配送码后确认送达,订单状态更改为已送达,并发送给商户;
- 订单评价。用户可以对订单餐品、骑手配送服务进行评价,推送给对应的商户、所在外卖平台,商户和外卖平台对用户的评价进行回复。系统存储评价;
-
现采用结构化方法对外卖订餐系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图;
-
【问题1】(4分) 使用说明中的词语,给出图1-1的实体E1~E4的名称
-
【问题2】(4分) 使用说明中的词语,给出图1-2中的数据存储D1-D4的名称
-
【问题3】(4分) 根据说明和图中术语,补充图1-2中缺失的数据流及其起点和终点
-
【问题4】(3分) 根据说明,采用结构化语言对“订单处理”的加工逻辑进行描述
6.2 解答
-
解答1:
- E1:商户
- E2:外卖平台
- E3:用户
- E4:支付系统
-
解答2:
- D1:用户/商户信息表
- D2:订餐订单信息表
- D3:餐品信息表
- D4:评价信息表
-
解答3:
数据流名称 起点 终点 餐单 D3 P3 餐单 P3 E3 订餐请求 P3 P4 更新订单状态 P4 D2 -
解答4:收到订餐请求后,向外卖平台请求配送;外卖平台接到请求后发布配送单,由平台骑手接单,外卖平台根据是否有骑手接单返回接单状态
IF 外卖平台接单成功 THEN系统给支付系统发送支付请求,接收支付状态。IF 支付成功 THEN更新订单状态为已接单,向商户发送订餐请求并由商户打印订单,给用户发送订单状态。ELSE IF 支付失败 THEN更新订单状态为下单失败,向外卖平台请求取消配送,向用户发送下单失败。ENDIF ELSE IF 系统接到外卖平台返回接单失败或超时未返回接单状态 THEN更新订单状态为下单失败,向用户发送订单状态为下单失败。 ENDIF