数据流图(DFD)这么理解吗?

news2025/4/12 19:35:36

如何画好数据流程图(DFD)?

步骤

  • 确定系统的 inputoutput
  • 表层深层 画系统的顶层数据流图。
  • 自顶向下 逐层 分解,画出分层数据流图。

一、理解数据流图

基本概念

   ~~   数据流图 = 数据流(箭头) + 图。所谓数据流,是由一组固定成分的数据组成,表示 数据的流向,除了输入和输出之外,还包括中间加工、存储等环节。

基本元素

  1. →(data flow):箭头,表示 数据流
  2. 〇 (process):圆或椭圆,表示加工;也就是输入数据流经过什么处理后变成了输出数据。
  3. = (file):双杠,表示数据存储
  4. □ (source or destination):方框,表示数据源点或终点。【外部实体】,指除了系统之外,又与系统有联系的人或事物。

注意事项:每个加工都有一个名字和编号。编号能反映该加工位于分层的数据流图的哪个层次和哪张图中。

简记: 用图形的方式,描绘数据在系统重流动和处理的过程。

二、怎么画数据流图?

   ~~    数据流图采用分层图的形式来描述系统数据流向,每一层都代表了系统数据流向的一个抽象水平,层次越高,数据流向越抽象,(因为抽象的东西是很难有什么变化的,这也为我们对系统的设计猜想有了更好的辅助)。高层次的DFD图中处理可以进一步分解为低层次、更详细的DFD图。

在这里插入图片描述

故此,据层次可以将数据流图划分为顶层、中层和底层数据流图。除了顶层数据流图之外,其他数据流图从零开始编号

下面我们以 销售管理系统 来进一步理解并画出DFD图:

(1) 接受顾客的订单,检验订单,若库存有货,进行供货处理,即修改库存,给仓库开备货单,并且将订单留底;若库存量不足,将缺货订单登入缺货记录。

(2) 根据缺货记录进行缺货统计,将缺货通知单发给采购部门,以便采购。

(3) 根据采购部门发来的进货通知单处理进货,即修改库存,并从缺货记录中取出缺货订单进行供货处理。

(4) 根据留底的订单进行销售统计,打印统计表给经理。

1. 确定系统的输入输出

   ~~   一开始想要直接弄清系统包括的所有功能是困难的,所以我们可以尽可能地让考虑的范围扩大一点,尽可能把有的内容都考虑进去,之后在迭代的过程中再加以补充完善。

   ~~    在这一阶段,应该弄清 “系统从哪些外部实体接受什么数据”、“系统向哪些实体送出什么数据” 等信息,这是绘制顶层数据流图的关键

2. 由表及里的画出顶层数据流图

   ~~    在确定号系统的 input 和 output 之后,我们可以利用”加工“将它们连接起来,也就是状态转移关系"加工",“加工”是数据被处理的整个系统,也就是数据组成或值变化的地方。下图为销售管理系统的顶层图:
在这里插入图片描述

顶层图 {\color{grey}{顶层图}} 顶层图
注意事项: 顶层图只有一张,图中的“加工”也只有一个,表示整个系统,不必为其编号。

3. 自顶向下逐层分解,画出分层数据流图

   ~~    对于大型的系统,为了控制设计的复杂性,便于理解,更倾向于从抽象到具体,采用自定向下逐层分解的方式,将一个数据流图分解成若干个数据流子图来分别表示。

   ~~    在还能够继续分解的层次,我们将其称为 中层数据流图,是对 父层 数据流图中 某个加工的细化。这一层数据流图层数的多少,根据系统实现的复杂程度而定。

   ~~   如前面所说,除了顶层图之外,其他层次的图从零开始编号。特殊的是,0层图,因为它是顶层图的加工的第一次分解,将顶层图的 “粗加工” 分解为若干个 “精加工”,并用数据流(箭头)将这些 ”精加工“连接起来,使得顶层图的 input 经过这些处理后,变成相应的 output

在这里插入图片描述

0 层图 {\color{grey}{0层图}} 0层图
(1) 确定 "加工"方法:

   ~~    “加工“用来表示整个开发系统,也就是数据处理的地方。因此0层图数据流 发生变化的地方可以变成若干个 “精加工”。

