13、数据流图技术

第十三章 数据流图技术

在考试大纲中,对数据流图技术的要求是比较含糊的,并没有明确要求掌握哪些具体的知识点,仅有“数据流图的基本构成、数据字典、加工逻辑”的要求。但在考试中,这是一个非常重要的知识点,近年来已经固定作为下午考试的试题一,占15分,属于必答题

从历年的考试情况来看,本章的考点主要集中于以下几个方面。
补充数据流图的缺失部分,包括补充数据流、补充外部实体、补充数据存储。
数据流图的改错,包括修正数据流名称、数据流的起点与终点、删除多余数据流。
附加与数据流图相关的概念简答题。

数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具。

1. 数据流图的基本元素

数据流图包括四大基本元素:加工、数据流、数据存储、外部实体,如表11-1所示。
13、数据流图技术_第1张图片
虽然涉及的元素少,但数据流图本身却并不简单。图11-1便是一张数据流图,该图中包括:数据流(例如:非法用户信息、用户信息等)、外部实体(例如:前端应用、数据管理员等)、数据存储(例如:用户表、操作表、权限表)、加工(例如:用户验证、用户管理等)。
13、数据流图技术_第2张图片

2. 分层数据流图(DFD)

从图11-1可以看出,越庞大的系统,数据流图越复杂。以至于一张图根本无法清楚的表达系统内容,所以需要对图进行分层,逐层精化。目前使用的数据流图都是分层次的,这也就是为什么平时也把数据流图称为“分层数据流图”的原因。
13、数据流图技术_第3张图片

分层数据流图很好的传承了结构化思想——“自顶至下,逐步精化”。将图分成了若干个层次,首先绘制针对系统整体的顶层图,以说明系统与外界的交互,再将图层层细化。具体过程为:

(1)画系统的输入和输出:

把整个软件系统看做一个大加工,确定与外部实体之间的输入和输出数据流,这个结果也称为顶层图。如图11-2所示,数据管理中间件是我们要开发的系统,但顶层图将该系统看成了一个大加工,这种图能很好的体现出系统与外部实体之间的交互关系。
13、数据流图技术_第4张图片

(2)画系统的内部:

将顶层图中的加工分解成若干个加工,并用数据流连接这些加工。这张图称为0层图。而从一个加工画出一张数据流图的过程就是对该加工的分解过程。如图11-1所示,它便是图11-2的0层图,在该图中,展示出数据管理中间件拥有一系列的加工:用户验证、用户管理、操作管理、权限管理、格式检查、权限验证、连接管理,以及这些加工之间的关系。从这张图,可以大致看出原始数据是经历了哪些步骤,产生了目标数据。但这还不够详细,例如我们需要了解“格式检查”是如何进行格式检查的,从该图仍无法得到答案。此时,可以进一步细化“格式检查”的内部结构,这便是下一步“画加工的内部”需要做的事情。

(3)画加工的内部:

把每个加工看做一个小系统,以画0层图的方式画出每个加工的DFD子图(对于较细的加工,可以不进行分解)。

3. 数据字典

DFD描述了系统的分解,即系统由哪几部分组成,各部分之间的联系等,但是,对于数据的详细内容却无法在DFD中得到反映。例如,图11-2中的数据流“用户信息”包括哪些内容,在DFD中就无法具体、准确地描述。数据字典是在DFD的基础上,对DFD中出现的所有命名元素都加以定义,使得每个图形元素的名字都有一个确切的解释。DFD和数据字典等工具相配合,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。表11-1给出了数据字典定义数据时可能出现的符号。
13、数据流图技术_第5张图片
13、数据流图技术_第6张图片

4. 数据平衡原则

数据平衡原则有两个层面的意思,一方面是分层数据流图之间需要平衡,另一方面是每张数据流图的数据需要平衡。

(1)分层数据流图的数据平衡原则

分层的流程图是由粗至精、逐步细化地描述系统信息的。上层图中描述的是粗略涉及全体的信息,而下层图中则详细描述上层图中具体某一个部分的内容。因此,上层图不需要描述下层图中所描述的详细信息,而下层图的输入与输出应与上层图保持一致,也就是父图和子图之间的数据流必须保持一致。比如说在父图中某加工有两个输入数据流和一个输出数据流,那么在该加工的子图中的输入/输出数据流必须在数目上和内容上与父图保持一致。此外值得注意的是:保持一致并非指输入输出流的数量与名称完全一样。而是下层数据流图的所有输出数据流必须是上层数据流图中相应加工产生的输出数据流。如果上层数据流底部某加工的一个输入(输出)数据流对应于下层数据流图中若干个输入(输出)数据流,而且下层数据流图中这些数据流的成分之和正好等于上层数据流底部的这个数据流,那么它仍算是平衡的。

