1、数据流图简介
数据流图(数据流程图 Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,用于回答软件系统“做什么”的问题,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
2、数据流图基本符号
加工:加工描述了输入数据流到输出数据之间的变换,也就是输入数据流经过什么处理后变成了输出数据。每个加工都有一个名字和编号,编号能反映该加工位于分层的数据流图的哪个层次和哪张图中,能够看出它是由哪个加工分解出来的子加工。
数据流:是由一组固定成分的数据组成,表示数据的流向。值得注意的是,数据流图中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有一个合适的名字,以反映该数据流的含义。
数据存储文件:数据存储表示暂时存储的数据,每个数据存储都有一个名字。
外部实体:外部实体是存在于软件系统之外的实体,用于指出数据所需要的发源地或系统所产生的数据的归属地。
在同一数据流图上不能有同名的数据流,如果存在两个以上的数据流指向一个加工,或是从一个加工中输出两个以上的数据流,这些数据流会存在一定的关系:
3、数据字典
数据字典的就是对数据流图中出现的所有元素,在数据字典中都用一个词条加以定义,使每个图形元素都有一个确切的解释。
在数据字典中的条目类型:
● 数据项条目:通常为数据项的值类型,允许的取值范围等;
● 数据流条目:给出某个数据流的定义,列出该数据流的各组成数据项;
● 文件条目:对文件的定义,列出期组成的数据项;
● 加工条目:对每个不能再分解的加工做说明,包括加工的激发条件,加工的逻辑,优先级等等。
4、数据流图设计原则
(1)父图与子图的平衡原则
子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡。如上图,输入订货单细化为了客户、账号、数量,但对于父、子图仍是守恒的。
(2)数据守恒原则
指加工的输入、输出数据流是否匹配,即每一个加工既有输入数据流又有输出数据流。或者说一个加工至少有一个输入数据流,一个输出数据流。
● 这是不符合规则的,因为不能只有输入或只有输出:
● 实体与实体之间、存储与存储之间、实体与存储之间是不能够有数据流;并且数据流必须与加工有关,没有加工数据不能流来流去,下面三种情况也是不对的:
(3)加工细节隐蔽原则
画父图时,只需画出加工和加工之间的关系,不必画出各个加工内部的细节;内部细节留给子图去画。
(4)简化加工之间的关系
加工间的数据流越少,各个加工就越相对独立,耦合越低,所以应尽量减少加工间输入/输出数据流的数目。
5、分层数据流图设计
(1)顶层图
把整个系统视为一个大的加工,然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到那些外部实体,就可以画出输入输出图。这张图称为顶层图。
(2)0层图
把顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。这张图称为0层图。从一个加工画出一张数据流图的过程就是对加工的分解。
确定加工:在数据流的组成或值发生变化的地方应该画出一个加工,这个加工的功能就是实现这一变化,也可以根据系统的功能决定加工。
确定数据流:用户把若干数据当作一个单位来处理(这些数据一起到达、一起处理)时,可以把这些数据看成一个数据流。
确定数据存储:对于一些以后某个时间要使用的数据,可以组织成为一个数据存储来表示。
(3)加工子图
把每个加工看作一个小系统,把加工的输入输出数据流看成小系统的输入输出流。于是可以象画0层图一样画出每个小系统的加工的DFD图。
(4)加工子图分解图
对第三步分解出来的DFD图中的每个加工,重复第三步的分解过程,直到图中尚未分解的加工都是足够简单的(即不可再分解)。至此,得到了一套分层数据流图。
(5)编号
对于一个软件系统,其数据流图可能有许多层,每一层又有许多张图。为了区分不同的加工和不同的DFD子图,应该对每张图进行编号,以便于管理:
● 顶层图只有一张,图中的加工也只有一个,所以不必为其编号;
● 0层图只有一张,图中的加工号分别是0.1、0.2、…,或者1, 2;
● 子图就是父图中被分解的加工号;
● 子图中的加工号是由图号、圆点和序号组成,如:1.12,1.3 等。
6、数据流图注意事项
● 数据流图元素命名应该反映该成分的实际含义,避免使用空洞的名字;
● 数据流反映系统“做什么”,控制流反映“如何做”;
● 一个加工的输入数据流、输出数据流不能同名,即使他们的组成完全相同;
● 在自顶向下的分解过程中,若一个数据存储首次出现时,只与一个加工有关系,那么这个数据存储应作为这个加工的内部文件而不必画出。