中级软件设计师:一文搞懂下午第一题——数据流图技术
- 0. 答题技巧-【11-12分】分必拿方法
- 0. 本章的考点
- 1. 数据流图的基本元素
- 1.1 数据流
- 1.2 加工
- 1.3 数据存储(文件)
- 1.4 外部实体
- 1.5 分层数据流图(DFD)
- 1.6 自顶至下,逐步精化
- 1.6.1 画系统的输入和输出
- 1.6.2 画系统的内部
- 1.6.3 画加工的内部
- 1.7 数据字典
- 2. 数据平衡原则
- 2.1 分层数据流图的数据平衡原则
- 2.2 每张数据流图的数据平衡原则
- 2.3 中绘制1层数据流图时要注意的问题(必背!!)
- 3. 如何答题
- 3.1 小牛试刀
- 3.1.1 详细分析试题说明
- 3.1.2 利用数据平衡原则
- 3.2 练习
- 3.2.1 练习1
- 3.2.2 练习2
- 3.2.3 练习3
- 3.2.4 练习4
- 参考文献
以下内容是在阅读大量博客并结合个人理解后整理总结的,作为个人学习笔记分享给大家。文末将附上相关的参考资料链接。如果其中有涉及到侵权的内容,请及时告知,我会立即删除相关部分。在此,特别感谢各位前辈的无私分享和指导,也希望本文能够对读者有所帮助。
数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具。
0. 答题技巧-【11-12分】分必拿方法
下午的第一道题很可能是关于数据流的,因此我们需要着重找到对应的实体和关系模式。在审题时,一定要格外细致,确保每个关键点都不被忽略。下午的时间相对充裕,所以审题时要耐心,每一句话至少读三遍,这样有助于明确题目中的实体和关系。如果在理解上有遗漏或不清晰的步骤,多读几次题目通常也能理出一个合理的思路。
0. 本章的考点
从历年的考试情况来看,本章的考点主要集中于以下几个方面。
- 补充数据流图的缺失部分,包括补充数据流、补充外部实体、补充数据存储。
- 数据流图的改错,包括修正数据流名称、数据流的起点与终点、删除多余数据流。
- 附加与数据流图相关的概念简答题。
首先先了解什么是数据流图??
1. 数据流图的基本元素
数据流图包括四大基本元素:数据流、加工、数据存储、外部实体。
1.1 数据流
由一组固定成分的数据组成,表示数据的流向。每个数据流通常有一个合适的名词,反映数据流的含义
1.2 加工
加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流
加工(例如:用户验证、用户管理等)。
1.3 数据存储(文件)
用来表示暂时存储的数据,每个文件都有名字。流向文件的数据流表示写文件,流出的表示读文件
数据存储:带有“文件”、“表”、“库”、“清单”、“档案”等词汇;(不绝对,但是可以参考:在题目中未明确给出数据存储的名称时,一律在名词后面加文件)
1.4 外部实体
指存在于软件系统外的人员或组织
实体:一般找说明中的名词主语,包括人物角色、组织机构名称和外部系统名称;(例如:前端应用、数据管理员等)
1.5 分层数据流图(DFD)
相信大家对这张图并不陌生,它展示的是数据流图,也被称为分层数据流图。随着系统规模的增大,数据流图的复杂性也会相应增加,导致一张图无法清晰地表达整个系统的内容。因此,我们需要将图分层,通过逐层细化来表达各个部分的细节。目前广泛使用的数据流图都是按照层次进行分级展示的,这也正是为什么我们通常将数据流图称为“分层数据流图”的原因。通过分层次展现,数据流图可以更清楚地反映系统的结构和数据流动情况。
分层数据流图很好的传承了结构化思想——“自顶至下,逐步精化”。将图分成了若干个层次,首先绘制针对系统整体的顶层图,以说明系统与外界的交互,再将图层层细化。具体过程为:
1.6 自顶至下,逐步精化
1.6.1 画系统的输入和输出
将整个软件系统视为一个大的加工过程,首先需要确定它与外部实体之间的输入和输出数据流。这种抽象后的结果被称为顶层图。正如图所示,数据管理中间件是我们要开发的系统,但在顶层图中,该系统被视为一个整体的“大加工”。这种顶层图能够很好地体现系统与外部实体之间的交互关系,简洁明了地展示出系统如何接收外部输入数据并生成输出,从而帮助我们快速理解系统的整体结构和外部依赖。
1.6.2 画系统的内部
在顶层图的基础上,将其中的加工进一步分解为多个子加工,并通过数据流连接这些加工,形成一张新的图,这张图被称为0层图。
在这张图中,详细描述了数据管理中间件内部的一系列加工过程,包括用户验证、用户管理、操作管理、权限管理、格式检查、权限验证、连接管理等,以及这些加工之间的相互关系。通过0层图,我们可以大致了解原始数据经过了哪些步骤,最终生成目标数据。然而,这种图并不够详细,比如“格式检查”具体是如何执行格式检查的,0层图中并没有提供足够的信息。这时就需要进一步分解“格式检查”的内部结构,进入下一步,即“画加工的内部”。
1.6.3 画加工的内部
将每个加工视为一个独立的小系统,采用类似0层图的方式,为每个加工画出DFD(数据流图)子图。如果某个加工足够简单,已经清晰表达了其功能,则可以不进行进一步的分解。
1.7 数据字典
DFD描述了系统的分解,即系统由哪几部分组成,各部分之间的联系等,但是,对于数据的详细内容却无法在DFD中得到反映。例如,上图数据流“用户信息”包括哪些内容,在DFD中就无法具体、准确地描述。数据字典是在DFD的基础上,对DFD中出现的所有命名元素都加以定义,使得每个图形元素的名字都有一个确切的解释。DFD和数据字典等工具相配合,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。
符号 | 含义 | 举例说明 |
---|---|---|
= | 被定义为 | |
+ | 与 | x=a+b,表示x由a和b组成 |
[....,...] 或[...|...] | 或 | x=[a, b], x=[a|b], 表示 x 由 a 或由 b 组成 |
{...} | 重复 | x={a},表示x由0个或多个a组成 |
(...) | 可选 | x=(a),表示a可在x中出现,也可以不出现 |
"..." | 基本数据 | 元素x="a”,表示x是取值为字符a的数据元素。 |
.. | 连接符 | x=1.9,表示x可取1到9中任意一个值。 |
2. 数据平衡原则
数据平衡原则有两个层面的意思,一方面是分层数据流图之间需要平衡,另一方面是每张数据流图的数据需要平衡。
2.1 分层数据流图的数据平衡原则
分层的流程图是由粗至精、逐步细化地描述系统信息的。上层图中描述的是粗略涉及全体的信息,而下层图中则详细描述上层图中具体某一个部分的内容。因此,上层图不需要描述下层图中所描述的详细信息,而下层图的输入与输出应与上层图保持一致,也就是父图和子图之间的数据流必须保持一致。比如说在父图中某加工有两个输入数据流和一个输出数据流,那么在该加工的子图中的输入/输出数据流必须在数目上和内容上与父图保持一致。此外值得注意的是:保持一致并非指输入输出流的数量与名称完全一样。而是下层数据流图的所有输出数据流必须是上层数据流图中相应加工产生的输出数据流。如果上层数据流底部某加工的一个输入(输出)数据流对应于下层数据流图中若干个输入(输出)数据流,而且下层数据流图中这些数据流的成分之和正好等于上层数据流底部的这个数据流,那么它仍算是平衡的。
2.2 每张数据流图的数据平衡原则
加工的输入数据流和输出数据流要平衡,即保证加工的输出数据流都有其对应的输入数据流与输出数据流。以下属于打破了数据平衡原则,会产生错误的情况。
- 若一个加工只有输入数据流而无输出数据流,则称为黑洞。
- 若一个加工只有输出数据流而无输入数据流,则称为奇迹。
- 此外需要注意的是:一个数据流图中,不允许数据流同名。
2.3 中绘制1层数据流图时要注意的问题(必背!!)
保持父图与子图平衡。父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。
3. 如何答题
到目前为止,其实你已经掌握了作答下午数据流图题目的基本方法。也许你会惊讶地想:“我的发!!我怎么就会了呢?” 但事实上,经过前面的学习和理解,你已经具备了应对数据流图题的能力。接下来,让我们通过真题来进一步领悟和巩固这一技巧,看看如何将理论应用于实际的解题过程中吧!
在考试中,要看清楚试题再作答,这其实是大家都清楚的规则,但真正做得很好的并不多。有很多考生觉得考试时间有限,是采取的“粗略看题,凭空作答”的方式,这样做很危险,费时且没有成效。这种情况要避免。
试题说明在解答数据流图题中,表现得尤为重要。这是有依据的,因为数据流图本身是需求分析阶段用来建模的工具。用数据流图建模,不能凭空想像。绘制数据流图需要依据用户需求以及用户操作的一些流程说明,而在试题中,试题说明恰好就是这些素材。这些素材是解题的关键。我们在此需要逐字逐句的进行分析与推敲。
3.1 小牛试刀
3.1.1 详细分析试题说明
数据管理员可通过中间件进行用户管理、操作管理和权限管理。用户管理维护用户信息,用户信息(用户名、密码)存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。
分析大法:
数据管理员可通过中间件进行用户管理、操作管理和权限管理。用户管理维护用户信息,用户信息(用户名、密码)存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。
从这段话,我们可以得到的信息有:
- 数据管理员是一个外部实体;
- 中间件中有“用户管理”、“操作管理”、“权限管理”这些加工;
- 中间件中有用户表这个数据存储,且该存储与“用户管理”相关;
- 后端数据库是一个外部实体;
- 中间件中有操作表这个数据存储,且该存储与“操作管理”相关;
- 中间件中有权限表这个数据存储,且该存储与“权限管理”相关。
是不是很清晰了呢
3.1.2 利用数据平衡原则
数据平衡原则在前面已有说明。在此主要强调它在解题中的使用。在解答“补充数据流”或是“数据流查错”这些类型的题时。数据平衡原则起到了重要作用,我们通常可以用外部实体为主线,在不同层次的图上分析与该外部实体相关的输入输出流,如果存在不匹配的情况,则说明图中该处有误。
| |
3.2 练习
3.2.1 练习1
数据流图(DFD)对系统的功能和功能之间的数据流进行建模,其中顶层数据流图描述了系统的__(1)__。
(1)A.处理过程 B.输入与输出
C.数据存储 D.数据实体
试题1分析
数据流图主要由实体、数据存储、处理过程和数据流四部分组成。在顶层数据流图中,将系统描述成一个处理过程,而其它的是与该处理过程相关的输入输出流,因此顶层数据流图描述了系统的输入与输出。
试题1答案(1)B
3.2.2 练习2
利用结构化分析模型进行接口设计时,应以__(2)__为依据。
(2)A.数据流图 B.实体–关系图 C.数据字典 D.状态–迁移图
试题2分析
数据流图是结构化分析模型需求分析阶段得到的结果,描述了系统的功能,在进行接口设计时,应以它为依据。
试题2答案(2)A
3.2.3 练习3
某学校开发图书管理系统,以记录图书馆藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下:
(1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法,若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表,借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。
(2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。
(3)处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。现采用结构化方法对该图书管理系统进行分析与设计,获得如图11-5所示的顶层数据流图和图11-6所示的0层数据流图。
【问题1】
使用说明中的词语,给出图11-5中的实体E1-E4的名称。
【问题2】
使用说明中的词语,给出图11-6中的数据存储D1~D4的名称。
【问题3】
在DFD建模时,需要对有些复杂加工(处理)进行进一步精化,绘制下层数据流图。针对图中的加工“处理借阅”,在1层数据流图中应分解为哪些加工?(使用说明中的术语)
【问题4】
说明【问题3】中绘制1层数据流图时要注意的问题。
试题3分析
某学校开发图书管理系统,以记录图书馆藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下:
(1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法,若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表,借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。
(2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。
(3)处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,图书馆管理员收取罚金,并更新罚金表中的罚金额度。现采用结构化方法对该图书管理系统进行分析与设计,获得如图所示的顶层数据流图和图所示的0层数据流图。
【1】
E1:借阅者、E2:图书馆管理员、E3:教务处、E4:人事处
【2】
D1:图书表、D2:借出图书表、D3:逾期未还图书表、D4:罚金表
【3】
先检查借阅者的身份,如果身份合法,则检查借阅者是否有逾期未还图书及罚金表中的罚金是否超过限额,如果没有,则允许借阅读书,然后是归还图书。因此0层图中的加工“处理借阅”可以细分为1层图中的若干个加工,其分别是:检查借阅者的身份,检查逾期未还图书,检查罚金是否超过限额,借阅读书及归还图书等加工。
【4】( 把我们要背诵的直接一写~)
保持父图与子图平衡。父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。
3.2.4 练习4
某电子商务系统采用以数据库为中心的集成方式改进购物车的功能,详细需求如下:
(1)加入购物车。顾客浏览商品,点击加入购物车,根据商品标识从商品表中读取商品信息,并更新购物车表。
(2)浏览购物车。顾客提交浏览购物车请求后,显示出购物车表中的商品信息
(3)提交订单。顾客点击提交订单请求,后台计算购物车表中商品的总价(包括运费)加入订单表,将购物车表中的商品状态改为待付款,显示订单详情。若商家改变价格,则刷新后可看到更改后的价格
(4)改变价格。商家查看订购自家商品的订单信息,根据特殊优惠条件修改价格,更新订单表中的商品价格。
(5)付款。顾客点击付款后,系统先根据顾客表中关联的支付账户,将转账请求(验证码、价格等)提交给支付系统(如信用卡系统)进行转账;然后根据转账结果返回支付状态并更改购物车表中商品的状态。
(6)物流跟踪。商家发货后,需按订单标识添加物流标识(物流公司、运单号) ; 然后可根据顾客或商家的标识以及订单标识,查询订单表的物流标识,并从相应物流系统查询物流信息。
(7)生成报表。根据管理员和商家设置的报表选项,从订单表、商品表以及商品分类表中读取数据,调用第三方服务Crystal Reports生成相关报表。
(8)维护信息。管理员维护(增、删、改、查)顾客表、商品分类表和商品表中的信息。
现采用结构化方法实现上述需求,在系统分析阶段得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。
[问题1]
使用说明中的词语,给出图1-1中的实体E1 ~ E4的名称。
答案:
E1:商家、E2:支付系统、E3:物流系统、E4:【第三方服务】/【Crystal Reports】
[问题2]
使用说明中的词语,给出图1-2中的数据存储D1 ~ D4的名称。
答案:
这个题需要看箭头,D1~D4都有一个箭头,看到了从哪里引入过来的就是那个的数据表。
D1:订单信息表、D2:商品信息表、D3:商品分类表、D4、购物车表
[问题3]
图1-2中缺失了数据流,请用说明或图1-2中的词语,给出其起点和终点。
答案:
起点 | 终点 |
---|---|
付款 | D4/购物车表 |
D4/购物车表 | 提交订单 |
顾客表 | 付款 |
D1/订单表 | 生成报表 |
[问题4]
根据说明,给出数据流“转账请求”、“顾客订单物流查询请求” 和“商家订单物流查询请求”的各组成数据项。
答案:
转账请求:验证码、价格、账号信息。
顾客订单物流查询请求:客户标识、订单标识。
商家订单物流查询请求:商家标识、订单标识。
参考文献
【软考之数据流图专题】https://blog.csdn.net/mazhaojuan/article/details/8944485
【软件设计师备考(五)——下午题答题技巧】https://blog.csdn.net/gets_s/article/details/120907716
【软件设计师:12数据流图(下午)】https://www.mulei.ltd/595.html
【13、数据流图技术】https://blog.csdn.net/qq_44774198/article/details/127199142
https://laoshifu.blog.csdn.net/article/details/127621959