一、概念

它是将提供给用户的业务流程图(“物理模型”)进行功能建模,转化成开发人员能够理解的一系列“逻辑模型”图,即以图形化的方法描绘数据在系统中的流动和处理的过程,这些图都应该用规范的DFD描述。

二、原理

DFD设计过程就是将数据和处理进行逐层分解就形成了若干层次的DFD。DFD分为顶层图(只有一张)、0层图(也只有一张)、子图、子子图等等。

三、包含主要元素

即在DFD中包括哪些主要元素,数据流、加工、数据存储、外部实体。

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

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

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

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

四、设计方法

1.画顶层数据流图

即画整个系统的输入输出(画系统也可以将各子系统分开画)。

把整个系统视为一个大的加工(也只能含一个加工),然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到那些外部实体,就可以画出输入输出图。这张图称为顶层图。

顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。

2.画0层数据流图

即画系统的内部。

把顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。这张图称为0层图。从一个加工画出一张数据流图的过程就是对加工的分解。

确定加工的方法:在数据流的组成或值发生变化的地方应该画出一个加工,这个加工的功能就是实现这一变化,也可以根据系统的功能决定加工。

确定数据流的方法:用户把若干数据当作一个单位来处理(这些数据一起到达、一起处理)时,可以把这些数据看成一个数据流。

关于数据存储:对于一些以后某个时间要使用的数据,可以组织成为一个数据存储来表示。

3.画加工的内部

把每个加工看作一个小系统,把加工的输入输出数据流看成小系统的输入输出流。于是可以象画0层图一样画出每个小系统的加工的DFD图。

4.画子加工的分解图

对第三步分解出来的DFD图中的每个加工,重复第三步的分解过程,直到图中尚未分解的加工都是足够简单的(即不可再分解)。至此,得到了一套分层数据流图。

5.对数据流图和加工编号

对于一个软件系统,其数据流图可能有许多层,每一层又有许多张图。为了区分不同的加工和不同的DFD子图,应该对每张图进行编号,以便于管理。

● 顶层图只有一张,图中的加工也只有一个,所以不必为其编号。

● 0层图只有一张,图中的加工号分别是0.1、0.2、…,或者1, 2 。

● 子图就是父图中被分解的加工号。

● 子图中的加工号是由图号、圆点和序号组成,如:1.12,1.3 等等。

五、其它事宜

1.命名。应适当的为数据流、加工、数据存储以及外部实体命名,名字应该反映该成分的实际含义,避免使用空洞的名字。

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

3.一个加工的输出数据流,不应与输入数据流同名,即使他们的组成完全相同。

4.允许一个加工有多条数据流流向另一个加工,也允许一个加工有两条相同的输出数据流流向不同的加工。

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

6.保持父图与子图的平衡。也就是说,父图中的某加工的输入输出流必须与他的所有子图的输入输出数据流在数量上和名字上相同。值得注意的是,如果父图中的一个输入(输出)数据流对应于子图中的几个输入(输出)数据流,而子图中组成这些数据流的数据项的全体正好是父图中的这一个数据流,那么他们仍然算是平衡的。

7.在自顶向下的分解过程中,若一个数据存储首次出现时,只与一个加工有关系,那么这个数据存储应作为这个加工的内部文件而不必画出。

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

9.每个加工必须既有输入数据流,又有输出数据流。

10.在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但是在某张子图中,可能只有读没有写,或者只有写没有读。

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

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

总结:DFD其实主要是对加工不断分解的过程,在此过程中要重点注意父子图以及数据、数据流的平衡。

 

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

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

数据流图详解(DFD)相关推荐

  1. 软考-数据流图详解(Data Flow Diagram)

    一.概念 它是将提供给用户的业务流程图("物理模型")进行功能建模,转化成开发人员能够理解的一系列"逻辑模型"图,即以图形化的方法描绘数据在系统中的流动和处理的 ...

  2. 2023上半年软件设计师-试题详解与分析

    目录 前言 上午题 计算机组成原理 信息安全 计算机相关法律 软件设计 语言处理 操作系统 软件工程 软件测试 面向对象编程 程序设计语言 数据库 数据结构与算法 计算机网络 计算机专业英语 下午题 ...

  3. pytorch nn.LSTM()参数详解

    输入数据格式: input(seq_len, batch, input_size) h0(num_layers * num_directions, batch, hidden_size) c0(num ...

  4. EasyPR中文开源车牌识别系统 开发详解

     在上篇文档中作者已经简单的介绍了EasyPR,现在在本文档中详细的介绍EasyPR的开发过程. 正如淘宝诞生于一个购买来的LAMP系统,EasyPR也有它诞生的原型,起源于CSDN的taotao ...

  5. Win10 TensorFlow(gpu)安装详解

    Win10 TensorFlow(gpu)安装详解 写在前面:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着 ...

  6. 架构师之路(2)---详解面向过程 王泽宾

    2.3 面向过程编程(OPP) 和面向对象编程(OOP)的关系 关于面向过程的编程(OPP)和面向对象的编程(OOP),给出这它们的定义的人很多,您可以从任何资料中找到很专业的解释,但以我的经验来看, ...

  7. [Python从零到壹] 十一.数据分析之Numpy、Pandas、Matplotlib和Sklearn入门知识万字详解(1)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  8. ReactiveCocoa详解

    最近看了大神的博客后,感觉该对ReactiveCocoa做一个了断了. 首先大致的对以下关于ReactiveCocoa内容做一个简单的总结,其他的后续更新 1.ReactiveCocoa的操作思想 2 ...

  9. 2010年系统架构师考试题详解

    原文地址为: 2010年系统架构师考试题详解 考试科目一:综合知识 采用微内核结构的操作系统提高了系统的灵活性和可扩展性,(1) (1)A.并增强了系统的可靠性和可移植性,可运行于分布式系统中 B.并 ...

最新文章

  1. 我的hadoop学习之路
  2. 根据输入的日期计算你活了多少天(新手)
  3. 该应用程序可能在其主线程上做过多的工作
  4. 关于jenkins的安装及自动部署
  5. 在pcduino上实现图像识别的程序
  6. Xtrabackup 安装使用
  7. 【前端统计图】echarts改变颜色属性的demo
  8. Android 内存管理之优化建议
  9. 大学计算机实验在林学的应用,大学计算机实验6实验报告.pdf
  10. Visual Studio 2010 美女与程序员的爱情网剧+《耀和你一起》壁纸包
  11. de4dot 反编译
  12. matlab shading 的用法说明
  13. CSS如何进行图片定位
  14. Nginx可视化配置工具—NginxWebUI
  15. Linux下打开word等office文件(openoffice安装)
  16. Tensorflow(八) —— Tensor的合并与切割
  17. OD笔试题-空汽水瓶可以换汽水
  18. PersistenceContext.properties()
  19. Google Pixel 2 首次现身:或首发安卓 8.0
  20. 电脑中没有显示网络连接到服务器地址,电脑没有网络可以连接到服务器地址

热门文章

  1. 边缘提取之Roberts算子
  2. css怎么设置页面缩放最小宽度
  3. 马斯洛人类需求五层次理论
  4. Cannot copy param 0 weights from layer 'fc6'; shape mismatch.
  5. 【Hive】Hive基本操作
  6. RxSwift | 万物皆 rx 的原因
  7. sklearn-机器学习笔记
  8. NGINX源码之:listen和server_name命令与listening监听创建
  9. 谈iphone电话短信增强工具kuaidail软件的实现
  10. SQL SERVER 2005/vs2008快捷键