【软件工程】数据流图DFD

文章目录

    • 数据流图DFD概述
      • 一、数据流图的基本元素
      • 二、数据流图的绘制步骤
      • 三、数据流图的分层设计
      • 四、数据流图的绘制原则
      • 五、数据流图的应用
    • 一个完整的数据流包含哪些要素
    • 从图中找出所有数据流
      • 1. **理解数据流图的结构**
      • 2. **识别外部实体**
      • 3. **追踪数据流**
      • 4. **记录数据流**
      • 5. **检查处理过程和数据存储**
      • 6. **验证完整性**
      • 7. **整理数据流清单**

数据流图DFD概述

数据流图(Data Flow Diagram,简称DFD)是一种图形化表示方法,用于描述系统内部数据的流动和处理过程。以下是数据流图设计的详细说明:

一、数据流图的基本元素

  1. 数据流:用箭头表示,代表数据在系统中的流动方向。数据流是数据在系统内传播的路径,由一组成分固定的数据组成,因此必须有流向。除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。
  2. 处理(加工):用圆或椭圆(有时也用矩形)表示,代表对数据进行加工或处理的环节。对数据流进行某些操作或变换,每个加工也要有名字,通常是动词短语,简明地描述完成什么加工。在分层的数据流图中,加工还应编号。
  3. 数据存储:用双杠圆圈表示,代表数据在系统中的存储位置。数据存储是暂时保存的数据,可以是数据库文件或任何形式的数据组织。
  4. 外部实体:用方框表示,代表系统外部与系统进行数据交换的源点或终点。数据源点或终点是系统外部环境中的实体,也称外部实体。它们作为系统与系统外部环境的接口界面,在实际问题中可能是人员、组织、其他硬件系统等,一般出现在顶层数据流图中。
    dfd-el

二、数据流图的绘制步骤

  1. 确定系统边界:明确系统的主要功能和范围,确定哪些部分属于系统内部,哪些部分属于系统外部。
  2. 识别外部实体:找出与系统进行数据交换的外部实体,如用户、其他系统等。
  3. 分析数据流:详细分析数据在系统中的流动路径,包括数据的来源、去向和处理过程。
  4. 绘制数据流图:根据以上分析,使用相应的图形符号绘制数据流图。注意合理布局,避免数据流的交叉和过长。绘制时,应遵循自顶向下、逐步求精的原则,将系统分解为若干个子系统或模块,并分别绘制其数据流图。
  5. 检查和优化:检查数据流图的正确性,确保每个数据存储都有流入和流出的数据流,每个处理都有输入和输出的数据流。同时,根据需要对数据流图进行优化,如合并重复的处理和数据存储等。

三、数据流图的分层设计

dfd-level

数据流图通常分为多个层次,从高层次到低层次逐步深入分析,以揭示系统的整体结构和各部分之间的关系。分层设计的方法如下:

  1. 顶层图:把整个系统视为一个大的加工,然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到哪些外部实体,画出输入输出图。这张图称为顶层图,其中只有一个加工,表示被开发的系统。
  2. 0层图:将顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。这张图称为0层图,是系统的进一步细化。
  3. 子图:对于0层图中的每个加工,可以进一步分解为其子加工,并画出相应的数据流图。这些子图称为子图或低层图。通过不断分解,可以得到一套分层数据流图。

四、数据流图的绘制原则

  1. 命名清晰:为数据流、处理、数据存储以及外部实体命名时,应反映该成分的实际含义,避免使用空洞的名字。
  2. 避免控制流:数据流图应反映系统“做什么”,而不反映“如何做”。因此,图中不应包含控制流或执行顺序的信息。
  3. 保持数据守恒:一个处理的所有输出数据流中的数据必须能从该处理的输入流中直接获得,或者通过该处理能产生的数据。
  4. 输入输出平衡:在分层数据流图中,父图的输入输出数据流应与其子图的输入输出数据流在数量上和名字上相同,以保持平衡。
  5. 合理分解:在分解加工时,应将一个加工分解成几个功能相对独立的子加工,以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性。

五、数据流图的应用

数据流图在系统分析和设计中起着重要作用。它可以帮助我们清晰地理解系统的数据处理逻辑和流程,发现潜在的问题和瓶颈,为系统的优化和改进提供依据。同时,数据流图也是系统文档化的重要工具之一,有助于团队成员之间的沟通和协作。

综上所述,数据流图设计是一个复杂而细致的过程,需要遵循一定的步骤和原则来确保图表的清晰和准确。通过掌握数据流图的基本概念、绘制步骤和分析方法,我们可以更加高效地进行系统分析和设计工作。

一个完整的数据流包含哪些要素

