转载自:https://blog.csdn.net/xiaoxiang2017/article/details/81456317

数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。

数据流图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。

不要将数据流图(DFD)与系统流程图、程序流程图相混淆,数据流图是从数据角度来描述一个系统,而框图是从对数据进行加工的工作人员的角度来描述系统。

一、.基本图形符号

å¾5 æ°æ®æµå¾ç¬¦å·

    (1)数据源点或终点:系统外部环境中的实体(人员,组织或其他软件系统), 统称外部实体,表达该系统数据的外部来源和去向。

     (2)数据处理:(又称加工)对数据进行某些操作或变换,每个处理需要被命名,通常动词短语,简明描述完成什么处理。在分层的数据流图中还应编号。

     (3)数据存储:(又称为文件),指暂时保存的数据,它可以是数据库文件或任何形式的数据组织,一般为表结构。

     (4)数据流。数据流是数据传递的路径,因此由一组成分固定的数据组成,箭头表示数据流向。由于数据流是流动中的数据,所以必须有流向,除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。

二、命名方法

(1)为数据流(或数据存储)命名
    A.名字应该代表整个数据流(或数据存储)的内容;
    B.不要使用空洞的、缺乏具体含义的名字(如“数据”、“输入”);
    C.如果为某个数据流(或数据存储)起名字时遇到困难,则很可能是因为对数据流图的分解不恰当造成的,应该试试重新分解数据流图;

(2)为处理命名
    A.通常先为数据流命名,然后再为与之相关联的处理命名;
    B.名字应该反映整个处理的功能;
    C.应该尽量避免空洞笼统的动词做名字,如“处理”、“加工”;
    D.通常用一个动词命名,如果必须用两个动词才能描述整个处理的功能,则可能要把这个处理分解成两个处理更恰当;
    E.如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的情况,应考虑重新分解。

(3)为数据源点/终点命名
通常,为“数据源点/终点”命名时,采用它们在问题域中习惯使用的名字(如“仓库管理员”、“采购员”)。

三、.分层数据流图

1 、数据流图采用分层的形式来描述系统数据流向,每一层次都代表了系统数据流向的一个抽象水平,层次越高,数据流向越抽象。高层次的DFD图中处理可以进一步分解为低层次、更详细的DFD图。

据层级数据流图分为顶层数据流图、中层数据流图和底层数据流图。除顶层数据流图外,其他数据流图从零开始编号。

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

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

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

2、在单张数据流图时,必须注意以下原则:

(1)一个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。

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

(3)每个加工必须既有输入数据流,又有输出数据流。

(4)所有的数据流必须以一个外部实体开始,并以一个外部实体结束。

(5)外部实体之间不应该存在数据流

四、DFD画法   (来自百度百科)

(1)确定系统的输入输出

由于系统究竟包括哪些功能可能一时难于弄清楚,可使范围尽量大一些,把可能有的内容全部都包括进去。此时,应该向用户了解“系统从外界接受什么数据”、“系统向外界送出什么数据”等信息,然后,根据用户的答复画出数据流图的外围。

(2)由外向里画系统的顶层数据流图

首先,将系统的输入数据和输出数据用一连串的加工连接起来。在数据流的值发生变化的地方就是一个加工。接着,给各个加工命名。然后,给加工之间的数据命名。最后,给文件命名。

(3)自顶向下逐层分解,绘出分层数据流图

对于大型的系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示

举例说明:

举例一:

下图是一个飞机机票预订系统的数据流图,它反映的功能是:旅行社把预订机票的旅客信息 (姓名、年龄、单位、身份证号码、旅行时间、目的地等)输入机票预订系统。系统为旅客安排航班,打印出取票通知单(附有应交的账款)。旅客在飞机起飞的前一天凭取票通知单交款取票,系统检验无误,输出机票给旅客。

 

(1)首先画系统的输入输出,即先画顶层数据流图。顶层流图只包含一个加工,用以表示被开发的系统,然后考虑该系统有哪些输入数据、输出数据流。顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。图3-3为飞机机票预订系统的顶层图。

(2)画系统内部,即画下层数据流图。不再分解的加工称为基本加工。一般将层号从0开始编号,采用自顶向下,由外向内的原则。画0层数据流图时,分解顶层流图的系统为若干子系统,决定每个子系统间的数据接口和活动关系。例如,在上面的机票预订系统按功能可分成两部分,一部分为旅行社预订机票,另一部分为旅客取票,两部分通过机票文件的数据存储联系起来,图3-4为0层数据流图

(3)注意事项。

①命名。不论数据流、数据存储还是加工,合适的命名使人们易于理解其含义。

②画数据流而不是控制流。数据流反映系统“做什么”,不反映“如何做”,因此箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。

③一般不画物质流。数据流反映能用计算机处理的数据,并不是实物,因此对目标系统的数据流图一般不要画物质流。

④每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。

⑤编号。如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号。

⑥父图与子图的平衡。子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡。

⑦局部数据存储。当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。

⑧提高数据流图的易懂性。注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性

举例二:

(1)接受顾客的订单,检验订单,若库存有货,进行供货处理,即修改库存,给仓库开备货单,并且将订单留底;若库存量不足,将缺货订单登入缺货记录。

(2)根据缺货记录进行缺货统计,将缺货通知单发给采购部门,以便采购。

(3)根据采购部门发来的进货通知单处理进货,即修改库存,并从缺货记录中取出缺货订单进行供货处理。

(4)根据留底的订单进行销售统计,打印统计表给经理

 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