【软件工程】数据流图/DFD概念符号/流程图分层/数据字典

【软件工程】数据流图/DFD概念符号/流程图分层/数据字典

目录

【软件工程】数据流图/DFD概念符号/流程图分层/数据字典

一、数据流图 ( DFD ) 简介

二、数据流图 ( DFD ) 概念符号

1、数据流

 2、加工 ( 核心 )

3、数据存储

4、外部实体

三、数据流图 ( DFD ) 分层 

1、分层说明 

2、顶层数据流图

3、中层数据流图

4、底层数据流图

四、数据字典

五、据流图平衡原则 :

1、父图 ( 上层数据流图 ) 与 子图 ( 下层数据流图 ) 平衡

2、子图内平衡

六、数据流图绘制原则


一、数据流图 ( DFD ) 简介

数据流图 ( Data Flow Diagram ) :

需求分析 阶段 , 使用的工具 , 在 “结构化分析” 中 , 数据流图 ( DFD ) 使用频率很高 ;

数据流图涉及内容 : 基本概念符号 , 数据字典 , 数据平衡原则 ;

二、数据流图 ( DFD ) 概念符号

1、数据流

数据流 : 数据流由 一组固定成分的数据 组成 , 表示 数据的流向 ;

数据流命名 : 每个数据流都有一个 命名 , 该命名表达了 该数据流传输 数据的含义 ; 如在箭头上标注 “账号信息” , 表示该数据流是传输账号信息 的 , 表示 数据的内容 ;

数据字典 : 数据流箭头上只标明了 “账号信息” , 没有具体的格式内容 , 是只有账号 , 还是有账号/密码/验证码等信息 , 这些数据详细格式 , 都在 数据字典中定义 ;

符号表示 : 数据流 使用 箭头 表示 , 箭头所指的方向 , 代表了数据流向 ;

 2、加工 ( 核心 )

加工 : 描述 “输入数据流”“输出数据流” 之间的变换 , 即 对数据进行了什么样的处理 , 使得 “输入数据流” 变为 “输出数据流” ;

主要操作 : 在程序中的体现是 处理 数据的过程 , 向 “加工” 中输入数据流后 , 将数据进行加工 , 处理 , 变换后 , 产生新的 “输出数据流” ;

符号表示 : 使用 圆形 / 圆角矩形 表示加工 ;

3、数据存储

数据存储 ( 文件 ) : 表示 暂时存储的数据 , 数据存储的粒度是以 表 为单位 ;

文件名称 : 每个 数据存储 ( 文件 ) 都有 名字 ;

方向 : 流向文件的数据流 表示 向文件内写入内容 , 从文件流出的数据流 表示 从文件读取内容 ;

符号表示 : 使用 双横线 / 半框形矩形 表示

4、外部实体

外部实体 : 软件系统之外的 人员 / 组织 ;

符号表示 : 矩形 ;

三、数据流图 ( DFD ) 分层 

 

1、分层说明 

数据流图分层 , 最上层是 顶层数据流图 , 第二层是  0 层数据流图 , ⋯  ⋯ , 最底层是 底层数据流图

“顶层数据流图”“底层数据流图” 之间是若干 中层数据流图 ,

中层数据流图 需要进行编号 , 从 0 0 0 开始编号 ;

2、顶层数据流图

顶层数据流图 : 中间的椭圆 是需要开发的 系统 , 周边的矩形 表示的是 外部实体人或组织 , 外部实体 与 系统 之间 , 有数据传输关系 ;

一个形象的说明是 多个人吃火锅 , 外层周边是人 , 中心位置火锅是系统 ;

顶层数据流图 能够表达的信息是非常有限的 , 其 将整个系统 , 使用一个节点表示 ,

其可以体现出 系统与外界实体之间的交互 ,

但是 系统内部的情况 , 系统内部模块之间的数据交换 是没有体现的 ;

3、中层数据流图

“顶层数据流图” 进行细化 , 细化后的 0 0 0 层数据流图 ,

与 顶层数据流图 比较没有变化的部分 : 外部实体 , 外部实体与系统之间的数据流 , 是没有变化的 ;

变化部分 : 有变化的部分是系统内部 , 系统内部进行了细化 , 原来系统是一个节点 , 在 中层数据流图 中 , 会将一个节点 拆分成 多个节点 , 这些节点就是系统中的数据处理部件 , 即 加工 ;

这些数据处理部件 ( 加工 ) 之间会有数据流的交互 ,

4、底层数据流图

针对每个加工 节点 , 将其拆分 , 绘制其中的更详细的数据流转情况 ;

数据流图 ( DFD ) 分层 , 是从 顶层 -> 中层 -> 底层 , 逐层进行分解 , 这种分解思路 , 与结构化的开发方法 , 是完全匹配的 ;

因此 , 数据流图 是 结构化 开发方法中 , 最常用的工具 ;

绘制数据流图时 , 要保证 上一层数据流图 与 下一层数据流图 保持平衡 , 这就是 数据流图平衡原则 ;

四、数据字典

