数据流图(DFD)专题讲解
- 格式:pdf
- 大小:283.92 KB
- 文档页数:18
实验三数据流图与数据字典数据流图与数据字典是软件工程中常用的工具,用于描述系统的功能和数据流动。
本文将详细介绍数据流图和数据字典的定义、结构和使用方法。
一、数据流图数据流图(Data Flow Diagram,简称DFD)是一种图形化的工具,用于描述系统内部的数据流动和处理过程。
它由四个基本元素组成:数据流、处理器、数据存储和外部实体。
下面分别对这些元素进行详细介绍。
1. 数据流(Data Flow)数据流是系统中不同部分之间传输的数据。
它用箭头表示,箭头的方向表示数据的流向。
数据流可以分为输入数据流和输出数据流。
输入数据流表示从外部实体进入系统的数据,输出数据流表示从系统流出到外部实体的数据。
2. 处理器(Process)处理器表示对数据进行处理的功能模块或子系统。
它可以是一个人、一个机器或一个软件模块。
处理器接收输入数据流,经过处理后产生输出数据流。
3. 数据存储(Data Store)数据存储表示系统中用于存储数据的位置,如数据库、文件等。
数据存储是持久化的,可以在系统的不同执行过程中保存数据。
4. 外部实体(External Entity)外部实体表示系统外部的实体,可以是用户、其他系统或设备等。
外部实体与系统之间通过数据流进行数据交换。
在数据流图中,以上四个元素通过连线连接起来,形成一个完整的系统模型。
数据流图可以分为多个层次,从整体到细节逐步展开,以便更好地理解系统的功能和数据流动。
二、数据字典数据字典(Data Dictionary)是对系统中使用的数据元素进行定义和描述的文档。
它包含了系统中使用的数据元素的名称、定义、属性和关系等信息。
数据字典的主要作用是提供对系统中数据元素的统一定义和描述,以便于系统开发和维护。
数据字典的内容包括以下几个方面:1. 数据元素名称(Data Element Name)数据元素名称是对数据元素进行命名的标识符。
它应该具有描述性,能够清晰地表达数据元素的含义。
【软考】——数据流图
在软考学习中,下午题的前三道:数据流图,ER模型,UML图是基本上不能失分的,这⼏个题是最基本的题,出题的形式都是固定的,⽽数据流图这道题拿满分最重要的是耐⼼和细⼼的分析试题。
考点突破
①补充数据流图的缺失部分,包括补充数据流、补充外部实体及补充数据存储。
——实体出现的频率⽐较多
②数据流图的改错,包括改正数据流名称,数据流的起始点与终点及删除多余数据流——通过仔细分析题就可以找到错误。
③附加与数据流图相关的概念简答题。
——积累的过程
基础
数据流图(Data Flow Diagram):简称DFD,它从数据传递和加⼯⾓度,以图形⽅式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析⽅法的主要表达⼯具及⽤于表⽰软件模型的⼀种图⽰⽅法。
【基本图形符号】
【分层数据流图】
分层的数据流图主要分为:顶层图和0层图。
顶层图是确定与外部实体之间的输⼊和输出数据流。
0层图是将顶层图中的加⼯分解成若⼲个加⼯,并⽤数据流连接这些加⼯。
是顶层图的细化过程。
满⾜结构化⽅法原则中的⾃顶向下,逐层分局的原则。
【数据平衡原则】
1、分层数据流图中的数据平衡原则
⽗类和⼦类之间的数据流必须保持⼀致,包括数量和内容上⼀致,或者上(下)层输出等于上(下)层的输出。
2、每张数据流图的数据平衡原则
加⼯的输⼊数据流和输出数据流要平衡,保证加⼯的输出数据流都有对应的输⼊和输出数据流。
⿊洞:只进不出
奇迹:只出不进
灰洞:加⼯不出输出流
答题技巧总结
详细分析试题说明,充分利⽤数据平衡原则!。
数据流图(DFD)专题讲解及例题分析——解题的方法与技巧1.首先要懂得数据流图设计要略有时为了增加数据流图的清晰性,防止数据流的箭头线太长,减少交叉绘制数据流条数,一般在一张图上可以重复同名的数据源点、终点与数据存储文件。
如某个外部实体既是数据源点又是数据汇点,可以在数据流图的不同的地方重复绘制。
在绘制时应该注意以下要点:(1)自外向内,自顶向下,逐层细化,完善求精。
(2)保持父图与子图的平衡。
为了表达较为复杂问题的数据处理过程,用一个数据流图往往不够。
一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。
根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号。
对任何一层数据流图来说,称它的上层数据流图为父图,在它的下一层的数据流图为子图。
顶层数据流图只含有一个加工,表示整个系统;输入数据流和输出数据流为系统的输入数据和输出数据,表明了系统的范围,以及与外部环境的数据交换关系。
底层数据流图是指其加工不能再分解的数据流图,其加工称为“原子加工”。
中间数据流图是对父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图。
中间层次的多少,一般视系统的复杂程度而定。
任何一个数据流子图必须与它上一层父图的某个加工对应,二者的输入数据流和输出数据流必须保持一致,此即父图与子图的平衡。
父图与子图的平衡是数据流图中的重要性质,保证了数据流图的一致性,便于分析人员阅读和理解。
在父图与子图平衡中,数据流的数目和名称可以完全相同;也可以在数目上不相等,但是可以借助数据字典中数据流描述,确定父图中的数据流是由子图中几个数据流合并而成的,也即子图是对父图中加工和数据流同时进行分解,因此也属于父图与子图的平衡,如图1所示。
图1 父图与子图的平衡(3)保持数据守恒。
也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。
数据流图(DataFlowDiagram,简称DFD)声明:本资料来源于个⼈对⽹上相关资料的整理;在信息处理系统中应⽤数据流图,通过对系统中数据、数据加⼯的全⾯分析,准确勾画出系统的框架,系统开发⼈员问以此为交流平台,共同分析可⾏性、合理性等,有助于系统缺陷在分析阶段被及时的发现和消除,为系统的设计、实现、测试阶段提供准确⽽充分的分析,是确保系统及产品质量的必要条件.采⽤语⾔描述、控制流图、程序框图分析是不是⽐⽤数据流图更好呢?⽤语⾔描述进⾏分析,分析的结果是⽆形的,只有对这个系统需要完成功能的描述.是否对所有数据的输⼈、输出、数据的处理过程进⾏分析是不可见的,也就⽆法考证分析的正确性和充分性,分析是不可控的,必然导致软件的缺陷,要到软件开发阶段后期才能发现,有可能对系统产⽣⼀定危害.⽤控制流图进⾏分析,分析关注的重点是控制,通过标识其状态描述系统的⾏为;标识这些状态是如何达到的,并定义状态间的变迁.信息处理领域的系统S是通过数据驱动的,⽤控制流图的分析不能涵盖所有数据,只对能产⽣系统⾏为的数据被分析,分析是不充分的,那么某些软件的缺陷在软件开发阶段早期不会被发现.⽤程序框图进⾏分析,分析关注的重点是如何实现系统的功能,注重的是细节,它应使⽤在软件开发的设计阶段.在分析阶段要注重系统的框架,⽤程序框图的分析不能清楚地看出系统的框架,将分析和设计过程混在⼀起,容易掩盖软件的缺陷.⽤数据流图进⾏分析,分析关注的重点是数据,将⾯向控制的信息作为数据进⾏处理,涵盖系统的所有数据,能准确的抽象系统的信息处理过程.概括的描述信息流和当数据从输⼈移动到输出时被应⽤的变换,每⼀层都明确强调“⼲什么“,“需要什么”,“给出什么”;可以反映出数据的流向和处理过程;数据流图分层进⾏分析,对顶层图的分析可以发现是否有输⼊信息或需要输出的信息被遗漏,容易及早发现系统各部分的逻辑错误,也容易修正.这样逐层分解下去,系统被严密的展开,系统的框架被展现出来.数据流图还有助于消除通常存在于软件开发⼈员与系统总体及硬件⼈员的交流隔阂.系统开发⼈员通过数据流图更容易理解软件要完成什么功能,数据来源于哪⾥,结果要输出到哪等等,他们可以给软件⼈员更多合理的建议.由于采⽤数据流图进⾏分析,提⾼分析的可见性和可控性,有助于软件的缺陷在软件开发阶段早期被及时的发现和消除.⼀,数据流图的基本元素数据流图中只能有四种基本元素,如下:描述⼀个处理.输⼊数据在此进⾏变换产⽣输出数据.其中注明处理的名称.描述⼀个输⼊源点或输出汇点.其中注明源点或汇点的名称.描述⼀个数据流.被加⼯的数据及其流向.流线上注明数据名称,箭头代表数据流动⽅向.描述⼀个数据存储.通常⽤于代表⼀个数据表,其中注明数据表的名称.⼆,分层数据流图为了表达数据处理过程的数据加⼯情况,⽤⼀个数据流图往往是不够的.稍为复杂的实际问题,在数据流图上常常出现⼗⼏个甚⾄⼏⼗个加⼯.这样的数据流图看起来很不清楚.层次结构的数据流图能很好地解决这⼀问题.按照系统的层次结构进⾏逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统.下图给出分层数据流图的⽰例.数据处理S包括三个⼦系统1,2,3.顶层下⾯的第⼀层数据流图为DFD/L1.第⼆层数据流图DFD/L2.1,DFD/L2.2及DFD/L2.3分别是⼦系统1,2和3的细化.对任何⼀层数据流图来说,我们称它的上层图为⽗图,在它下⼀层的图则称为⼦图.三,画数据流图的步骤和原则基本步骤:⾃外向内,⾃顶向下,逐层细化,完善求精.基本原则:①数据流图上所有图形符号只限于前述四种基本元素.②顶层数据流图必须包括前述四种基本元素,缺⼀不可.③顶层数据流图上的数据流必须封闭在外部实体之间.④每个加⼯⾄少有⼀个输⼊数据流和⼀个输出数据流.⑤在数据流图中,需按层给加⼯框编号.编号表明该加⼯处在哪⼀层,以及上下层的⽗图与⼦图的对应关系.⑥规定任何⼀个数据流⼦图必须与它上⼀层的⼀个加⼯对应,两者的输⼊数据流和输出数据流必须⼀致.此即⽗图与⼦图的平衡.⑦可以在数据流图中加⼊物质流,帮助⽤户理解数据流图.⑧图上每个元素都必须有名字.数据流和数据⽂件的名字应当是"名词"或"名词性短语",表明流动的数据是什么.加⼯的名字应当是"名词+宾语",表明做什么事情.⑨数据流图中不可夹带控制流.⑩初画时可以忽略琐碎的细节,以集中精⼒于主要数据流.四,数据流图应⽤举例例⼦待续。
数据流图DFD逻辑模型的工具——只反映信息在系统中流动和处理情况的图称为数据流图,它是描述系统逻辑模型的工具之一。
数据流图(Data Flow Diagram,简称DFD)是便于用户理解系统数据流程的图形表示。
它能精确地在逻辑上描述系统的功能、输入、输出和数据存贮等,而摆脱了其物理内容。
数据流图是系统逻辑模型的重要组成部分。
系统分析阶段必须进行全面准确的收集、整理、分析收集的数据及其流程。
一、数据收集数据收集工作量很大, 故要求系统研制人员应具备经营管理的素质,耐心细致地深入实际,配合业务人员收集与系统有关的一切数据。
1.数据收集的渠道现行的组织机构;现行系统的业务流程;现行的决策方式;各种报表、报告、图示。
2.数据的来源(1)组织的正式报告(对于手工系统而言):各种卡片、报表;会议决议。
(2)现行系统的说明性文件(对于已局部计算机化了的系统而言):各种流程图;计算机文件(数据库)系统的数据组织结构。
(3)组织外的数据来源:上级下达的各种文件和各项任务指标;与本单位密切相关的其它单位的有关信息。
3.收集数据的方法(1)查阅档案:到各个科室按收集数据的类型,查阅档案材料。
有时候没有现成的档案,系统分析员就要帮助这些部门建立档案材料。
如一个企业的各种报表应该汇编成册,每张报表编上号,注明用途、填报单位、报送单位、月用量、年用量等。
如果企业没有做这方面的工作,我们只好自己动手去收集这些报表,编成册,统一标号,调查各种使用情况,作为技术档案资料保存起来,以备日后查阅。
(2)面谈调查:对各级管理人员和工作人员要自上而下地进行访问。
调查有关系统总貌、系统目标、环境约束、近年内信息的需求情况,以及他们对现有信息系统的看法(包括有哪些信息是多余的,有哪些或哪方面的信息是急需补充和加强的等等)。
(3)发调查表:对于要作普遍调查的问题,可以发调查表进行调查。
(4)测定:有些数据,如业务的吞吐量、各项工作的时间和费用要实测一段时间。
1某公司为了给员工分配住房,开发了员工住房分配系统,功能如下:计算原始分:根据员工信息(员工号、姓名、年龄、性别、学历、工龄、婚否、职务、职称、住房情况)计算原始分,并将员工信息存入员工信息文件中。
计算标准分:根据员工的原始分计算标准分,并将其存入员工分数文件(员工号、标准分)。
计算分房分:根据标准分、分房计划文件(员工号、住房请求)中的分房人数,计算分房分,并存入分房分数文件(员工号、分房分)中。
分房分查询:员工可以根据自己的员工号查询相应的分房分,若输入错误则返回出错信息。
试根据上面的系统功能描述:(1)画出该系统的分层数据流图。
(8分)(2)写出相应的数据字典(要求至少写出三项)。
(4分)(3)将数据流图转换为软件的结构图。
(8分)(1):1)2)第一层数据流图员工信息文件员工分数文件夹分房分数文件2.名称:员工信息别名:描述:员工的各种信息定义:员工号+姓名+年龄+性别+学历+工龄+婚否+职务+职称+住房情况位置:员工信息文件名称:分房计划文件别名:描述:准备分房的计划定义:员工号+住房请求位置:公司系统名称:分房分数文件别名:描述:计算出的每个员工分房分数的文件定义:员工号+分房分位置:公司系统2阅读以下说明和图,回答问题1至问题5,将解答填入答题纸的对应栏内。
(20分)【说明】某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:1)每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。
课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
2)学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
3)在记录学生成绩之前,系统需要验证这些成绩是否有效。
首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。
实验三数据流图与数据字典一、数据流图(DFD)数据流图是一种图形化的工具,用于描述系统中数据的流动和处理过程。
它能够清晰地展示系统的功能和数据之间的关系,帮助我们更好地理解系统的运作原理。
在本实验中,我们将使用数据流图来描述一个在线购物系统的功能和数据流动。
1. 上下文图(Context Diagram)上下文图是数据流图的最高层次,用于描述系统与外部实体之间的交互。
在我们的在线购物系统中,主要涉及三个外部实体:用户、商家和支付系统。
下面是上下文图的描述:- 用户:用户通过网页或移动APP与系统进行交互,可以浏览商品、下单、支付等。
- 商家:商家通过网页或移动APP管理商品信息、处理订单等。
- 支付系统:负责处理用户支付的第三方支付系统。
2. 0级数据流图(Level 0 DFD)0级数据流图展示了系统的主要功能和数据流动。
在我们的在线购物系统中,主要包括以下功能和数据流:- 用户注册和登录:用户可以通过注册和登录功能进行身份验证,以便进行购物和支付。
- 商品浏览:用户可以浏览系统中的商品信息,包括商品名称、价格、库存等。
- 商品搜索:用户可以根据关键词搜索系统中的商品。
- 下单:用户可以选择商品并下单购买。
- 订单处理:商家可以接收并处理用户的订单,包括确认订单、发货等。
- 支付处理:用户可以选择支付方式进行支付,支付系统负责处理支付请求。
- 数据存储:系统需要存储用户信息、商品信息、订单信息等数据。
二、数据字典(Data Dictionary)数据字典是对数据流图中使用到的数据流、数据存储和处理过程进行详细描述的文档。
它包含了数据流的名称、含义、数据类型、取值范围等信息,帮助我们更好地理解系统中的数据流动。
在我们的在线购物系统中,以下是数据字典的一部分示例:1. 数据流数据流名称:用户注册信息含义:用户在注册时提交的个人信息,包括用户名、密码、邮箱等。
数据类型:字符串取值范围:长度不超过50个字符数据流名称:商品信息含义:系统中的商品信息,包括商品名称、价格、库存等。
1/4杭州电子科技大学计算机学院 软件与智能研究所某公司为了给员工分配住房,开发了员工住房分配系统,功能如下:计算原始分:根据员工信息(员工号、姓名、年龄、性别、学历、工龄、婚否、职务、职称、住房情况)计算原始分,并将员工信息存入员工信息文件中。
计算标准分:根据员工的原始分计算标准分,并将其存入员工分数文件(员工号、标准分)。
计算分房分:根据标准分、分房计划文件(员工号、住房请求)中的分房人数,计算分房分,并存入分房分数文件(员工号、分房分)中。
分房分查询:员工可以根据自己的员工号查询相应的分房分,若输入错误则返回出错信息。
试根据上面的系统功能描述:(1) 画出该系统的分层数据流图。
(8分)(2) 写出相应的数据字典(要求至少写出三项)。
(4分) (3) 将数据流图转换为软件的结构图。
(8分) (1):1)2) 第一层数据流图员工信息文件员工分数文件夹分房分数文件2.名称:员工信息 别名:描述:员工的各种信息定义:员工号+姓名+年龄+性别+学历+工龄+婚否+职务+职称+住房情况 位置:员工信息文件名称:分房计划文件 别名:描述:准备分房的计划 定义:员工号+住房请求 位置:公司系统名称:分房分数文件 别名:描述:计算出的每个员工分房分数的文件定义:员工号+分房分位置:公司系统2阅读以下说明和图,回答问题1至问题5,将解答填入答题纸的对应栏内。
(20分)【说明】某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:1)每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。
课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
2)学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
3)在记录学生成绩之前,系统需要验证这些成绩是否有效。
首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。
软件设计师考试的下午题的第一道题,数据库系统工程师考试的下午题的第一道题都是数据流图题,而能够将这道题全部做对的考生是非常少的。
根据历年的辅导和阅卷经验,发现很多考生不是因为这方面的解题能力不够,而是缺乏解这种题的方法与技巧。
本文介绍一些解这种类型题的方法和技巧,希望起来抛砖引玉的效果。
一.解题当中考生表现出的特点由于这是下午考试的第一道题,所以很多考生从考前的紧张氛围当中逐渐平静下来开始答题,头脑还比较清醒,阅读起来比较流畅,速度还可以,自我感觉不错。
可偏偏这道题有很多人不能全取15分,纠其原因有以下一些特点:1.拿卷就做,不全面了解试卷,做到心中有数。
这样会导致在解题过程当中缺少一种整体概念,不能明确自己在哪些题上必需拿分(多花时间),哪些题上自己拿不了分(少花时间)。
这样,在解题时目标就会明确很多。
2.速度快,读一遍题就开始动手做。
3.速度慢,用手指逐个字的去看,心想看一遍就能做出题来。
4.在阅读题目时,不打记,不前后联系起来思考。
5.边做边怀疑边修改,浪费时间。
6.缺少的数据流找不准,可去掉的文件找不出来。
7.由于缺少项目开发经验,对一些事务分析不知如何去思考。
8.盲目乐观,却忽略了答题格式,丢了不应该丢的分。
二.解题的方法与技巧1.首先要懂得数据流图设计要略。
有时为了增加数据流图的清晰性,防止数据流的箭头线太长,减少交叉绘制数据流条数,一般在一张图上可以重复同名的数据源点、终点与数据存储文件。
如某个外部实体既是数据源点又是数据汇点,可以在数据流图的不同的地方重复绘制。
在绘制时应该注意以下要点:(1)自外向内,自顶向下,逐层细化,完善求精。
(2)保持父图与子图的平衡。
为了表达较为复杂问题的数据处理过程,用一个数据流图往往不够。
一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。
根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号。
对任何一层数据流图来说,称它的上层数据流图为父图,在它的下一层的数据流图为子图。
顶层数据流图只含有一个加工,表示整个系统;输入数据流和输出数据流为系统的输入数据和输出数据,表明了系统的范围,以及与外部环境的数据交换关系。
底层数据流图是指其加工不能再分解的数据流图,其加工称为“原子加工”。
中间数据流图是对父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图。
中间层次的多少,一般视系统的复杂程度而定。
任何一个数据流子图必须与它上一层父图的某个加工对应,二者的输入数据流和输出数据流必须保持一致,此即父图与子图的平衡。
父图与子图的平衡是数据流图中的重要性质,保证了数据流图的一致性,便于分析人员阅读和理解。
在父图与子图平衡中,数据流的数目和名称可以完全相同;也可以在数目上不相等,但是可以借助数据字典中数据流描述,确定父图中的数据流是由子图中几个数据流合并而成的,也即子图是对父图中加工和数据流同时进行分解,因此也属于父图与子图的平衡,如图1所示。
图1 父图与子图的平衡(3)保持数据守恒。
也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。
每个加工必须有输入数据流和输出数据流,反映此加工的数据来源和加工变换结果。
一个加工的输出数据流只由它的输入数据流确定。
数据流必须经过加工,即必须进入加工或从加工中流出。
(4)加工细节隐蔽。
根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节。
当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口时,那么这些数据存储为局部数据存储。
为了强调局部数据存储的隐蔽性,一般情况下,局部数据存储只有作为某些加工的数据接口或某个特定加工的输入和输出时,才画出来。
即按照自顶向下的分析方法,某数据存储首次出现时只与一个加工有关,那么这个数据存储应该作为与之关联加工的局部数据存储,在该层数据流子图中不必画出,而在该加工的子图中画出,除非该加工为原子加工。
(5)简化加工间的关系。
在数据流图中,加工间的数据流越少,各个加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。
(6)均匀分解。
应该使一个数据流中的各个加工分解层次大致相同。
(7)适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字。
(8)忽略枝节。
应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性的问题。
(9)表现的是数据流而不是控制流。
数据流图与传统的程序流程图不同,数据流图是从数据的角度来描述一个系统的,而流程图则是从对数据加工的角度来描述系统的。
数据流图中的箭头是数据流,而流程图中的箭头则是控制流,它表达的是程序执行的次序。
数据流图适合于宏观地分析一个组织的业务概况,而程序流程图只适合于描述系统中某个加工的执行细节。
每个加工必须既有输入数据流,又有输出数据流;在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读、没有写,或者只有写、没有读。
2.解题的方法。
(1) 数据平衡原则。
数据平衡原则分为两个方面:① 在分层数据流图中,父图和子图要平衡,也就是说,父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。
②数据平衡的另一个方面是说:每个加工必须即有输入数据流又有输出数据流,而且一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。
(2) 要特别注意的几个细节问题。
① 除了流向数据存储(文件)或从数据存储流出的数据流不必命名外,其它每个数据流都必须有一个合适的名字。
②流向文件的数据流,表示写入数据,流出文件的数据流表示读文件。
在整套数据流图中,每个文件必须既有读的数据流又有写的数据流,但在某一张子图中可能只有读没有写,或者只有写没有读。
③在逐步精化的过程中,若一个文件首次出现时只与一个加工有关,既该文件是个加工的内部文件,那么该文件在当层图中不必画出,可在该加工的细化图中画出。
3.解题的技巧。
(1)阅读题干的技巧。
快速的阅读第一遍,基本了解题目所涉及到的知识点或者事务,打记实体对象和存储文件,甚至可以将数据流也标记一下;这一步重点落在问题上,一般问题不难,但一定要看清问题。
带着问题来看第二遍,边看边解决。
(2)要有整体的概念,不能因一个点符合就断定是它,尤其是数据对象。
(3)注意解题的速度,一般在20分钟以内为最好。
(4)解题的过程中,每一条数据流都能够在[说明]中找到相应的语句。
(5)数据流名称要写对,每错一个字扣0.5分;流向也要写对。
(6)做好以后,复查一遍;不要边做边怀疑、边修改,那样会担误时间,且错误更多。
三.例题讲解例1:【软件设计师(数据库系统工程师)2007年11月真题】试题一(共15分)阅读以下说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。
课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。
首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。
4. 对于有效成绩,系统将其保存在课程成绩文件中。
对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。
在教务处没有给出具体处理意见之前,系统不会处理这些成绩。
5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。
教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。
6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。
主讲教师须将核对之后的成绩报告返还系统。
7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。
考试委员会在审查之后,上交一份成绩审查结果给系统。
对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。
现采用结构化方法对这个系统进行分析与设计,得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。
图1-2 0层数据流图【问题1】(4分)使用说明中的词语,给出图1-1中的外部实体E1~E4的名称。
【问题2】(3分)使用说明中的词语,给出图1-2中的数据存储D1~D5的名称。
【问题3】(6分)数据流图1-2缺少了三条数据流,根据说明及数据流图1-1提供的信息,分别指出这三条数据流的起点和终点。
【问题4】(2分)数据流图是在系统分析与总体设计阶段宏观地描述系统功能需求的重要图形化工具,程序流程图也是软件开发过程中比较常用的图形化工具。
简要说明程序流程图的适用场合与作用。
试题分析:本题考查的是DFD的应用,属于比较传统的题目,考查点也与往年类似。
问题1考查的是顶层DFD。
顶层DFD通常用来确定系统边界,其中只包含一个唯一的加工(即待开发的系统)、外部实体及外部实体与系统之间的输入输出数据流。
题目要求填充的正是外部实体。
从顶层DFD可以看出,数据流是完整的。
所以只要根据数据流从题目说明的上下文中,找出E1~E4所对应的外部实体,分别为考试委员会、主讲教师、学生和教务处。
0层DFD中缺少的东西比较多,要求填写数据存储及缺失的数据流。
先来确定数据存储。
首先,从说明中找出可能是数据存储的元素来。
很明显,学生信息文件、课程信息文件、课程单元信息文件、课程成绩文件和无效成绩文件应该是数据存储。
下面的工作就是对号入座。
从0层DFD上可以看到,加工3到D5有一条数据流;而加工3所完成的操作是“记录无效成绩”。
从说明中可知,“对于无效成绩,系统会单独将其保存在无效成绩文件中”,所以D5应该是数据存储“无效成绩文件”;类似地,从加工2气己录有效成绩”到D4有一条数据流,这说明D4就是数据存储“课程成绩文件”。
D1输出两条数据流,分别流向加工1“验证学生信息”和加工4“生成成绩列表”。
由说明“根据学生信息文件来确认该学生是否选修这门课程”可知,验证学生信息时,需要根据学生信息文件来进行;而生成成绩列表及成绩单时,学生信息都是必要的。