首页 > 编程知识 正文

数据流图的画法,画数据流图的例题

时间:2023-05-06 02:33:05 阅读:153821 作者:2662

数据流图(DFD )画法要求

一.数据流图(DFD )。

1 .数据流图的基本符号

数据流图由4个基本符号组成,如图5-4-1所示。

图5-4-1数据流图的基本符号

例如:图5-4-2是简单的数据流图,表示数据x从源s流出,在P1加工中转换为y,然后在P2加工中转换为z,在加工中从f读取数据。

图5-4-2数据流图示例

以下详细讨论各基本符号的使用方法。

2 .数据流

数据流由一组特定的数据组成。 例如,“发票”是由品名、规格、单位、单价、数量等数据组成的数据流。 数据流由带有命名箭头的线段表示,名称称为数据流名称,表示要流的数据,箭头表示流。 数据流可以从加工流向加工,从加工流向文件,从源点到加工,或从加工流向终点。

数据流的显示有以下规则:

您不需要命名流入或流出文件的数据流。 因为文件本身足以说明数据流。 其他数据流必须显示名称,名称必须反映数据流的含义。

数据流不允许同名。

允许两个数据流在结构上是相同的,但要体现人们对数据流的不同理解。 例如,图5-4-3(a )的合理的收据和收据这两个数据流,虽然它们的结构相同,但是追加了前者是合理性的信息。

两种加工之间可能有几种不同的数据流,如图5-4-3(b )所示。 这是因为用途不同,或者它们之间没有联系,或者它们的移动时间不同。

(a ) (b ) ) c ) )。

图5-4-3简单数据流图示例

数据流图表示数据流,而不是控制流。 如图5-4-3(c )所示,“月末”只是为了刺激加工“工资计算”,不是数据流,而是控制流,应该从图上删除。

3 .加工处理

加工处理是对数据进行的操作,将流入的数据流转换为流出的数据流。 必须为每个加工操作指定名称和含义,并指定用于标识分层分解中加工位置的编号。 名称必须包含“计算”、“打印”等动词。

有两种转换数据加工的方法。

对数组内的各数据进行排序等,改变数据的结构

创造新数据。 例如,统计原始数据,求出平均值。

4 .文件

文件是保存数据的工具。 文件名应当与其内容一致,写在开口的长条内。 从文件流入或流出数据流时,数据流的方向很重要。 读取文件时,数据流的方向必须从文件中流出,写入文件时相反; 对于读写,数据流是双向的。 修改文件时,必须先阅读文件,但因为其本质是写入文件,所以数据流必须流向文件,而不是双向。

例如,在图5-4-3(a )中,在检查合理加工时,为了从库存帐目文件中只读出库存信息并与收据进行核对,数据流从文件中流出,箭头指向加工。

5 .数据源或终点

数据源和端点表示数据的外部源和位置。 通常,它是系统外的人员或组织,不受系统管理。

同一个源点、端点或文件可能会在不同的位置多次出现,以避免线条在数据流图中交叉。 在这种情况下,源(在端点符号的右下角画一个小斜线,或者在文件符号的左侧画一条竖线以表示重复,如图5-4-4所示。

图5-4-4重复的源点、端点或文件

由上图可知,数据流图用基本的符号可以直观地表示系统的数据流、加工、存储等过程。 但是,无法表达各数据和加工的具体、详细的含义。 这些信息需要用“数据词典”和“加工说明”来表示。

6 .如何绘制DFD

一般遵循“由外而内”的原则。 也就是说,先决定系统的边界和范围,再考虑系统内部,描绘加工的输入输出,然后描绘加工的内部。 也就是说:

)1)识别系统的输入输出。

)2)从输入端到输出端绘制数据流和加工,同时添加文件。

)3)加工分解“由外而内”分解。

)数据流命名、命名应准确,能反映全局。

)5)各种符号布局要合理,分布均匀,尽量避开交叉线。

(6)首先考虑稳定状态,然后考虑瞬间状态。 如果系统自启动以来运行正常,请稍后考虑系统的启动和关闭状态。

根据问题的不同,数据流图可以有不同的画法。 一般来说,应该遵守“由外向内”的原则。 也就是说,先决定系统的边界和范围,再考虑系统的内部,描绘加工的输入输出,再描绘加工的内部。 要具体执行时可以按以下步骤进行。

)1)识别系统的输入和输出,绘制顶层图