一个完整的数据流在数据流图(Data Flow Diagram, DFD)中通常包含以下关键要素:

  1. 数据源(或起点)

    • 数据流的起始点,可以是外部实体(如用户、其他系统或设备)或内部数据存储
    • 表示数据的来源,是数据进入系统的入口。
  2. 数据目的地(或终点)

    • 数据流的终止点,同样可以是外部实体内部数据存储
    • 表示数据的去向,是数据离开系统的出口。
  3. 数据流名称

    • 标识数据流的标签或名称,通常用于描述数据流携带的数据内容或类型。
    • 有助于理解数据流在系统中的作用和意义。
  4. 数据流方向

    • 数据流在图中流动的路径和方向,通常用带箭头的线表示。
    • 箭头指向数据流的目的地,表明数据的流动方向。
  5. 数据处理过程(或加工)

    • 数据流经过的转换或处理环节,可以是系统内部的一个功能单元或模块。
    • 处理过程对输入数据流进行加工,产生输出数据流。
  6. 数据存储

    • 数据在系统中的存储位置,可以是数据库、文件或其他存储介质。
    • 数据存储可以作为数据流的起点(从存储中读取数据)或终点(将数据写入存储)。
  7. 数据流量

    • 虽然不是所有数据流图都会明确标注,但数据流量表示数据流的数量或大小。
    • 可以是定量的(如每秒传输的数据量)或定性的(如“大量”、“少量”等)。
  8. 数据流类型

    • 描述数据流携带的数据的类型,如文本、图像、音频、视频等。
    • 有助于理解数据流的特性和处理要求。
  9. 数据流描述

    • 对数据流的详细说明或注释,通常用于解释数据流的作用、内容或重要性。
    • 有助于读者更好地理解数据流图。

在绘制数据流图时,这些要素的组合和呈现方式可能会根据具体的系统、需求或绘图工具而有所不同。但无论如何,一个完整的数据流都应该包含上述关键要素,以确保数据流图的准确性和可读性。

从图中找出所有数据流

从数据流图中找出所有数据流是一个相对直接但需要细致观察的过程。以下是一些建议的步骤,可以帮助你从数据流图中系统地识别和记录所有数据流:

1. 理解数据流图的结构

首先,你需要对数据流图有一个整体的理解。数据流图通常由外部实体、处理过程(或称为加工)、数据存储以及数据流组成。外部实体是数据的来源或去向,处理过程是对数据进行转换或处理的环节,数据存储是数据的存储位置,而数据流则是数据在这些元素之间流动的路径。

2. 识别外部实体

找到数据流图中的外部实体,它们是数据的起点和终点。外部实体通常位于数据流图的边缘,用方框表示。

3. 追踪数据流

从每个外部实体开始,沿着数据流的方向(箭头指向)追踪数据流的路径。注意,数据流是有方向的,箭头表示数据的流动方向。

4. 记录数据流

在追踪数据流的过程中,记录下每条数据流的名称和它所连接的处理过程或数据存储。确保你记录了从每个外部实体出发的所有数据流,以及它们如何与处理过程和数据存储相连。

5. 检查处理过程和数据存储

对于数据流图中的每个处理过程和数据存储,检查它们是否有输入和输出数据流。确保你记录了所有与处理过程和数据存储相关的数据流。

6. 验证完整性

完成上述步骤后,检查你的记录是否涵盖了数据流图中的所有数据流。确保没有遗漏任何从外部实体出发或到达外部实体的数据流,以及处理过程和数据存储之间的所有数据流。

7. 整理数据流清单

最后,将记录的所有数据流整理成一个清单。这个清单可以包括数据流的名称、起点、终点以及它所经过的处理过程或数据存储。

通过遵循这些步骤,你应该能够系统地找出数据流图中的所有数据流。这个过程有助于你更好地理解系统的数据处理流程,并为后续的系统分析、设计或测试提供有用的信息。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP S/4 HANA 销售返利

目录 1 简介 2 后台配置 3 主数据 4 业务操作 4.1 场景 1 - 返利应计 4.2 场景 2 - 最终结算 1 简介 在过去 SAP ECC 把“返利”功能集成在了 SD 模块当中,而 SAP S/4 HANA 把“返利”集成在了结算管理功能模块当中。究其原因,主要是 ECC “返利”…

笔记-stm32移植ucos

文章目录 一、UCOS的基础知识1.1 前后台系统:1.2 RTOS系统可剥夺型内核:前后台系统和RTOS系统 1.3 UCOS系统简介学习方法 二、ucossii移植Step1:在工程中建立存放UCOSS代码的文件夹UCOSIIStep2:向CORE文件夹添加文件Step3:向Config文件夹添加文件Step4:向port文件夹…

本地拉取Docker镜像打包导入远程服务器

起因是因为使用远程服务器拉取镜像时,由于网络问题一直拉不成功,使用国内镜像由于更新不及时,国内镜像没有最新的 docker 镜像。最后使用本地的计算机,通过代理下载最新的镜像后打包成 tar, 然后上传到远程服务器进行导…

electron-vite打包踩坑记录

electron-vite打包踩坑记录 大前端已成趋势,用electron开发桌面端应用越来越普遍 近期尝试用electronvite开发了个桌面应用,electron-vite地址,可用使用vue开发,vite打包,这样就很方便了 但是,我尝试了一…

【机器学习】并行计算(parallel computation)Part1

