分层数据流图简单介绍

一、分层数据流图

从数据流图的基本目标出发,可以考虑在一张数据流图中包含多少个元素合适的问题。一些调查研究表明,如果一张数据流图中包含的加工多于5-9个,人们就难于领会它的含义了。因此为了表达较为复杂问题的数据处理过程,数据流图应该分层。当把功能级数据流图细化后得到的加工超过9个时,用一个数据流图往往不够,应该采用画分图的办法。一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。也就是把每个主要功能都细化为一张数据流分图,而原有的功能级数据流图用来描绘系统的整体逻辑概貌。

1、分层数据流图的基本概念

根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号。对任何一层数据流图来说,称它的上层数据流图为父图,称它的下一层数据流图为子图。

顶层数据流图只含有一个加工,表示整个系统;输入数据流和输出数据流为系统的输入数据和输出数据,表明了系统的范围,以及与外部环境的数据交换关系。

底层数据流图是指其加工不能再分解的数据流图,其加工称为“原子加工”

中间数据流图是对父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图。中间层次的多少,一般视系统的复杂程度而定。

2、在绘制分层数据流图时应注意以下事项

(1)自顶向下、逐层分解。就是由系统外部至系统内部、由总体到局部、由抽象到具体的系统逻辑模型建立的过程。在整个数据流图绘制过中,始终要把握住对系统总体目标与总体功能的要求,在给定的系统边界范围内进行工作。为了使数据流图简洁、清晰、功能明确、方便交流,分解的层次和每张图的内容要适当。根据经验,每张图包含的加工项目以不超过7-8个为宜。加工的分解要抓住主要问题,每个分解后的加工环节功能明确,易于理解,一般分解后的加工先确定输出数据流,再确定输入数据流,然后定义加工的内容,进行命名和编号。图上不应该有无输入或无输出的加工环节。

在数据流图分解中,要保持各层成分的完整性与一致性。数据流图的逐层分解是以加工的分解为中心的,属于功能分解性质。把上层加工环节称为父加工环节,下层环节为子加工环节。加工的分解可能导致数据流的分解、数据存储的分解甚至外部项的分解。分解时一定要保持父项(被分解项)的内容为对应各子项(即分解后的各项)的内容之和。

下层数据流图不应出现不属于上层图中的数据流子项的新的数据流,可以出现不属于上层图的数据存储环节子项的新的数据存储环节。因为随着加工的分解,分解后的加工(子加工)之间的界面可能是上层图未定义的数据存储,这就需要在下层图加以定义、命名与编号。数据流图逐层分解也可能导致某个或某些外部项的分解。因为分解后的各子加工可能与上层图中某个外部项的不同组成部分相联系。当外部项的分解有助于更明确描述系统某些部分的功能与信息需求时,下层图要对分解后的外部项加以定义和命名。下层图不应出现不属于上层图外部项的子项的新外部项。

(2)数据流必须经过加工环节,每条数据流的输入或者输出都是加工,即必须进入加工环节或从加工环节流出。不经过加工环节的数据流(如外部项之间的数据交换)不在数据流图上表示。因这类数据流与所描述的系统无直接关系。

(3)数据存储环节一般作为两个加工环节的界面来安排。只与一个加工环节有关的数据存储,如果不是公用的或特别重要的,可不在数据流图上画出。直接从外部项来与直接到外部项去的数据流应直接与加工环节相连,不应通过数据存储环节相连。

(4)适当地为数据流、加工、数据存储、外部实体命名,名字应反映该成分的实际含义,避免空洞的名字。

(5)编号。每个数据加工环节和每张数据流图都要编号。按逐层分解的原则,父图与子图的编号要有一致性,一般子图的图号是父图上对应的加工的编号。如0层图的图号为0,其中各加工环节按1,2,3,…顺序编号,1号加工环节分解后的子加工按1.1,1.2,1.3,…编号,2号加工环节按2.1,2.2,2.3,…依此类推。数据流与数据存储环节也要进行编号以便于编写、分析与维护。编号方法原则上与加工环节的编号方法相同。

**(6)保持父图与子图平衡。**也就是说,父图中某加工的输入/输出数据流必须与它的子图的输入/输出数据流在数量和名字上相同。值得注意的是,如果父图的一个输入(或输出)数据流对应于图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。

(7)保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工产生的数据。

(8)局部数据存储的隐蔽性。当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口时,那么这些数据存储为局部数据存储。为了强调局部数据存储的隐蔽性,一般情况下,局部数据存储只有作为某些加工的数据接口或某个特定加工的输入和输出时,才画出来。即按照自顶向下的分析方法,某数据存储首次出现时只与一个加工有关,那么这个数据存储应该作为与之关联加工的局部数据存储,在该层数据流子图中不必画出,而在该加工的子图中画出,除非该加工为原子加工。在自顶向下的分解过程中,若一个数据存储首次出现时只与一个加工有关,那么这个数据存储应作为这个加工的内部文件而不必画出。

(9)在整套数据流图中,每个加工必须既有输入数据流,又有输出数据流,允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工,一个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同;每个数据存储必须既有读的数据流,又有写的数据流,但在某一张子图中可能是只有读没有写,或者是只有写没有读。

(10)只绘制所描述的系统稳定工作情况下的数据流图,不描述系统启动或结束工作时功能和数据流运动规律处于变动状态的情况。

(11)画数据流而不要画控制流。

二、数据平衡原则

1.父图与子图的平衡

任何一个数据流子图必须与它上一层父图的某个加工对应,二者的输入数据流和输出数据流必须保持一致,此即父图与子图的平衡。父图与子图的平衡是数据流图中的重要性质,保证了数据流图的一致性,便于分析人员阅读和理解。在父图与子图平衡中,数据流的数目和名称可以完全相同;也可以在数目上不相等,但是可以借助数据字典中数据流描述,确定父图中的数据流是由子图中几个数据流合并而成的,即子图是对父图中加工和数据流同时进行分解,因此也属于父图与子图的平衡。

2.输入输出的平衡性

每个加工必须有输入数据流和输出数据流,反映此加工的数据来源和加工变换结果。一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工产生的数据。

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值