注意事项:

  1. 每个加工至少有一个 input 和 一个 output。
  2. 一个加工的 output 不应该与 input 同名,即使它们的数据组成完全相同。
  3. 如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号。

在这里插入图片描述

上 : 父图 ; 下 : 子图 {\color{grey}{上:父图;下:子图}} :父图;:子图

  1. 父图与子图的平衡。父图中的某加工的输入输出流必须与他的子图的输入输出数据流在数量上和名字上相同,此即父图与子图的平衡。

(2)确定数据流的方法

   ~~    一串待处理的数据可以看作数据流。

注意事项:

  1. 画数据流而不是画控制流。数据流具体方音系统在”做什么“,不反印”如何做“,因此箭头上面的数据流名称只能是 名词名词短语,整个图中不反应加工的实际执行顺序。
  2. 外部实体之间不应该存在数据流,因为数据流的起点和终点中必须有一个是加工

(3)关于数据存储

   ~~   对于未来要使用的数据,可以组织成为一个数据存储(双杠 =)来表示。

注意事项:

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

   ~~   弄清相关细节之后,如下所示,我们只需要对”精加工“进一步细分拆解,直到到达 ”原子加工“ (底层数据流程图:其加工不能再分解的数据流图)为止。

在这里插入图片描述
1 层图 {\color{grey}{1层图}} 1层图



参考链接及资源

如何画好数据流图?

数据流图(DFD)概念及画法

软件工程——数据流图(DFD)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux pinctrl 和 gpio 子系统 LED驱动

pinctrl 和 gpio 子系统 借助 pinctrl 和 gpio 子系统来简化 GPIO 驱动开发 pinctrl 子系统 pinctrl 子系统(drivers/pinctrl)的主要工作内容: ①、获取设备树中 pin 信息。 ②、根据获取到的 pin 信息来设置 pin 的复用功能 ③、根据获…

校招失败后,4面字节跳动软件测试工程师,竭尽全力....

下面是我面试字节跳动软件测试工程师的面试经验总结,希望能帮助到你们。 面试一 简单做一下自我介绍简要介绍一下项目/你负责的模块/选一个模块说一下你设计的用例get请求和post请求的区别如何判断前后端bug/3xx是什么意思说一下XXX项目中你做的接口测试/做了多少次…

免费润色文章的软件-自动修改文章润色的软件

免费润色文章的软件 免费润色文章的软件可以帮助用户快速地改善文本质量,进一步提高语言表达能力和流畅性,以下是其主要优势: 高效性:免费润色文章的软件能够快速进行润色处理,为用户节省时间和精力。相比手动润色的方…

瑞芯微RK3588核心板远程会诊等医学解决方案

RK3588处理器在医学领域的应用中,可以为远程会诊提供高性能和可靠的解决方案。以下是基于RK3588的远程会诊医学方面的解决方案: 远程高清图像传输: 利用RK3588处理器的高性能图像处理能力和高速网络接口,实现高清医学图像的实时传…

Dubbo 基于xml文件分析主流程源码 (4)

目录 前提 JDK实现SPI Dubbo实现SPI Dubbo源码 1. 找到Dubbo的命名空间处理类,也就是Dubbo的入口类 2. 将dubbo标签交给spring进行管理,就是从 BeanDefinition----> Bean的过程。 3. 服务暴露 4. 服务引入 总结 仿写Dubbo 前提 1. Dubbo源码…

CentOS7 yum update y更新后黑屏解决方案

解决方法 一 可以ssh访问 因为update的时候更新了系统内核,导致驱动问题,所以会黑屏。 更改一下yum的配置即可解决: vi /etc/yum.conf#增加:excludecentos-release*excludekernel*如果以上问题还未解决,可以试试下面的方法 其…

架构模式之分层模式

1 概念 分层架构模式是一种非常常见的架构设计模式,很多人都在用,可能不知道它的概念。分层模式背后的理念是,具有相同功能的组件将被组织成水平层。因此,每一层在应用程序中都扮演着特定的角色。 在这种模式中,…

自学自动化测试,第一份工作就18K,因为掌握了这些技术

我个人的情况是有1年自动化测试工作经验半年的实习经验,2020年毕业,专业通信工程,大一的时候学过C语言,所以一直对于编程感兴趣,之所以毕业后没做通信的工作,通信行业的朋友应该都明白,通信的天…

