在《软件工程——系统流程图符号及案例》中我们知道了系统流程图描述的是物理系统,那么数据流图则是用来描述系统的逻辑模型,在数据流图中没有任何具体的物理元素,只是描绘信息在系统中的流动和处理情况。并且因为数据流图是逻辑系统的图形表示,即使是非计算机专业的人员也能理解。

一. 基本图形符号

数据流图有4中基本符号元素:数据流、数据处理、数据存储、外部实体。
“→”箭头,表示数据流;
〇:圆或椭圆,表示加工;
=:双杠(带一边开口,一边闭合),表示数据存储;
□:方框,表示数据的源点或终点。

1.数据流

数据流用箭头来表示,箭头方向即数据流动方向,数据流名标在数据流线上面,数据流命名时应尽量准确。
PS:除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。

2.加工

加工也称为数据处理,是对数据进行处理的单元。数据处理名称写在烦那方框内。在分层的数据流图中,加工还应编号。

3.数据存储

数据存储为数据处理提供数据处理所需要的输入流或为数据处理的输出数据流提供存储仓库。具体指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。
流向数据存储的数据流可以理解为写入或查询文件,流出的数据流可理解为从文件读数据或查询结果。

4.数据源点和终点

数据源点和终点是软件系统外部环境中的实体(包括人、组织或其他软件系统),统称外部实体。一般只出现在数据流图的顶层图中,表示了系统中数据的来源和去处。

二. 画数据流图

  1. 画系统的输入/输出
    最初,把系统视为一个整体,看这个整体与外界的联系。分析有哪些内容是要通过外界获取的,就是系统的输入;有哪些是要向外界提供服务的,就是系统的输出。画系统的输入/输出即先画顶层数据流图.
  2. 画系统内部
    数据流图主要是用于描述系统内部的处理过程。有些内部处理过程比较简单,有些则相当复杂。描述系统内部即画下层数据流图。一般方法是将层号从0开始编号,采用自顶向下,由外向内的原则。

注意事项:

1.命名:在画数据流图中,不论数据流、数据存储还是加工的命名要合适,要易于理解其含义。命名时不能使用抽象含义的名字,比如“数据”、“信息”等等。加工名的命名也要反映其处理的功能,不能使用“处理”、“操作”这些笼统的词。

2.在画数据流图时要注意不是画控制流。数据流图反映的是系统“做什么”,不反映“如何做”,因此箭头上的数据流名称只能是名词类,整个图中不反映加工的执行顺序。

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

4.加工点的编号:子图的编号是父图中相应加工的编号的扩充,子图上加工的编号的方法是由父图号、小数点及子图的局部号组成。

soot数据流分析java 数据流图案例_数据流图


5.系统分析中要区别物流和数据流。数据流反映能用计算机处理的数据,并不是实物。6.在数据流图表示系统的数据流向时,一般都要用到父图与子图来描述不同的层次。这时要注意父图与子图的平衡。子图的输入、输出数据流同父图相应加工的输入、输出数据流必须一致,即父图与子图的平衡。

soot数据流分析java 数据流图案例_soot数据流分析java_02


上图中子图虽然有三个输入,但是因为定货单由客户、帐号和数量组成,所以不违背平衡的原则。

7.分层处理的过程中,当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。如果是局部数据存储的话,不要在父图的输入中加入该数据存储,而是在子图相应的加工上才把它画出来,这样有助于实现信息隐蔽。

8.要注意分层的合理性,减少加工之间输入、输出数据流的数目,增加数据流图的可理解性。

例题

请根据一下业务流程描述,画出某物资管理系统的数据流图:

(1)生产车间向物资部提出物资需用计划,物资部计划人员根据库存台账,编制物资采购计划;

(2)采购人员根据物资采购计划,以及供货商报价单,编制合同台账;

(3)采购的物资到货后,库存管理人员根据技术科提供的验收报告,以及合同台账,进行物资入库管理,并更新库存台账

soot数据流分析java 数据流图案例_子图_03