为什么我们在机器学习中需要用到并行计算呢,因为现在最流行的机器学习算法都是神经网络,神经网络模型的计算量、参数量都很大,比如ResNet-50参数量为25M。而我们在训练的时候使用的数据集也很大,比如ImageNet数据集含有14M张图片。…

FileInputStream类

目录 1.案例代码: 2.注意细节 3.FileInputStream循环读取 1.案例代码: 准备的txt文件 结果: 如果需要输出原本的字母,强制转换为char即可: 结果: 2.注意细节 (1)如果文件不存在…

Qt和c++面试集合

目录 Qt面试 什么是信号(Signal)和槽(Slot)? 什么是Meta-Object系统? 什么是Qt的MVC模式? 1. QT中connect函数的第五个参数是什么?有什么作用? 3. 在QT中&#xff…

【NestJS入门到精通】装饰器

目录 方法装饰器通过prototype添加属性、方法 属性装饰器拓展 方法装饰器参数装饰器 方法装饰器 ClassDecorator 定义了一个类装饰器 a,并将其应用于类 A。装饰器 a 会在类 A 被定义时执行。 const a:ClassDecorator (target:any)>{console.log(target,targe…

概率 多维随机变量与分布

一、二维 1、二维随机变量及其分布 假设E是随机试验,Ω是样本空间,X、Y是Ω的两个变量;(X,Y)就叫做二维随机变量或二维随机向量。X、Y来自同一个样本空间。 联合分布函数 F(x,y)P(X≤x,Y≤y),即F(x,y)表示求(x,y)左下方的面积。 …

Struct Streaming

spark进行实时数据流计算时有两个工具 Spark Streaming:编写rdd代码处理数据流,可以解决非结构化的流式数据 Structured Streaming:编写df代码处理数据流,可以解决结构化和半结构化的流式数据 实时计算 实时计算,通常也称为“实时流计算”、“流式计算” 流数据处…

Unity3d使用JsonUtility.FromJson读取json文件

使用JsonUtility.FromJson方法不需要额外引用第三方库。该方法只能读取json对象,而不能读取json数组。 假如我们有如下的json数组: [ {"id":1, "name":"first2021", "level":5, "score":100, "…

vue3 对 vue2 有什么优势

1、diff算法的优化--静态标记(PatchFlag) vue2中的虚拟dom是全量的对比(每个节点不论写死的还是动态的都会一层一层比较,这就浪费了大部分事件在对比静态节点上) vue3编译模板时,动态节点做标记 标记分为不…

仿函数(函数对象)

0.含义 仿函数和函数对象在C中含义一致。官方解释是: ()就是函数调用运算符,也就是说一个类重载了小括号,它实例化的对象就可以像函数一样使用。 “仿”函数,意味着它和函数使用有相同点: …

盘点双十一四款不错的品牌好物!2024学生党高颜值平价好物推荐!

在双十一这个购物狂欢节,不少学生党都希望以最实惠的价格买到心仪的商品。今天,我们就来盘点四款双十一期间值得入手的高颜值平价好物,让同学们在享受优惠的同时,也能拥有品质生活! 品牌好物一、希亦CG超声波清洗机 双…

数据中心物理安全的历史和演变

在当今的数字时代,数据中心托管已成为我们互联世界的支柱。这些设施在存储、管理和处理我们日常生活所需的大量信息方面发挥着至关重要的作用。从社交媒体平台和电子商务网站到流媒体服务和云计算,数据中心为我们依赖的数字服务提供支持。 随着企业越来…

Swarm 框架登场:OpenAI 第 3 阶段「敲门砖」;马斯克的 Teslabot 实际有人远程操控丨 RTE 开发者日报

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

音视频开发:FFmpeg库的使用

文章目录 一、FFmpeg的介绍二、FFmpeg的安装三、FFmpeg的使用1.ffplay:播放音视频2.ffprobe:查看视频信息3.ffmpeg:处理视频(1)格式转换(2)帮助 四、参考资料 一、FFmpeg的介绍 FFmpeg 是使用广泛的多媒体框架,是一个强大的音视频…

element el-tree 自定义图标

除了自定义以外,下方代码还包含 tree自动展开 点击节点后节点聚焦 节点的click事件 节点查询 <template><el-inputplaceholder"请输入要查询的节点"v-model"filterText"clearable></el-input><el-treehighlight-currentclass&quo…

Flink05 Windows 操作轻松应对复杂的场景

Flink Windows 操作 上篇文章介绍了Flink 几种类型 Windows 本文介绍窗口操作相关API&#xff0c;以及各自使用场景 。 本期Flink Windows 相关操作apply/union/join/collect/CoMap/CoFlatMap Windows apply 通过实现WindowFunction或AllWindowFunction接口来完成的&#x…

考研C语言程序设计_编程题相关(持续更新)

目录 零、说明一、程序设计经典编程题(C语言实现)T1 求1~100的奇数T2 求n!T3 求1!2!3!...10!T4 在一个有序数组中查找具体的某个数字n(二分查找)T5 编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚T6 模拟用户登录(三次机会)T7 输入三个数 并从大到小输出T8…