数据字典 可以 配合 数据流图 使用 , 对数据进行诠释 , 可以让开发者更加清楚 数据的组成 , 格式 ;

数据字典中包含的符号 :

① “=” : 含义是 “被定义为” ; 如 : x = a + b  , 表示 x  数据 被定义为 由  a 与  b 组成 ;

② “+” : 含义是 “与” ; 如 : x = a + b  , 表示  x 数据 被定义为 由  a 与 b 组成 ;

③ “[… | …]” , “[… , …]” : 含义是 “或” ; 如 : x = [ a , b ] , x = [ a ∣ b ] , 表示 x 由  a 或  b 组成 , 二者选其一 ;

④ “{…}” : 含义是 “重复” ; 如 : x = { a }  , 表示 x 由多个  0 , 或多个  a 组成 ;

⑤ “(…)” : 含义是 “可选” ; 如 x = ( a ) , 表示  a 可以出现在  x 数据中 , 也可以不出现 ;
 

数据字典示例 : 学生数据的数据字典 ;

学生 = 姓名 + 学号 + 年龄 + 年级 + 学校 + 地址

学号 = “1”…“100”

班级 = [一年级 | 二年级 | 三年级 ]

五、据流图平衡原则 :

  • 父图 ( 上层数据流图 ) 与 子图 ( 下层数据流图 ) 之间的平衡
  • 子图 内部的平衡

1、父图 ( 上层数据流图 ) 与 子图 ( 下层数据流图 ) 平衡

父图 ( 上层数据流图 ) 与 子图 ( 下层数据流图 ) 平衡 :

利用 数据流图平衡原则 , 可以找出 在 细化上层数据流图 时 , 忽略的 数据流 ;

根据 顶层数据流 可以 确定缺失的 底层数据流 ; 根据底层数据流 , 可以补充缺失的顶层数据流 ;

找  0 层数据流图 缺失的数据流时 , 先查看 顶层数据流图 , 在 外部实体 与 系统之间 , 存在哪些 数据流 , 这些数据流 是否 在 0 层数据流图 中出现过 ;


找 顶层数据流图 中缺失的数据流时 , 查看 0 层数据流图中 , 有没有出现缺失的数据流 ;
在 顶层数据流图 与 0 层数据流图 之间 , 只能确定 外部实体 与 系统 之间的数据流 ,
系统内部的数据流 , 在 顶层数据流图中 , 是没有体现的 ;

父图 ( 上层数据流图 ) 与 子图 ( 下层数据流图 ) 之间的平衡匹配方法 :

① 个数一致 : 两层数据流图中的 数据流个数一致 ;

② 方向一致 : 两层数据流图中的 数据流方向一致 ;

2、子图内平衡

子图内平衡 : 对于数据流图的任意一个加工 , 既有输入 , 又有输出 ;

加工 : 描述 “输入数据流”“输出数据流” 之间的变换 , 即 对数据进行了什么样的处理 , 使得 “输入数据流” 变为 “输出数据流” ;

主要操作 : 在程序中的体现是 处理 数据的过程 , 向 “加工” 中输入数据流后 , 将数据进行加工 , 处理 , 变换后 , 产生新的 “输出数据流” ;

黑洞 : 某个加工 , 只有输入 , 没有输出 , 称为黑洞 ;

奇迹 : 某个加工 , 只有输出 , 没有输入 , 称为奇迹 ;

六、数据流图绘制原则

数据流图数据流 , 加工 , 数据存储 , 外部实体 组成 , 先找出 三个具体存在的事物 外部实体 , 加工 , 数据存储 , 然后在为这些事物添加 数据流 箭头 ;

拿到一个需求之后 , 绘制数据流图流程 :

① 外部实体 : 找出外部实体 , 使用系统的 人 或 组织 ;

② 加工 : 找出系统中的 中间件 加工 , 处理数据用的 ;

③ 数据存储 : 找到 暂时存储数据的载体 , 数据存储 ;

④ 数据流 : 在上述 外部实体 , 加工 , 数据存储 基础上 , 绘制 数据流 箭头 ;

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

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

相关文章

【深度学习 | 反向传播】释放反向传播的力量: 让训练神经网络变得简单

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

阿里云服务器搭建WordPress建站教程基于Windows系统

本教程是使用阿里云服务器镜像系统选择的是Windows操作系统,手动安装WordPress博客网站全过程。本教程介绍如何在Windows操作系统的ECS实例上搭建WordPress网站。 目录 准备工作 搭建WordPress网站 解析WordPress网站域名 准备工作 创建Windows操作系统的ECS实…

BGP协议综合知识(打破水平分割--联邦、反射规则)

反射规则:不优路由不能被传递,自然也不能被反射; RR从一个EBGP邻居处学习到的路由,可以传输给客户端、非客户端,已经本地的其他EBGP邻居;RR从一个客户端学习到的路由,可以传递给本地其他的客户…

通讯协议037——全网独有的OPC HDA知识一之聚合(六)实际时间最小值

本文简单介绍OPC HDA规范的基本概念,更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化,以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…