(2)每张数据流图的数据平衡原则

加工的输入数据流和输出数据流要平衡,即保证加工的输出数据流都有其对应的输入数据流与输出数据流。以下属于打破了数据平衡原则,会产生错误的情况。
若一个加工只有输入数据流而无输出数据流,则称为黑洞。如图11-3(a)所示。
13、数据流图技术_第7张图片
若一个加工只有输出数据流而无输入数据流,则称为奇迹。如图11-3(b)所示。
若一个加工的输入数据流无法通过加工产生输出流,则称为灰洞。
此外需要注意的是:一个数据流图中,不允许数据流同名。

5. 答题技巧

通过对前面内容的学习,我们可以发现,数据流图涉及的相关内容并不多。只有一些简单的概念与原则,但该知识点的重要度却非常高。每次考试都有该类试题,考查15分以上(如果上午题考到数据流图知识,则考查分值超过15分),而且考查的形式也非常固定,所以这个种题是拿分的题,要掌握其解答技巧,避免在此类问题上丢分。技巧主要有两点:详细分析试题说明以及充分利用数据平衡原则。

(1)详细分析试题说明

在考试中,要看清楚试题再作答,这其实是大家都清楚的规则,但真正做得很好的并不多。有很多考生觉得考试时间有限,是采取的“粗略看题,凭空作答”的方式,这样做很危险,费时且没有成效。这种情况要避免。

试题说明在解答数据流图题中,表现得尤为重要。这是有依据的,因为数据流图本身是需求分析阶段用来建模的工具。用数据流图建模,不能凭空想像。绘制数据流图需要依据用户需求以及用户操作的一些流程说明,而在试题中,试题说明恰好就是这些素材。这些素材是解题的关键。我们在此需要逐字逐句的进行分析与推敲。

例如,有一个关于中间件系统的数据流图题。试题说明中有“数据管理员可通过中间件进行用户管理、操作管理和权限管理。用户管理维护用户信息,用户信息(用户名、密码)存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。”,从这段话,我们可以得到的信息有:
数据管理员是一个外部实体;
中间件中有“用户管理”、“操作管理”、“权限管理”这些加工;
中间件中有“用户表”这个数据存储,且该存储与“用户管理”相关;
后端数据库是一个外部实体;
中间件中有“操作表”这个数据存储,且该存储与“操作管理”相关;
中间件中有“权限表”这个数据存储,且该存储与“权限管理”相关。
如果进一步结合试题已给出的图,能得到更多的信息,所以在解题时,要反复分析试题说明中的文字,这是解题的关键。

(2)利用数据平衡原则

数据平衡原则在前面已有说明。在此主要强调它在解题中的使用。在解答“补充数据流”或是“数据流查错”这些类型的题时。数据平衡原则起到了重要作用,我们通常可以用外部实体为主线,在不同层次的图上分析与该外部实体相关的输入输出流,如果存在不匹配的情况,则说明图中该处有误。

例如,在某系统中,对于实体E,在顶层图中相关数据流情况如图11-4(a)所示,而在0层图中相关数据流如图11-4(b)所示。则我们可以清楚的看到0层图存在数据流缺失的情况。
13、数据流图技术_第8张图片

练习

试题1
数据流图(DFD)对系统的功能和功能之间的数据流进行建模,其中顶层数据流图描述了系统的__(1)__。
(1)A.处理过程 B.输入与输出
C.数据存储 D.数据实体

试题2
利用结构化分析模型进行接口设计时,应以__(2)__为依据。
(2)A.数据流图 B.实体–关系图 C.数据字典 D.状态–迁移图

