软考高级之系统架构师之数据流图和流程图

news2024/9/27 9:24:47

数据流图

概述

数据流图,DFD,用于表示业务信息系统中的数据流,它表达系统中的据传从输入到存储间所涉及的程序。采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

数据流图 = 数据流 + 图

主要作用

数据流图从数据传递和加工的角度,利用图形符号通过逐层细分描述系统内各个部件的功能和数据在它们之间传递的情况,来说明系统所完成的功能。主要作用如下:

  • 数据流图是理解和表达用户需求的工具,是需求分析的手段。由于数据流图简明易懂,不需要任何计算机专业知识就可以理解它,因此,系统分析师可以通过数据流图与用户进行交流;
  • 数据流图概括地描述系统的内部逻辑过程,是需求分析结果的表达工具,也是系统设计的重要参考资料,是系统设计的起点;
  • 数据流图作为一个存档的文字材料,是进一步修改和充实开发计划的依据。

概念

顶层图:
0层图:就是把顶层图的加工分解成若干个子加工,并用数据流将这些子加工连接起来,使得顶层图的输入数据经过若干子加工处理后,变成顶层图的输出数据流。
1层图:

除顶层数据流图外,其他数据流图从零开始编号。

分类

顶层、中层、底层

根据层级数据流图分为顶层数据流图、中层数据流图和底层数据流图:

  • 顶层数据流图:只含有一个加工表示整个系统;输出数据流和输入数据流为系统的输入数据和输出数据,表明系统的范围,以及与外部环境的数据交换关系。
  • 中层数据流图:对父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图;中间层次的多少,一般视系统的复杂程度而定。
  • 底层数据流图:指其加工不能再分解的数据流图,其加工称为原子加工。

逻辑、物理

从另一个角度,数据流图可以分为逻辑图和物理图:

  • 逻辑数据流图:描述用以完成某业务功能所涉及的业务层面的数据流动。逻辑数据流图主要表达业务和业务运作,它不关心系统将如何构建。可以忽略实现细节,如计算机配置、数据存储技术、信或消息传递方法,而集中表达系统所执行的功能,如数据收集、数据跟信息的转换和信息报告。
  • 物理数据流图:描述系统层面的数据流动。物理数据流程图显示系统将如何被建设起来,包括系统中的硬件、软件、文件和人员。它使逻辑数据流图中描述的程序正确地实现以达到业务目标。
逻辑数据流图

好处

  • 逻辑数据流图主要呈现业务信息,该图以业务活动为中心,故有助于与用户间的交流和沟通
  • 逻辑数据流图乃基于业务事件而绘制,并且独立于特定的技术或物理布局,这让系统更加稳定
  • 逻辑数据流图让分析师更了解正在研究的业务,并确定决策背后的原因。
  • 基于逻辑数据流图而实现的系统更容易维护,因为业务功能不会经常发生变化
  • 很多时候,逻辑数据流图不包含文件或数据库以外的数据存储,这比物理数据流图更易于绘制
  • 通过修改逻辑数据流图可以很容易地产生物理数据流图。
物理数据流图

好处

  • 厘清哪些程序是手动的,哪些流程是自动的:手动程序需要详细的文档,而自动化流程则需要开发计算机程序
  • 比逻辑数据流图更详细地描述过程,描述处理数据的所有步骤
  • 排序过程必须按照特定顺序完成,描述导致有意义结果的活动顺序。例如,必须在生成摘要报告之前执行更新
  • 识别临时数据存储:描述临时存储,例如在杂货店中用于顾客收据(报告)的销售交易文件
  • 指定文件和打印输出的实际名称:逻辑数据流图描述实际的文件名和报告,以便程序员在系统的开发阶段将它们与数据字典(Data Dictionary)联系起来
  • 添加控件以确保过程正确完成。

设计原则

数据流图的设计原则:

  • 复杂性最小化原则
  • 接口最小化原则
  • 数据流一致性原则

四大要素

也叫四种基本符号:

  • 外部实体:数据源及数据终点,指系统之外、又与系统有联系的人或事物,它表达该系统数据的外部来源和去处;位于被建模的系统之外的信息生产者或消费者,是不能由计算机处理的成分,它们分别表明数据处理过程的数据来源及数据去向,用标有名字的方框表示
  • 数据加工:描述输入数据流到输出数据之间的变换,即输入数据流经过什么处理后变成输出数据。对数据流的变换,一般用圆圈表示
  • 数据存储:某种数据保存后的逻辑统称,不是指保存数据的物理地点和物理介质。可访问的存储信息,一般用标有名字的直线段表示。
  • 数据流:处理功能的输入/输出,具有名字和流向的数据,用标有名字的箭头表示

