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

数据流图

概述

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

数据流图 = 数据流 + 图

主要作用

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

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

概念

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

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

分类

顶层、中层、底层

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

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

逻辑、物理

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

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

好处

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

好处

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

设计原则

数据流图的设计原则:

  • 复杂性最小化原则:DFD分层结构就是把信息划分为晓得且相对独立的一大批子集例子,这样就可以单独考查每一个DFD
  • 接口最小化原则:在设计模式时,模型中各个元素之间的接口数或者连接数最小化
  • 数据流一致性原则:过程与过程分解数据流一致,有数据流出就有数据流入;数据流入需要有相应的数据加工

四大要素

也叫四种基本符号:

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

绘制步骤

简单来说,三个步骤:

  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.mzph.cn/news/120014.shtml

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

相关文章

源码推荐【源码好优多】

一、影视小程序 特点:可独立部署、消耗环境小、安全可靠。使用微信小程序技术开发。部署简单容易。该项目的部署需要具备微擎框架的开发以及部署能力 二、java博客管理系统 博客管理系统是一个融合线上、线下的网民在线交流管理信息化系统。它的使用为网民、运营者搭…

Flutter最全面试题大全

在理解这些问题之前,建议看一下Flutter架构原理,如下链接: https://blog.csdn.net/wang_yong_hui_1234/article/details/130427887?spm1001.2014.3001.5501 目录 一. 有个Text节点,由于文字内容过多,发生了溢出错误&…

三步,金蝶K3的数据可视化了

数据可视化的一大特点就是“一图胜千言”,没什么能比图表更直观展现数据的了。那,金蝶K3系统上那海量数据能不能也做成数据可视化报表?操作复杂吗,难度大吗? 换了别的软件来做,操作多、难度大是板上钉钉&a…

排序算法-堆积树排序法(HeapSort)

目录 排序算法-堆积树排序法(HeapSort) 1、说明 2、算法分析 3、C代码 排序算法-堆积树排序法(HeapSort) 1、说明 堆积树排序法是选择排序法的改进版,可以减少在选择排序法中的比较次数,进而减少排序…

计算机服务器中了devos勒索病毒怎么办?企业数据库被encryped

计算机网络技术的不断发展,为人们的生活提供了更多的帮助,但也为我们的企业带来了更多的数据安全威胁。近期,云天数据恢复中心收到很多企业的求助,企业的数据库遭到了devos后缀勒索病毒攻击,导致企业数据库无法打开&am…

TypeScript 基础学习

第一节:为什么使用ts? js 只能是动态类型检查,ts 是静态类型检查 第二节:优化编译 生成的配置文件名字叫tsconfig 第三节:变量类型 联合类型 可选属性 类型别名 接口 接口和类型别名的区别 接口扩展 类型扩展 类型断言&#…

为爱出发,与善同行丨纬创软件2023北京善行者圆满收官

2023年10月21日,北京善行者徒步活动在昌平正式开走。800支队伍3200名善行者队员进行32公里的公益行走。纬创软件组建「北京台协纬创软件队」,4名队员踏上32公里的征程,通过徒步筹款的方式传递善行理念,为贫困山区的孩子们建立“爱…

Linux redis 安装

1、解压 tar -zxvf redis-5.0.10.tar.gz 2、cd /data/redis-5.0.10 文件夹 3、make 等待make命令执行完成即可。 make命令报错:cc 未找到命令,系统中缺少gcc,执行命令安装 gcc: yum -y install gcc automake autocon…

内网穿透的应用-Linux JumpServer堡垒机:安全远程访问解决方案

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpS…

C#,数值计算——分类与推理,基座向量机(SVM,Support Vector Machines)的计算方法与源程序

把 Support Vector Machines 翻译成 支持向量机 是书呆子翻译。基座向量机 不好吗。 1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Support Vector Machines /// </summary> public class Svm { priv…

【SpringCloudNetflix】一图理解Spring Cloud Netflix解决了那些微服务问题?

