数据流图(DFD)是一种便于用户理解、分析系统数据流程的图形工具,是软件系统分析阶段用于描述系统逻辑模型的图形描述工具,用于回答软件系统“做什么”的问题,它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。
数据流图(DFD)具有抽象性和概括性。抽象性表现在它完全舍去了具体的物质,只剩下数据的流动、加工处理和存储;概括性表现在它可以把信息中的各种不同行业处理过程联系起来,形成一个整体。常用的加工逻辑描述方法主要有结构化语言、判定树、判定表等
数据流图DFD是将提供给用户的业务流程图(“物理模型”)进行功能建模,转化成开发人员能够理解的一系列“逻辑模型”图,即以图形化的方法描绘数据在系统中的流动和处理的过程,这些图都应该用规范的DFD描述。DFD设计过程就是将数据和处理进行逐层分解就形成了若干层次的DFD。DFD分为顶层图(只有一张)、0层图(也只有一张)、子图、子子图等等。
数据流图从数据传递和加工的角度,以图形的方式描述数据在系统流程中流动和处理的移动变换过程。通常,数据流图有4种基本图形元素。
数据流:用单箭头表示,如――>。是由一组固定成分的数据组成,表示数据的流向。数据流图中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有一个合适的名字,以反映该数据流的含义。
加工:用圆或椭圆表示,如〇。描述了输入数据流到输出数据之间的变换,也就是输入数据流经过什么处理后变成了输出数据。每个加工都有一个名字和编号。编号能反映该加工位于分层的数据流图的哪个层次和哪张图中,能够看出它是由哪个加工分解出来的子加工。
数据存储:用双杠(带一边开口,一边闭合)表示, 又叫做文件,数据存储表示暂时存储的数据。每个数据存储都有一个名字。
外部实体:用实心长方形表示。外部实体是存在于软件系统之外的人员或组织,他指出数据所需要的发源地或系统所产生的数据的归属地。
数据字典是从文字方面对新系统逻辑模型进行描述的系统分析工具。它是数据流图的补充说明,即它在数据流图的基础上,对其中的每个数据流、数据存储和数据项等加以定义和说明,器目的是进行数据分析和归档。为了增加数据流图的清晰性,防止数据流的箭头线太长,减少交叉绘制数据流条数,一般在一张数据流图中可以重复同名的数据源点、终点和数据存储文件。如某个外部实体既是数据源点优势数据汇点,可以在数据流图的不同的地方重新绘制。
顶层数据流图是指将整个待开发的软件系统看做一个大的加工,然后根据该系统从哪些外部实体接收数据流,以及发送哪些数据流至相应的外部实体。将顶层数据流图的加工分解成若干个子加工,并用数据流将这些子加工连接起来,使得顶层图中的输入数据流经过若干个子加工处理后变换成顶层图的输入数据流,称这张图为0层数据流图。将一张父图的一个加工画出一张数据流图(子图)的过程实际上就是对这个加工的分解。对于一个软件系统,其数据流图可能是许多层,每一层又是许多张图。为了区分不同的加工和不同的DFD子图,应该对每张图和每个加工进行编号,以利于管理。
画顶层数据流图 即画整个系统的输入输出(画系统也可以将各子系统分开画)。把整个系统视为一个大的加工(也只能含一个加工),然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到那些外部实体,就可以画出输入输出图。这张图称为顶层图。顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。
画0层数据流图 即画系统的内部。把顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。这张图称为0层图。从一个加工画出一张数据流图的过程就是对加工的分解。
确定加工的方法:在数据流的组成或值发生变化的地方应该画出一个加工,这个加工的功能就是实现这一变化,也可以根据系统的功能决定加工。
确定数据流的方法:用户把若干数据当作一个单位来处理(这些数据一起到达、一起处理)时,可以把这些数据看成一个数据流。
关于数据存储:对于一些以后某个时间要使用的数据,可以组织成为一个数据存储来表示。
画加工的内部 把每个加工看作一个小系统,把加工的输入输出数据流看成小系统的输入输出流。于是可以象画0层图一样画出每个小系统的加工的DFD图。
画子加工的分解图 对第三步分解出来的DFD图中的每个加工,重复第三步的分解过程,直到图中尚未分解的加工都是足够简单的(即不可再分解)。至此,得到了一套分层数据流图。
对数据流图和加工编号 对于一个软件系统,其数据流图可能有许多层,每一层又有许多张图。为了区分不同的加工和不同的DFD子图,应该对每张图进行编号,以便于管理。
顶层图只有一张,图中的加工也只有一个,所以不必为其编号。
0层图只有一张,图中的加工号分别是0.1、0.2、…,或者1, 2 。
子图就是父图中被分解的加工号。
子图中的加工号是由图号、圆点和序号组成,如:1.12,1.3 等等。
高质量的数据流图(DFD)是可读的、内部一直的并能够准确表示系统需求。高质量数据流图设计时应考虑以下主要原则:
复杂性最小化原则。可以采用DFD分层结构将系统的复杂性逐步分解降低,以提高数据流图的有效性。DFD分层结构就是把信息划分为小的且相对独立的一大批子集例子,这样就可以单独考查每一个DFD。如果要了解某个过程更加详细的信息,可以跳转到该过程的下一层;如果要知道一个DFD如何与其他DFD相关联,可以跳转到上一层的DFD进行考查。
接口最小化原则。接口最小化是复杂性最小化的一种具体规则,在设计模型时,应使得模型中各个元素之间的接口数或连接数最小化。
数据流一致性原则。一个过程和它的过程分解在数据流内容中是否有差别(即数据流的输入输出是否匹配),是否存在有数据流出但没有相应的数据流入的加工,是否存在有数据流入但没有相应的数据流出的加工,输入数据的信息量是否足以产生输出数据,所有的输出数据是否能够从输入数据中找到数据的来源等。
数据流图(DFD)和流程图是结构化建模中使用的重要工具,能够帮助开发人员更好地分析和设计系统,增强系统开发人员之间交流的准确性和有效性。数据流图(DFD)和流程图是为了达到不同的目的而产生的,其所采用的标准符号集合也不相同。
在实际应用中,两者的主要区别如下:
其他相关资料及实例请参考:
http://www.educity.cn/zk/rjgc/200608311656531370.htm
关于Software Level更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.