绘制步骤

简单来说,三个步骤:

  1. 确定系统的输入输出:这个阶段,应该充分了解“系统从哪些外部实体接受什么数据”、“系统向哪些外部实体送出什么数据”等信息,这将是第二步绘制顶层数据流程的关键。
  2. 由外向里画系统的顶层数据流图:确定系统的输入输出后,我们将可以将它们用“加工”连接起来,“加工”用以表示被开发的整个系统,也是数据流组成或值变化的地方。产物:顶层图。
  3. 自顶向下逐层分解,绘出分层数据流图:对于大型的系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示。产物:0层图、1层图。

数据流图的绘制是一个自项向下、由外到里的过程,通常按照以下几个步骤进行:

  • 画系统的输入和输出:在图的边缘标出系统的输入数据流和输出数据流。这一步骤其实是决定研究的内容和系统的范围。在画的时候,可以先将尽可能多的数据流画出来,然后再删除多余的,增加遗漏的。
  • 画数据流图的内部:将系统的输入、输出用一系列的处理连接起来,可以从输入数据流画向输出数据流,也可以从中间画出去。
  • 为每一个数据流命名:命名的好坏与数据流图的可理解性密切相关,应避免使用空洞的名字。
  • 为加工命名:使用动宾短语为每个加工命名。每画好一张数据流图,就需要进行检查和修改,检查和修改的原则如下。
  • 数据流图中的所有图形符号只限于前述4种基本图形元素,图上每个元素都必须有名字。
  • 每个加工至少有一个输入数据流和一个输出数据流,而且要保持数据守恒。也就是,一个加工的所有输出数据流中的数据必须能从该加工的输入流中直接获得,或者通过该加工能产生的数据。一个加工的输出数据流不应与输入数据流同名,即使它们的组成完全相同。
  • 在数据流图中,需按层给加工编号。编号表明该加工处在哪一层,以及上下层的父图与子图的对应关系。
  • 规定任何一个数据流图子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致,即父图与子图的平衡。也就是说,父图中的某加工的输入/输出流必须与它的所有子图的输入/输出数据流在数量上和名字上相同。如果父图中的一个输入(输出)数据流对应于子图中的几个输入(输出)数据流,而子图中组成这些数据流的数据项的全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。
  • 在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但是在某张子图中,可能只有读没有写,或者只有写没有读。
  • 可以在数据流图中加入物质流,帮助用户理解数据流图,但不可夹带控制流。

注意事项

  1. 画数据流而不是控制流。数据流反映系统“做什么”,不反映“如何做”,箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序
  2. 一般不画物质流。数据流反映能用计算机处理的数据,并不是实物,因此对目标系统的数据流图一般不要画物质流
  3. 每个加工至少有一个输入数据流和一个输出数据流
  4. 一个加工的输出数据流,不应与输入数据流同名,即使他们的组成完全相同
  5. 外部实体之间不应该存在数据流,因为数据流的起点和终点中必须有一个是加工
  6. 如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号
  7. 父图与子图的平衡。父图中的某加工的输入输出流必须与他的子图的输入输出数据流在数量上和名字上相同,此即父图与子图的平衡
  8. 当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。

常见错误

一个正常的流程为:实体->加工->数据存储->加工->实体

场景错误:

  • 实体->实体
  • 加工->加工
  • 数据存储->数据存储
  • 实体->数据存储
  • 数据存储->实体

错误种类分析:
 只有输入没有输出,产生数据黑洞
 只有输出没有输入,无中生有
 外部实体没有经过加工处理,直接到数据存储
 外部实体之间没有加工处理,存在直接数据流
 数据存储没有输出的数据流
 加工不能只进数据流,同样也不能只出数据流
 实体与实体之间有数据流
 实体与数据存储之间有数据流,存储和存储之间有数据流

流程图

概述

流程图 = 流程 + 图

所谓流程,IS09000系列国际标准中将流程定义为一组将输入转化为输出的相互群或相互作用的活动。流程有六个要素构成,分别是流程的输入资源、流程中的若干活动、活动的相互作用、输出结果、顾客、最终流程创造的价值。

