软考专题模块:数据流图

来源:互联网 发布:电脑软件制作器 编辑:程序博客网 时间:2024/05/12 03:40

引言

数据流图(DFD)是一种便于用户理解、分析系统数据流程的图形工具,是软件系统分析阶段用于描述系统逻辑模型的图形描述工具,用于回答软件系统“做什么”的问题,它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。

数据流图(DFD)具有抽象性概括性。抽象性表现在它完全舍去了具体的物质,只剩下数据的流动、加工处理和存储;概括性表现在它可以把信息中的各种不同行业处理过程联系起来,形成一个整体。常用的加工逻辑描述方法主要有结构化语言、判定树、判定表等

数据流图DFD是将提供给用户的业务流程图(“物理模型”)进行功能建模,转化成开发人员能够理解的一系列“逻辑模型”图,即以图形化的方法描绘数据在系统中的流动和处理的过程,这些图都应该用规范的DFD描述。DFD设计过程就是将数据和处理进行逐层分解就形成了若干层次的DFD。DFD分为顶层图(只有一张)、0层图(也只有一张)、子图、子子图等等

DFD主要元素

数据流图从数据传递和加工的角度,以图形的方式描述数据在系统流程中流动和处理的移动变换过程。通常,数据流图有4种基本图形元素。


  • 数据流:用单箭头表示,如――>。是由一组固定成分的数据组成,表示数据的流向。数据流图中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有一个合适的名字,以反映该数据流的含义。

  •  加工:用圆或椭圆表示,如〇。描述了输入数据流到输出数据之间的变换,也就是输入数据流经过什么处理后变成了输出数据。每个加工都有一个名字和编号。编号能反映该加工位于分层的数据流图的哪个层次和哪张图中,能够看出它是由哪个加工分解出来的子加工。

  •  数据存储:用双杠(带一边开口,一边闭合)表示, 又叫做文件,数据存储表示暂时存储的数据。每个数据存储都有一个名字。

  •  外部实体:用实心长方形表示。外部实体是存在于软件系统之外的人员或组织,他指出数据所需要的发源地或系统所产生的数据的归属地。

设计方法

数据字典是从文字方面对新系统逻辑模型进行描述的系统分析工具。它是数据流图的补充说明,即它在数据流图的基础上,对其中的每个数据流、数据存储和数据项等加以定义和说明,器目的是进行数据分析和归档。为了增加数据流图的清晰性,防止数据流的箭头线太长,减少交叉绘制数据流条数,一般在一张数据流图中可以重复同名的数据源点、终点和数据存储文件。如某个外部实体既是数据源点优势数据汇点,可以在数据流图的不同的地方重新绘制。

顶层数据流图是指将整个待开发的软件系统看做一个大的加工,然后根据该系统从哪些外部实体接收数据流,以及发送哪些数据流至相应的外部实体。将顶层数据流图的加工分解成若干个子加工,并用数据流将这些子加工连接起来,使得顶层图中的输入数据流经过若干个子加工处理后变换成顶层图的输入数据流,称这张图为0层数据流图。将一张父图的一个加工画出一张数据流图(子图)的过程实际上就是对这个加工的分解。对于一个软件系统,其数据流图可能是许多层,每一层又是许多张图。为了区分不同的加工和不同的DFD子图,应该对每张图和每个加工进行编号,以利于管理。

通常,顶层数据流图只有一张,图中的加工也只有一个,所以不必编号。0层数据流图只有一张,图中的加工号可以分别是1、2、3.。。(或0.1、0.2、0.3、、、、)通常,子图号就是父图中被分解的加工号。图的加工号由父图号、圆点和子图序号组成.

设计步骤

画顶层数据流图 即画整个系统的输入输出(画系统也可以将各子系统分开画)。把整个系统视为一个大的加工(也只能含一个加工),然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到那些外部实体,就可以画出输入输出图。这张图称为顶层图。顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。

画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)和流程图是为了达到不同的目的而产生的,其所采用的标准符号集合也不相同。

在实际应用中,两者的主要区别如下:

其它事宜

  1. 命名。应适当的为数据流、加工、数据存储以及外部实体命名,名字应该反映该成分的实际含义,避免使用空洞的名字。
  2. 画数据流图,不是画控制流。数据流反映系统“做什么”,不反映“如何做”,因此箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。
  3. 一个加工的输出数据流,不应与输入数据流同名,即使他们的组成完全相同。
  4. 允许一个加工有多条数据流流向另一个加工,也允许一个加工有两条相同的输出数据流流向不同的加工。
  5. 编号。如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号。
  6. 保持父图与子图的平衡。也就是说,父图中的某加工的输入输出流必须与他的所有子图的输入输出数据流在数量上和名字上相同。值得注意的是,如果父图中的一个输入(输出)数据流对应于子图中的几个输入(输出)数据流,而子图中组成这些数据流的数据项的全体正好是父图中的这一个数据流,那么他们仍然算是平衡的。
  7. 在自顶向下的分解过程中,若一个数据存储首次出现时,只与一个加工有关系,那么这个数据存储应作为这个加工的内部文件而不必画出。
  8. 保持数据守恒,也就是,一个加工的所有输出数据流中的数据必须能从该加工的输入流中直接获得,或者通过该加工能产生的数据。
  9. 每个加工必须既有输入数据流,又有输出数据流。
  10. 在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但是在某张子图中,可能只有读没有写,或者只有写没有读。
  11. 局部数据存储。当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。
  12. 提高数据流图的易懂性。注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性。

其他相关资料及实例请参考:

http://www.educity.cn/zk/rjgc/200608311656531370.htm



关于Software Level更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.

0 0
原创粉丝点击