还剩3页未读,继续阅读
文本内容:
数据库系统工程师考点精讲之分层数据流图 分层数据流图 从数据流图的基本目标出发,可以考虑在一张数据流图中包含多少个元素合适的问题一些调查研究表明,如果一张数据流图中包含的__多于5-9个,人们就难于领会它的含义了因此为了表达较为复杂问题的数据处理过程,数据流图应该分层当把功能级数据流图细化后得到的__超过9个时,用一个数据流图往往不够,应该采用画分图的办法一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系也就是把每个主要功能都细化为一张数据流分图,而原有的功能级数据流图用来描绘系统的整体逻辑概貌
1.分层数据流图的基本概念 根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号对任何一层数据流图来说,称它的上层数据流图为父图,称它的下一层数据流图为子图 顶层数据流图只含有一个__,表示整个系统;输入数据流和输出数据流为系统的输入数据和输出数据,表明了系统的范围,以及与外部环境的数据交换关系 底层数据流图是指其__不能再分解的数据流图,其__称为原子__. 中间数据流图是对父层数据流图中某个__进行细化,而它的某个__也可以再次细化,形成子图中间层次的多少,一般视系统的复杂程度而定
2.分层数据流图的画法
(1)画系统的输入和输出把整个软件系统看作一个大的__,然后根据系统从哪些外部实体接收数据流,以及系统发送数据流到哪些外部实体,就可以画出系统的输入和输出图,这张图称为顶层图
(2)画系统的内部将顶层图的__分解成若干个__,并用数据流将这些__连接起来,使得顶层图中的输入数据经过若干个__处理后变换成顶层图的输出数据流这张图称为0层图从一个__画出一张数据流图的过程实际上就是对这个__的分解 可以用下述的方法来确定__在数据流的组成或值发生变化的地方应画一个__,这个__的功能就是实现这一变化;也可根据系统的功能确定__ 确定数据流的方法当用户把若干个数据看作一个单位来处理(这些数据一起到达,一起__)时,可把这些数据看成一个数据流 对于一些以后某个时间要使用的数据可以组织成一个数据存储来表示
(3)画__的内部把每个__看作一个小系统,该__的输入/输出数据流看成小系统的输入/输出数据流于是可以用与画0层图同样的方法画出每个__的DFD图 对第
(3)步分解出来的DFD子图中的每个__,重复第
(3)步的分解,直至图中尚未分解的__都足够简单(也就是说这种__不必再分解)为止至此,就得到了一套分层数据流图
3.对分层数据流图和__进行编号 对于一个软件系统其数据流图可能有许多层,每一层又有许多张图为了区分不同的__和不同的数据流图子图,应该对每张图和每个__进行编号,以利于管埋
(1)父图与子图 假设分层数据流图里的某张图(记为图A)中的某个__可用另一张图(记为图B)来分解,则称图A是图B的父图,图B是图A的子图在一张图中,有些__需要进一步分解,有些__则不必分解因此,如果父图中有n个__,那么它可以有0至n张子图(这些子图位于同一层),但每张子图都只对应于一张父图
(2)编号 顶层图只有一张,图中的__也只有一个,所以不必编号 0层图只有一张,图中的__可有多个,__号可以分别是
0.
1、
0.
2、……或者是
1、
2、…… 子图号就是父图中被分解的__号 图的__号由图号、圆点和序号组成
4.分层数据流图应注意的问题 对于一个规模较大且结构复杂的信息系统,它的数据流图可能包括几千个__,要把它们都画在同一张纸上是不可能的为了控制复杂性,通常按照自顶向下,逐层分解的技术分层处理,因此在多数情况下,这样的数据流图被称作分层数据流图 分层数据流图便于人们理解和使用,但在绘制时应注意以下事项
(1)自顶向下、逐层分解就是由系统外部至系统内部、由总体到局部、由抽象到具体的系统逻辑模型建立的过程在整个数据流图绘制过程中,始终要把握住对系统总体目标与总体功能的要求,在给定的系统边界范围内进行工作为了使数据流图简洁、清晰、功能明确、方便交流,分解的层次和每张图的内容要适当 根据经验,每张图包含的__项目以不超过7-8个为宜__的分解要抓住主要问题,每个分解后的__环节功能明确,易于理解,一般分解后的__先确定输出数据流,再确定输入数据流,然后定义__的内容,进行命名和编号图上不应该有无输入或无输出的__环节 在数据流图分解中,要保持各层成分的完整性与一致性数据流图的逐层分解是以__的分解为中心的,属于功能分解性质把上层__环节称为父__环节,下层环节为子__环节__的分解可能导致数据流的分解、数据存储的分解甚至外部项的分解分解时一定要保持父项(被分解项)的内容为对应各子项(即分解后的各项)的内容之和 下层数据流图不应出现不属于上层图中的数据流子项的新的数据流,但可以出现不属于上层图的数据存储环节子项的新的数据存储环节因为随着__的分解,分解后的__(子__)之间的界面可能是上层图未定义的数据存储,这就需要在下层图加以定义、命名与编号 数据流图逐层分解也可能导致某个或某些外部项的分解因为分解后的各子__可能与上层图中某个外部项的不同组成部分相__当外部项的分解有助于更明确描述系统某些部分的功能与信息需求时,下层图要对分解后的外部项加以定义和命名下层图不应出现不属于上层图外部项的子项的新外部项
(2)数据流必须经过__环节,每条数据流的输入或者输出都是__,即必须进入__环节或从__环节流出不经过__环节的数据流(如外部项之间的数据交换)不在数据流图上表示因这类数据流与所描述的系统无直接关系
(3)数据存储环节一般作为两个__环节的界面来安排只与一个__环节有关的数据存储,如果不是公用的或特别重要的,可不在数据流图上画出直接从外部项来与直接到外部项去的数据流应直接与__环节相连,不应通过数据存储环节相连
(4)适当地为数据流、__、数据存储、外部实体命名,名字应反映该成分的实际含义,避免空洞的名字
(5)编号每个数据__环节和每张数据流图都要编号按逐层分解的原则,父图与子图的编号要有一致性,一般子图的图号是父图上对应的__的编号如0层图的图号为0其中各__环节按123…顺序编号,1号__环节分解后的子__按
1.
11.
21.3…编号,2号__环节按
2.
12.
22.3…依此类推 数据流与数据存储环节也要进行编号以便于编写、分析与维护编号方法原则上与__环节的编号方法相同
(6)保持父图与子图平衡也就是说,父图中某__的输入/输出数据流必须与它的子图的输入/输出数据流在数量和名字上相同值得注意的是,如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的
(7)保持数据守恒也就是说,一个__所有输出数据流中的数据必须能从该__的输入数据流中直接获得,或者是通过该__产生的数据
(8)局部数据存储的隐蔽性 当某层数据流图中的数据存储不是父图中相应__的外部接口,而只是本图中某些__之间的数据接口时,那么这些数据存储为局部数据存储为了强调局部数据存储的隐蔽性,一般情况下,局部数据存储只有作为某些__的数据接口或某个特定__的输入和输出时,才画出来即按照自顶向下的分析方法,某数据存储首次出现时只与一个__有关,那么这个数据存储应该作为与之关联__的局部数据存储,在该层数据流子图中不必画出,而在该__的子图中画出,除非该__为原子__ 在自顶向下的分解过程中,若一个数据存储首次出现时只与一个__有关,那么这个数据存储应作为这个__的内部文件而不必画出
(9)在整套数据流图中,每个__必须既有输入数据流,又有输出数据流,允许一个__有多条数据流流向另一个__,也允许一个__有两个相同的输出数据流流向两个不同的__,一个__的输出数据流不应与输入数据流同名,即使它们的组成成分相同;每个数据存储必须既有读的数据流,又有写的数据流,但在某一张子图中可能是只有读没有写,或者是只有写没有读
(10)只绘制所描述的系统稳定工作情况下的数据流图,不描述系统启动或结束工作时功能和数据流运动规律处于变动状态的情况
(11)画数据流而不要画控制流 更多数据库系统工程师考试资讯请到希赛软考学院。