一个流程会将这6个要素有序串联起来,而流程图则是承载上述程序的图形载体。

根据流程图流动信息的不同,又可以细分为产品流程图、数据流程图、程序流程图:

  • 页面流程图,呈现页面跳转顺序
  • 数据流程图,用于表达数据流转
  • 程序流程图,用户表述程序执行顺序

PFD

程序流程图,又称程序框图,是用统一规定的标准符号描述程序运行具体步骤的图形表示。程序框图的设计是在处理流程图的基础上,通过对输入输出数据和处理过程的详细分析,将计算机的主要运行步骤和内容标识出来。

符号规范

几个重要且最常用的符号:
在这里插入图片描述

结构规范

流程图有三大结构:

  • 顺序结构:按先后顺序执行,
  • 选择结构:又称分支结构,判断给定的条件,根据判断结果来控制程序的流程
  • 循环结构:又称为重复结构,在程序中需要反复执行某个功能而设置的一种程序结构。根据循环体中的条件,判断重复执行某个功能还是退出循环。又可细分为以下两种形式:
    • 先判断后执行的循环结构(当型结构)
    • 先执行后判断的循环结构(直到型结构)

路径规范

除符号规范、结构规范,绘制流程图还要注意一些约定俗成的路径规范:

  1. 绘制流程图时,为了提高流程图的逻辑性,应遵循从左到右、从上到下的顺序排列
  2. 一个流程从开始符开始,以结束符结束。开始符号只能出现一次,而结束符号可出现多次。若流程足够清晰,可省略开始、结束符号
  3. 同一流程图内,符号大小需要保持一致,同时连接线不能交叉,连接线不能无故弯曲
  4. 流程处理关系为并行关系的,需要将流程放在同一高度
  5. 处理流程须以单一入口和单一出口绘制,同一路径的指示箭头应只有一个

工具

非常多,如:VISIO、ProcessOn、亿图图示、drawio

区别

  • 数据流图中的处理过程可并行;流程图在某个时间点只能处于一个处理过程
  • 数据流图展现系统的数据流;流程图展现系统的控制流
  • 数据流图展现全局的处理过程,过程之间遵循不同的计时标准;流程图中处理过程遵循一致的计时标准
  • 数据流图适用于系统分析中的逻辑建模阶段;流程图适用于系统设计中的物理建模阶段

实战

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

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

相关文章

[蓝桥双周赛]铺地砖

题目描述 小蓝家要装修了,小蓝爸爸买来了很多块(你可以理解为数量无限)23规格的地砖,小蓝家的地板是n m规格的,小蓝想问你,能否用这些23的地砖铺满地板。 铺满地板:对于地板的每个区域,都有且只有一块地…

监控与升级

文章目录 主要内容一.部署Metrics1.部署代码如下(示例): 2.解释 二.升级控制平面1.先确定要升级的版本代码如下(示例): 2.禁止master节点接受新调度代码如下(示例): 3.驱逐master节点上的现有任务代码如下&…

IP地址和子网掩码

1.域名 计算机主机名.本地名.组名.最高层域名 http://www.baidu.com 2.IP地址 每个IP地址都由4个小于256的数字组成,数字之间用“.”分开。Internet的IP地址共有32位,4个字节。它有两种表示格式:二进制格式和十进制格式。二进制格式是计算…

Matlab进阶绘图第32期—小提琴图(Violin Chart)

​小提琴图结合了箱线图与核密度图的特征,可用于展示多组数据的分布状态及概率密度。 由于Matlab中未收录小提琴图的绘制函数,因此需要大家自行解决。 本文在violin工具(Hoffmann H, MathWork, 2015)的基础上,对一些…

Leetcode刷题详解——在排序数组中查找元素的第一个和最后一个位置

1. 题目链接:34. 在排序数组中查找元素的第一个和最后一个位置 2. 题目描述: 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff…

C#,数值计算——分类与推理Phylo_upgma的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Phylo_upgma : Phylagglom { public override void premin(double[,] d, int[] nextp) { } public override double dminfn(doubl…

