您好,欢迎访问三七文档
下面通过一个简单例子具体说明怎样画数据流图。假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据;零件编号、零件名称、定货数量、目前价格、主要供应者和次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货数据流图有四种成分:源点或终点、处理、数据存储和数据流。因此,画出上述定货系统的数据流图可采用以下步骤。从问题描述中提取数据流图的四种成分。·接下来考虑处理·最后,考虑数据流和数据存储表3.1总结了上面分析的结果,其中加星号标记的是在问题描述中隐含的成分。表3.1源点/终点处理采购员仓库管理员产生报表处理事务数据流数据存储定货报表零件编号零件名称定货数量目前价格主要供应者次要供应者零件编号*事务类型数量*定货信息(见定货报表)库存清单零件编号*库存量库存量临界值一旦把数据流图的四种成分都分离出来以后,就可以着手画数据流图了。任何系统的基本模型都由若干个数据源点/终点以及一个处理组成,这个处理就代表了系统对数据加工变换的基本功能。对于上述的定货系统可以画出如图3.4所示的基本系统模型。从基本系统模型这样非常高的抽象层次开始画数据流图是一个好办法。在这个高层次的数据流图上是否列出了所有给定的数据源点/终点是一目了然的,因此它是很有价值的通信工具图3.4(突出表明了数据的源点和终点)下一步应该把基本系统模型细化,描绘系统的主要功能。在图3.5中给处理和数据存储都加了编号,这样做的目的接下来应该对功能级数据流图中描绘的系统主要功能进一步细化。当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。图3.5定货系统的功能级数据流图图3.6把处理事务的功能进一步分解后的数据流图数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性,因此,给这些成分起名字时应该仔细推敲。下面讲述在命名时应注意的问题。1为数据流(或数据存储)·名字应代表整个数据流(或数据存储)的内容,而不是·不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)·如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试2·通常先为数据流命名,然后再为与之相关联的处理命名。这样命名比较容易,而且体现了人类习惯的“由表及里”·名字应该反映整个处理的功能,而不是它的一部分功能。·名字最好由一个具体的及物动词,加上一个具体的宾语组成。应该尽量避免使用“加工”、“处理”等空洞笼统·通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可·如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。数据流程图一、数据流程图的构成DFD图素有四种。顾客外部实体订货合同数据流3.5库存管理处理D2产品存储(数据库)二、数据流程图的绘制方法由外向内,先外部后内部,先粗后细。由顶向下,先父图后子图。由左向右,从输入到处理到输出。由主到次,先处理一般情况,再处理特例、出错等特殊情况。合理命名,惟一标识,反映层次。父子图平衡。以层次不越过4,每层处理不超过7为宜,最终功能模块处理逻辑和数据库设计。尽量避免数据流的线条交叉。三、数据流程图(父子图)的平衡例:Pabe0layerP1P2P3bacde1layer0layer有两个外部输入信息a,b,一个外部输出信息e。1层有3个子系统,输入到P1,P2的外部信息有a,b,P3输出为e。这说明0层到1层是平衡的。acfhP1.1P1.2P1.3bdP2.1P2.2kelmnqP3.1P3.1P3.3P3.4cd(c)(b)(a)从这个抽象的例子可以了解绘制DFD规则的意思:由外向内,由顶向下逐层细化,由左向右画出,数据流程,处理逻辑的命名规则等。在构造DFD图时,应避免如下错误:关于处理单元:1)只有输入没有输出(黑洞)2)只有输出没有输入(数据不守恒)3)所有的输入数据不足以产生输出结果(灰洞)关于数据存贮:任一个数据存贮,必须有写入的数据流和读出的数据流。画流程时注意,一个处理过程要读文件,数据流的箭头应该指向处理过程,若是写文件则箭头指向数据存储;修改文件采用双向箭头;除查询外,一般处理过程总有数据存储的写入流。关于数据流:任何一个数据流至少有一端是处理过程。父图中某一处理过程的输入、输出数据流必须反映在相应的子图中,否则出现数据流图不平衡。
本文标题:数据流程图
链接地址:https://www.777doc.com/doc-1043221 .html