什么是微服务理解&#xff1a; SpringCloudNetflix解决的问题理解&#xff1a; SpringCloudNetflix核心点&#xff1a; 注册中心&#xff1a;Eureka负载均衡&#xff1a;Ribbon、Feign服务熔断&#xff1a;Hystrix服务降级&#xff1a;Hystrix服务监控&#xff1a;Hystrix Da…

【工具问题】IDEA每次关闭的时候都会弹框显示closing project,然后弹框持续很久就像卡住了

idea关闭的时候出现问题 问题展示为什么会出现这种情况怎么解决 问题展示 我idea已经关闭了&#xff0c;但是这个弹框要持续很久才能关闭 为什么会出现这种情况 我的plugins原本是加载不出来的&#xff0c;所以我按照网上说法去做 怎么解决 file->setting,再如图选择…

menuconfig 图形化配置原理说明三

一. 简介 本文继续简单了解一下&#xff0c;uboot的图形化配置原理。具体了解 Kconfig语法。 之前文章了解了几个 Kconfig语法。地址如下&#xff1a; menuconfig 图形化配置原理说明二-CSDN博客 二. menuconfig 图形化配置之 Kconfig语法 1. config 条目 顶层 Kconfig …

PyTorch卷积神经网络各层实现与介绍

本文将讲解&#xff0c;PyTorch卷积神经网络各层实现与介绍&#xff0c;包括&#xff1a;基本骨架–nn.Module的使用、卷积操作、卷积层、池化层、激活函数、全连接层的介绍。 &#x1f61c; 对于相关原理&#xff0c;可以跳转&#x1f449;卷积神经网络CNN各层基本知识 &…

vue源码分析(二)——vue的入口发生了什么

文章目录 前言&#xff08;1&#xff09;vue 项目构建的时候&#xff0c;通过package.json文件看到构建入口&#xff08;2&#xff09; 构建入口页面&#xff1a;导入同级模块config的getAllbuilds方法&#xff08;3&#xff09; 通过传入参数中的builds对象使用map获取&#x…

简化路径(C++解法)

题目 给你一个字符串 path &#xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 &#xff08;以 / 开头&#xff09;&#xff0c;请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中&#xff0c;一个点&#xff08;.&#xff09;表示当前目录本身&#xff1…

Git(二)版本控制、发展历史、初始化配置、别名

目录 一、版本控制1.1 为什么要使用版本控制&#xff1f;1.2 集中化的版本控制系统1.3 分布式的版本控制系统1.3 两种版本控制系统对比集中式&#xff08;svn&#xff09;分布式&#xff08;git&#xff09; 二、发展历史三、初始化配置3.1 配置文件3.2 配置内容 四、别名 官网…

论文阅读 - Hidden messages: mapping nations’ media campaigns

论文链接&#xff1a; https://link.springer.com/content/pdf/10.1007/s10588-023-09382-7.pdf 目录 1 Introduction 2 The influence model 2.1 The influence‑model library 3 Data 4 Methodology 4.1 Constructing observations 4.2 Learning the state‑transiti…

自动驾驶之—LaneAF学习相关总结

0.前言&#xff1a; 最近在学习自动驾驶方向的东西&#xff0c;简单整理一些学习笔记&#xff0c;学习过程中发现宝藏up 手写AI 1. 概述 Laneaf思想是把后处理放在模型里面。重点在于理解vaf&#xff0c; haf&#xff0c;就是横向聚类&#xff1a;中心点&#xff0c;纵向聚类&…

内网渗透——macOS上搭建Web服务器

# 公网访问macOS本地web服务器【内网穿透】 文章目录 1. 启动Apache服务器2. 公网访问本地web服务2.1 本地安装配置cpolar2.2 创建隧道2.3 测试访问公网地址3. 配置固定二级子域名3.1 保留一个二级子域名3.2 配置二级子域名4. 测试访问公网固定二级子域名 以macOS自带的Apache…