DolphinScheduler3.1.5安装部署

1.下载 DolphinScheduler下载地址:https://dolphinscheduler.apache.org/zh-cn/download/3.1.5 选择二进制包 下载,点击 jar 名称 就行 ​ 2.环境 CentOS Linux release 7.5.1804 (Core)java version "1.8.0_212"mysql version 5.7.16-log…

信息化 VS 数字化,哪个更适合当代企业?

各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维数据分析,通过数据讲故事。 现在大家都在谈数字化转型升级,那到底什么是数字化,是不是新瓶装旧酒呢?今天就和大家来谈谈…

【华为机考】专题突破 第二周:前缀和与差分 1109

刷题顺序参考于 《2023华为机考刷题指南:八周机考速通车》 前言 前缀和是指某序列的前n项和,可以把它理解为数学上的数列的前n项和,而差分可以看成前缀和的逆运算。合理的使用前缀和与差分,可以将某些复杂的问题简单化。 关于各类…

CnOpenData中国标准数据

一、数据简介 按照《中华人民共和国标准化法》的定义,标准是指农业、工业、服务业以及社会事业等领域需要统一的技术要求。标准作为一种通用性的规范语言,在合理利用国家资源、保障产品质量、提高市场信任度、促进商品流通、维护公平竞争、保障安全等方面…

机器学习-9 降维算法——PCA降维

降维算法 算法概述降维的概念降维的作用降维的本质常见算法分类主成分分析(PCA)降维分析 算法流程PCA算法的流程图PCA算法的实现步骤协方差矩阵 算法应用sklearn库中的主成分分析PCA实现高维数据可视化鸢尾花案例手写体数字图像识别案例 算法总结PCA算法…

MyBatis缓存-一级缓存--二级缓存的非常详细的介绍

目录 MyBatis-缓存-提高检索效率的利器 缓存-官方文档 一级缓存 基本说明 一级缓存原理图 代码演示 修改MonsterMapperTest.java, 增加测试方法 结果 debug 一级缓存执行流程 一级缓存失效分析 关闭sqlSession会话后 , 一级缓存失效 如果执行sqlSession.clearCache(…

linux安装nacos步骤

安装前提:服务器已安装JDK 一、nacos下载 Nacos下载地址:Releases alibaba/nacos GitHub 根据springboot版本选择nacos版本 版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 二、nacos解压、修改配置文件 #选择安装目录 cd /home/dxhy/appl…

一款基于 Spring Cloud 开源的医疗信息系统

今天给大家介绍一个医院信息系统开源项目,相对比较完整,采用的技术栈是 Spring cloud和Spring boot 2.x,比较主流,正在做这方面系统的童鞋们可以参考一下! 主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管…

云原生|详解Kubernetes Operator在项目中的开发应用

目录 一、使用场景 (一)client-go中处理逻辑 (二)controller-runtime中处理逻辑 二、使用controller-runtime开发operator项目 (一)生成框架代码 (二)定义crd字段 &#xff0…

分布式消息队列RocketMQ概念详解

目录 1.MQ概述 1.1 RocketMQ简介 1.2 MQ用途 1.3 常见MQ产品 2.RocketMQ 基本概念 2.1 消息 2.2 主题 2.3 标签 2.4 队列 2.5 Producer 2.6 Consumer 2.7 NameServer 2.8 Broker 2.9 RocketMQ 工作流程 1.MQ概述 1.1 RocketMQ简介 RocketMQ 是阿里开源的分布式消…

云原生:从基本概念到实践,解析演进与现状

文章目录 云原生:从基本概念到实践,解析演进与现状概念演进之路DockerKubernetesCloud NativeServerless 业界现状总结 结语 云原生:从基本概念到实践,解析演进与现状 本文仅用于简单普及,达到的目的是给没接触过或者很…

苹果手机无法开机?黑屏打不开怎么办?出现这种问题的解决办法分享!

各位在使用苹果手机的小伙伴有没有遇到苹果手机突然就黑屏开不了机,打电话也没有任何反应,手机也无法关机重启,这是什么问题呢?我们遇到这种问题该如何去处理呢? 小编今天就来跟大家说说苹果手机突然开不了机的原因以及…