也就是说,确定系统的边界。 在系统分析的初期,系统的功能需求等还不明确,为了防止泄漏,请先扩大范围。 系统边界确定后,跨界数据流为系统的输入或输出,输入和输出通过加工符号连接,加上输入数据源和输出数据的目的地,形成顶层图。

)2)绘制系统内部数据流、加工和文件,绘制进一步细化图

从系统的输入端到输出端,反之亦然,分阶段通过数据流和加工连接,当数据流的组成或值发生变化时,在那里进行绘制

一个“加工”符号。

画数据流图时还应同时画上文件,以反映各种数据的存贮处,并表明数据流是流入还是流出文件。

最后,再回过头来检查系统的边界,补上遗漏但有用的输入输出数据流,删去那些没被系统使用的数据流。

(3)加工的进一步分解,画出二级细化图

同样运用“由外向里”方式对每个加工进行分析,如果在该加工内部还有数据流,则可将该加工分成若干个子加工,并用一些数据流把子加工联接起来,即可画出二级细化图。二级细化图可在一级细化图的基础上画出,也可单独画出该加工的二级细化图,二级细化图也称为该加工的子图。

(4)其它注意事项

一般应先给数据流命名,再根据输入/输出数据流名的含义为加工命名。名字含义要确切,要能反映相应的整体。若碰到难以命名的情况,则很可能是分解不恰当造成的。应考虑重新分解。

从左至右画数据流图。通常左侧、右侧分别是数据源和终点,中间是一系列加工和文件。正式的数据流图应尽量避免线条交叉,必要时可用重复的数据源、终点和文件符号。此外,数据流图中各种符号布置要合理,分布应均匀。

画数据流图是一项艰巨的工作,要做好重画的思想准备,重画是为了消除隐患,有必要不断改进。

因为作为顶层加工处理的改变域是确定的,所以改变域的分解是严格的自顶向下分解的。由于目标系统目前还不存在,应此分解时开发人员还需凭经验进行,这是一项创造性的劳动。同时,在建立目标系统数据流图时,还应充分利用本章讲过的各种方法和技术,例如:分解时尽量减少各加工之间的数据流;数据流图中各个成分的命名要恰当;父图与子图间要注意平衡等等。

当画出分层数据流图,并为数据流图中各个成分编写词典条目或加工说明后,就获得了目标系统的初步逻辑模型。

二、画分层数据流图时应注意的问题

下面从四个方面讨论画分层数据流图时应注意的问题。

1.合理编号

分层数据流图的顶层称为0层,称它是第1层的父图,而第1层既是0层图的子图,又是第2层图的父图,依此类推。由于父图中有的加工可能就是功能单元,不能再分解,因此父图拥有的子图数少于或等于父图中的加工个数。

为了便于管理,应按下列规则为数据流图中的加工编号:

l          子图中的编号为父图号和子加工的编号组成。

l          子图的父图号就是父图中相应加工的编号。

为简单起见,约定第1层图的父图号为0,编号只写加工编号1、2、3...,下面各层由父图号1、1.1等加上子加工的编号1、2、3...组成。按上述规则,图的编号即能反映出它所属的层次以及它的父图编号的信息,还能反映子加工的处理信息。例如1表示第1层图的1号加工处理,1.1、1.2、1.3...表示父图为1号加工的子加工,1.3.1、1.3.2、1.3.3...表示父图号为1.3加工的子加工。

为了方便,对数据流图中的每个加工,可以只标出局部号,但在加工说明中,必须使用完整的编号。例如图5-4-5可表示第1层图的1号加工的子图,编号可以简化成图中的形式。

图5-4-5  简化子图编号示例

2.注意子图与父图的平衡

子图与父图的数据流必须平衡,这是分层数据流的重要性质。这里的平衡指的是子图的输入、输出数据流必须与父图中对应加工的输入、输出数据流相同。但下列两种情况是允许的,一是子图的输入/输出流比父图中相应加工的输入/输出流表达得更细。例如,在图5-4-6中,若父图的“订货单”数据流是由客户、品种、帐号、数量四部分组成,则图中的子图和父图是平衡的。在实际中,检查该类情况的平衡,需借助于数据词典进行。二是考虑平衡时,可以忽略枝节性的数据流。例如图5-4-6,在4号加工的子图中4.3号子加工中增加了一个输出,表示出错的数据流(由虚线所示),则子图和父图仍可看作是平衡的。

3.局部文件