计算数组中各元素的平方numpy.square()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 计算数组中各元素的平方 numpy.square() 选择题 请问np.square(a1)的结果是: import numpy as np a1 [1,2,3] print("【显示】a1 ",a1) print("【执行】np.sq…

KNN-水仙花的分类

题目: 思路: 1、处理数据集,这里用的是题目已知的数据集,所以说需要提前将写好的数据放到excel表格里,再进行读取。 2、将数据集划分为训练集和测试集 3、定义K-NN模型。 4、训练模型 5、预测模型 6、计算分类精…

【鸿蒙软件开发】ArkTS基础组件之DataPanel(数据面板)、DatePicker(日期选择)

文章目录 前言一、DataPanel数据面板1.1 接口参数介绍 1.2 属性1.3 DataPanelType枚举说明1.4 深度剖析number[]参数1.5 示例代码 二、DatePicker日期选择2.1 接口参数说明 2.2 属性2.3 事件DatePickerResult对象说明 2.4 示例代码 总结 前言 DataPanel:数据面板组…

C++前缀和算法的应用:装包裹的最小浪费空间 原理源码测试用例

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 给你 n 个包裹,你需要把它们装在箱子里,每个箱子装一个包裹。总共有 m 个供应商提供 不同尺寸 的箱子(每个规格都有无数个箱…

黑豹程序员-架构师学习路线图-百科:Mybatis的伴侣MybatisPlus

文章目录 1、什么是MybatisPlus?2、MybatisPlus发展历史 1、什么是MybatisPlus? java单体项目几乎已经被SSM三大框架所垄断,而M就代表Mybatis。 但Mybatis的结构还是较复杂的,例如:User模块,需要写UserMap…

[开源]一个低代码引擎,支持在线实时构建低码平台,支持二次开发

一、开源项目简介 TinyEngine低代码引擎使能开发者定制低代码平台,支持在线实时构建低码平台,支持二次开发或集成低码平台能力。 二、开源协议 使用MIT开源协议 三、界面展示 四、功能概述 TinyEngine是一个低代码引擎,基于这个引擎可以构…

如何批量给视频添加logo水印?

如果你想为自己的视频添加图片水印,以增强视频的辨识度和个性化,那么你可以使用固乔剪辑助手软件来实现这一需求。下面就是详细的操作步骤: 1.下载并打开固乔剪辑助手软件,这是一款简单易用的视频剪辑软件,功能丰富&am…

实验数据旋转角度处理过程中的常见问题

问题 做实验过程中使用 EM tracker 测量自己机器人末端旋转时的角度。 尾部 设置EMTracker 1,作为固定基准,其轴线与机器人中心轴线近似重合,EM Tracker 2 固定在机器人活动关节上,两者轴线夹角近似为机器人旋转角度。论文尚未发…

Jenkins 安装全攻略:从入门到精通

目录 一:安装文件夹准备 1.打开,/home/admin目录 2.新建三个文件夹 二:安装tomcat 1.打开tomcat目录进行tomcat安装 2.解压tomcat文件 3.开放端口号 4.启动tomcat 5.浏览器访问tomcat 三:安装Maven 1.打开maven目录进行…

VB.NET 三层登录系统实战:从设计到部署全流程详解

目录 前言: 什么是三层 为什么要用到三层: 饭店→软件 理解: 过程: 1.三层包图: 2.数据库 3.三层项目 4.用户界面 5.添加引用 代码实现: Entity层 BLL层 DAL层 UI层 总结: 前言: 什么是三层 三层就是把各个功能模块划分为表示层&#…

python访问Wikipedia

import wikipedia # doc: https://pypi.org/project/wikipedia/def searchWikiPedia(keyword, language) -> str:wikipedia.set_lang(language)result wikipedia.page(keyword)return result.contentif __name__"__main__":# 设置语言https://meta.wikimedia.org…

Leetcode刷题详解——x的平方根

1. 题目链接:69. x 的平方根 2. 题目描述: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 **注意:**不允许使用任何内置指数函数和…

网站搬家的多种方法

网站搬家,把网站从一个服务器迁移到另一个服务器,涉及到网站文件和数据库的备份、上传、导入等操作,最重要的是备份网站,避免迁移出现问题无法恢复网站。 根据不同的情景和需求,网站搬家的方法有多种,下面…

什么是Docker CLI

Docker CLI(命令行界面)是一个工具,允许用户通过命令行或终端与Docker进行交互。Docker是一个开源平台,用于开发、运送和运行应用程序。Docker使用容器化技术来打包应用程序及其依赖项,以确保在不同环境中的一致性和隔…