7.3 详解NiN模型--首次使用多层感知机(1x1卷积核)替换掉全连接层的模型

一.前提知识 多层感知机:由一个输入层,一个或多个隐藏层和一个输出层组成。(至少有一个隐藏层,即至少3层) 全连接层:是MLP的一种特殊情况,每个节点都与前一层的所有节点连接,全连接…

分布式数据库的HTAP能统一OLTP和 OLAP吗?

OLAP和OLTP通过ETL衔接。为提升OLAP性能,需在ETL过程进行大量预计算,包括: 数据结构调整业务逻辑处理 好处:可控制OLAP的访问延迟,提升用户体验。但因为要避免抽取数据影响OLTP系统,须在日终的交易低谷期…

java Spring Boot yml多环境配置

我们项目 线上和线下 环境配置不是特别一样 例如 运行的URL 数据库地址 数据库的账号密码 这些经常是不一样的 如果每次上线钱改 也不是特别方便 甚至可能忘记 那么 进入我们代码中 所谓的多环境 就是在不同的环境下配置不同的值 终端还是在application配置文件中 多环境的话…

Add-in Express for Microsoft Office and Delphi Crack

Add-in Express for Microsoft Office and Delphi Crack 适用于Microsoft Office和Delphi VCL的Add-in Express使您能够在几次点击中为Microsoft Office开发专业插件。它生成基于COM的项目,这些项目包含Microsoft Office外接程序或智能标记的所有必要功能&#xff0…

Vue——webpack

webpack 一、Install1.全局安装2.局部安装 二、总结1.打包2.定义脚本3.配置文件定义(webpack.config.js)4.项目重新加载依赖5.webpack打包Css6.style-loader 一、Install 1.全局安装 npm install webpack webpack-cli -g2.局部安装 以项目为单位,一个项…

【STM32】简介

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…

音视频 vs2017配置FFmpeg

vs2017 ffmpeg4.2.1 一、首先我把FFmpeg整理了一下&#xff0c;放在C盘 二、新建空项目 三、添加main.cpp&#xff0c;将bin文件夹下dll文件拷贝到cpp目录下 #include<stdio.h> #include<iostream>extern "C" { #include "libavcodec/avcodec.h&…

类与对象(加深)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 6.const成员 7.取地址及const取地址操作符重载 1.类的6个默认成员函数 如果…

Linux常见面试题,应对面试分享

操作系统基础 1.cpu占⽤率太⾼了怎么办? 排查思路是什么&#xff0c;怎么定位这个问题&#xff0c;处理流程 其他程序: 1.通过top命令按照CPU使⽤率排序找出占⽤资源最⾼的进程 2.lsof查看这个进程在使⽤什么⽂件或者有哪些线程 3.询问开发或者⽼⼤,是什么业务在使⽤这个进程…

【Windows API】获取卷标、卷名

1、卷->卷标 使用FindFirstVolume()和FindNextVolume()函数体系&#xff0c;枚举系统所有卷&#xff08;Volume&#xff09;的例子&#xff0c;然后获取卷标、卷类型。这个方式可以枚举出没有驱动器号&#xff08;卷标&#xff09;的卷。 int TestMode1() {HANDLE hVolume…

科技云报道:一波未平一波又起?AI大模型再出邪恶攻击工具

AI大模型的快速向前奔跑&#xff0c;让我们见识到了AI的无限可能&#xff0c;但也展示了AI在虚假信息、深度伪造和网络攻击方面的潜在威胁。 据安全分析平台Netenrich报道&#xff0c;近日&#xff0c;一款名为FraudGPT的AI工具近期在暗网上流通&#xff0c;并被犯罪分子用于编…

毅哥铡特:修改后的Bellmanford最短路径路由动画演示

修改背景&#xff1a;毅哥铡特自带的《routing_bellmanford.cpp》&#xff0c;按路由跳数进行更新路由表&#xff0c;但是&#xff0c;卫星互联网的卫星路由器节点&#xff0c;可能需要考虑传播传输时延&#xff0c;对应的&#xff0c;可能需要按照两个网络节点的距离来更新路由…

Node.js |(四)HTTP协议 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;HTTP概念&#x1f4da;窥探HTTP报文&#x1f4da;请求报文的组成&#x1f407;HTTP请求行&#x1f407;HTTP请求头&#x1f407;HTTP的请求体 &#x1f4da;响应报文…

Linux信号介绍

一、信号处理函数的注册 signal()使用&#xff1a; 1 #include<stdio.h>2 #include <signal.h>3 4 void handler(int signum)5 {6 switch(signum){7 case 2:8 printf("signum %d\n",signum);9 …

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接

本文只介绍在windows下实现的过程&#xff0c;Ubuntu采用22.04 安装multipass后&#xff0c;在卓面右下角Open shell 就可以链接默认实例Primary&#xff0c;当然如果你有多个虚拟机&#xff0c;可以针对不同内容单独建立终端的链接&#xff0c;而本文仅仅用Primary来说明。 …

GO学习之 微框架(Gin)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…