图5-4-7中的父图和子图是平衡的,但子图中的文件W并没在父图中出现。这是由于对文件W的读、写完全局限在加工3.3之内,在父图中各个加工之间的界面上不出现,该文件是子图的局部文件或为临时文件。

图5-4-7  数据流图中的局部文件

应当指出的是,如果一个临时文件在某层数据流图中的某些加工之间出现,则在该层数据流图中就必须画出这个文件。一旦文件被单独画出,那么也需画出这个文件同其它成分之间的联系。

4.分解的程度

对于规模较大的系统的分层数据流图,如果一下子把加工直接分解成基本加工单元,一张图上画出过多的加工将使人难以理解,也增加了分解的复杂度。然而,如果每次分解产生的子加工太少,会使分解层次过多而增加作图的工作量,阅读也不方便。经验表明,一般说来一个加工每次分解量最多不要超过七个为宜。同时,分解时应遵循以下原则:

l          分解应自然,概念上要合理、清晰。

l          上层可分解的快些(即分解成的子加工个数多些),这是因为上层是综合性描述,对可读性的影响小。而下层应分解得慢些。

l          在不影响可读性的前提下,应适当地多分解成几部分,以减少分解层数。

l          一般说来,当加工可用一页纸明确地表述时,或加工只有单一输入/输出数据流时(出错处理不包括在内),就应停止对该加工的分解。另外,对数据流图中不再作分解的加工(即功能单元),必须作出详细的加工说明,并且每个加工说明的编号必须与功能单元的编号一致。

三、数据流图的修改

前面介绍了画数据流图的基本方法。对于一个大型系统来说,由于在系统分析初期人们对于问题理解的深度不够,在数据流图上也不可避免地会存在某些缺陷或错误。因此还需要进行修改,才能得到完善的数据流图。这里介绍如何从正确性和可读性方面对数据流图进行改进。

1.正确性

数据流图的正确性,可以从以下几个方面来检查:

(1)数据守恒

(2)文件使用

在数据流图中,文件与加工之间数据流的方向应按规定认真标注,这样也有利于对文件使用正确性的检查。例如,在图5-4-8中,因为文件1和文件2是子图的局部文件,所以在子图中应画出对文件的全部引用。但子图中文件2好象一个“渗井”,数据只流进不流出,显然是一个错误。

图5-4-8  局部文件使用错误

(3) 子、父图平衡

造成子图与父图不平衡的一个常见原因是在增加或删除一个加工时,忽视了对相应父图或子图的修改。在检查数据流图时应注意这一点。

(4) 加工与数据流的命名

加工和数据流的名字必须体现被命名对象的全部内容而不是一部分。对于加工的名字,应检查它的含义与被加工的输入/输出数据流是否匹配。

一个加工的输出数据流仅由它的输入数据流确定,这个规则绝不能违背。数据不守恒的错误有两种,一是漏掉某些输入数据流,二是某些输入数据流在加工内部没有被使用。虽然有时后者并不一定是个错误,但也要认真考虑,对于确实无用的数据就应该删去,以简化加工之间的联系。

在检查数据流图时,应注意消除控制流。

2.可读性

数据流图的可读性,可以从以下几个方面来提高:

(1)简化加工之间的联系

各加工之间的数据流越少,各加工的独立性就越高。因此应当尽量减少加工之间数据流的数目,有必要时可采用后面要介绍的步骤对数据流图重新分解。

(2)分解应当均匀

在同一张数据流图上,应避免出现某些加工已是功能单元,而另一些加工却还应继续分解好几层的情况出现。否则应考虑重新分解。

(3)命名应当恰当

理想的加工名由一个具体的动词和一个具体的宾语(名词)组成。数据流和文件的名字也应具体、明确。

3. 数据流图重新分解的步骤

有时需要对作出的部分或全部数据流图作重新分解,可按以下步骤进行:

(1)把需要重新分解的所有子图连成一张;

(2)根据各部分之间联系最少的原则,把图划分成几部分;

(3)重建父图,即把第二步所得的每一部分画成一个圆圈,各部分之间的联系就是加工之间的界面;

(4)重建各张子图,只需把第二步所得的图,按各自的边界剪开即可;

(5)为所有加工重新命名、编号。

例如,图5-4-9中加工2和其它加工的联系太复杂以致很难独立理解,所以其结构不太合理。因为图5-4-9的子图是由不相连的两部分组成的,所以将它们的父图加工分成两个更为合适。

图5-4-9 结构不合理的数据流图

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。