试题3
阅读下列说明和图,回答问题1至问题4。
【说明】
某学校开发图书管理系统,以记录图书馆藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下:
(1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法,若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表,借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。
(2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。
(3)处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。现采用结构化方法对该图书管理系统进行分析与设计,获得如图11-5所示的顶层数据流图和图11-6所示的0层数据流图。
13、数据流图技术_第9张图片
13、数据流图技术_第10张图片
【问题1】
使用说明中的词语,给出图11-5中的实体E1-E4的名称。
【问题2】
使用说明中的词语,给出图11-6中的数据存储D1~D4的名称。
【问题3】
在DFD建模时,需要对有些复杂加工(处理)进行进一步精化,绘制下层数据流图。针对图11-
6中的加工“处理借阅”,在1层数据流图中应分解为哪些加工?(使用说明中的术语)
【问题4】
说明【问题3】中绘制1层数据流图时要注意的问题。

答案
试题1分析
数据流图主要由实体、数据存储、处理过程和数据流四部分组成。在顶层数据流图中,将系统
描述成一个处理过程,而其它的是与该处理过程相关的输入输出流,因此顶层数据流图描述了系统
的输入与输出。
试题1答案
(1)B
试题2分析
数据流图是结构化分析模型需求分析阶段得到的结果,描述了系统的功能,在进行接口设计
时,应以它为依据。
试题2答案
(2)A
试题3分析
本题考查数据流图(DFD)的应用,是一种比较传统的题目,要求考生细心分析题目中所描述的
内容。DFD是一种便于用户理解、分析系统数据流程的图形工具。是系统逻辑模型的重要组成部
分。
解答这类问题,有以下两个原则:
(1)紧扣试题的系统说明部分,数据流图与系统说明有着严格的对应关系,系统说明部分的每
一句话都能对应到图中,解题时可以一句一句地对照着图来分析。
(2)数据的平衡原则,这一点在解题过程中也是至关重要的。数据平衡原则有两方面的意思:
一方面是分层数据流图中父子图之间的数据流平衡原则;另一方面是每张数据流图中输入与输出数
据流的平衡原则。
【问题1】
本问题要求我们给出图11-5中的实体E1~E4的名称。这个需要我们从题目中的描述和该图来获
得。题目中有信息描述:“借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查”,我
们结合顶层数据流图可知,E1为借阅者;另外,根据题目描述“图书馆管理员查询图书信息;在新
进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录”,
结合图,我们可以知道E2是图书馆管理员,再结合描述“借阅者要借阅图书时,系统必须对其身份
(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行
比对,以验证借阅者ID是否合法”和顶层数据流图可知,E3和E4应该是学生数据库和职工数据库,
这两者的位置可以互换。
【问题2】
本问题考查数据存储的确定。根据题目的描述“图书馆管理员查询图书信息;在新进图书时录
入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录”,结合0层数据
流图我们可知D1为图书表;根据题目描述“如果没有逾期未还图书并且罚金未超过限额,则允许借
阅图书,更新图书表,并将借阅的图书存入借出图书表,”,再结合0层数据流图我们可知D2为借出
图书表,并且确失生成病历至病历文件的数据流和日志文件至生成病历的数据流;根据题目描
述“系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表”,再结合0
层数据流图我们可知D4为罚金表。在确定了上面三个存储后,题目中还剩下逾期未还图书表,很显
然,D3就是逾期未还图书表。
【问题3】
本题主要考查加工的分解。对于求解这类问题,主要根据题目的描述来进行,0层图中加工“处
理借阅”在题目的描述中,其处理过程为:先检查借阅者的身份,如果身份合法,则检查借阅者是
否有逾期未还图书及罚金表中的罚金是否超过限额,如果没有,则允许借阅读书,然后是归还图
书。因此0层图中的加工“处理借阅”可以细分为1层图中的若干个加工,其分别是:检查借阅者的
身份,检查逾期未还图书,检查罚金是否超过限额,借阅读书及归还图书等加工。
【问题4】
本题主要考查根据上层数据流图绘制下层数据流图时的注意事项。其主要就是要保持父图与子
图间的平衡,具体有:父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和
名字上相同;如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而
子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。
试题3答案
【问题1】
E1:借阅者 E2:图书管理员E3/E4:学生数据库/职工数据库
【问题2】
D1:图书表 D2:借出图书表D3:逾期未还图书表D4:罚金表
【问题3】
检查借阅者身份或检查借阅者ID;检查逾期未还图书;检查罚金是否超过限额;借阅图书;归
还图书。
【问题4】
保持父图与子图平衡。父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数
量和名字上相同。如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据
流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡
的。

你可能感兴趣的:(软考-软件设计师,前端,数据库,vue.js)