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

数据流图

概述

数据流图,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.rhkb.cn/news/170677.html

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

相关文章

uni-app:解决异步请求返回值问题

可以使用 Promise 或者回调函数来处理异步请求的返回值。 方法一: Promise处理异步请求的返回值 使用 Promise 可以将异步请求的结果通过 resolve 和 reject 返回,然后通过 .then() 方法获取成功的结果,通过 .catch() 方法获取错误信息。 …

LeetCode209——长度最小的子数组

LeetCode209——长度最小的子数组 题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数…

抓取网页的含义和URL基本构成

抓取网页是指通过爬虫程序从互联网上获取网页的内容和数据。抓取网页是爬虫的核心功能之一,通过抓取网页,可以获取到网页中的文本、图片、链接等信息,用于后续的数据分析、挖掘和应用。 URL(Uniform Resource Locator&#xff09…

Istio 自动注入 sidecar 失败导致无法访问webhook服务

最近工作中在部署Istio环境的过程中发现官方示例启动的pod不能访问不到Istio的webhook,这个问题也是困扰了我一天,特此记录,便于日后查阅。 我把他归类到sidecar注入失败的情况,报错如下: 1、第一种可能(我…

计算机基础知识38

创建表的完整语法 create table t1(id int,name varchar(43),age int); create table 库名.表名( 字段名1 数据类型 约束条件 约束条件 约束条件 约束条件, 字段名2 数据类型 约束条件 约束条件 约束条件 约束条件...); 1. 字段名和数据类型必须…

c++类和对象(1)

目录 目录: 1.类的定义 1.1:类的语法及相关概念 1.2:类的两种定义方式 1.3:类的成员变量名命名规范 2.类的访问限定符 2.1:三种访问限定符关键字引入 2.2:访问限定符的语法说明 2.3:c中struct与class的区别(面试常考) 3.类的作用域 4.类的实例化 5.类对象 5.1:类对…

adb: error: 46-byte write failed: Invalid argument

使用adb pull可以,但是adb push fail。 貌似是adb的问题,将adb.exe 重命名为pdb,使用pdb push就行了。

二、【常用的几种抠图方式一】

文章目录 选框抠图快速选择工具抠图魔棒工具抠图对象选择工具抠图套索工具抠图多边形套索工具抠图磁性套索工具抠图 选框抠图 选框工具抠图适合规则的图形,如下图先使用选框工具框出对象的图轮廓,然后再选择并遮住在里边擦出图形的边缘,根据…

软考高级系统架构 上午真题错题总结

目录 前言一、2022年真题(√)二、2021年真题(√)三、2020年真题(√)四、2019年真题(√)五、2018年真题(√)六、2017年真题(√)七、201…

百度Comate SaaS版本正式发布,助力开发者加速研发过程

百度Comate是基于文心大模型的智能代码助手,让开发者的编码更快、更好、更简单,为开发者自动生成完整的、且更符合实际研发场景的代码行或整个代码块,帮助每一位开发者轻松完成研发任务。10月17日召开的百度世界大会上,百度CTO王海…

酷开科技依托酷开系统推动家庭智能化加速发展

为什么越来越多的人会选择智能家居?因为智能家居的出现,大大方便了我们的生活,为生活提供便利舒适的体验;就如同洗衣机与洗碗机解放了我们的双手是一样的道理,智能家居是在生活的方方面面为我们提供更加便利化的可能性…

p5.js 状态管理

本文简介 带尬猴,我是德育处主任 原生 canvas 提供了 save() 和 restore() 两个方法去管理画布状态。p5.js 作为一个 canvas 库,也理所当然的提供了状态管理的方法。在 p5.js 里这两个方法叫 push() 和 pop()。 本文主要讲解 p5.js 的 push() 和 pop()…

基于java的ssm框架农夫果园管理系统设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

python爬虫入门(四)爬取猫眼电影排行(使用requests库和正则表达式)

本例中,利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。 1.目标 提取出猫眼电影 TOP100 的电影名称、时间、评分、图片等信息,提取的站点 URL 为 http://maoyan.com/board/4,提取的结果会以文件形式保存下来。 2.抓取分析…

vscode推送gitee方法

有一套uni-app代码需要修改,版本控制使用vscode的git功能,远程库在gitee上。 1、设置vscode中git.exe路径 由于git使用了绿色便携版(PortableGit-2.42.0.2-64-bit.7z.exe),vscode未识别到git安装路径,需要…

OKLink携手CertiK在港举办Web3生态安全主题论坛

2023年10月23日,OKLink与CertiK共同发起的Web3生态安全主题论坛在香港铜锣湾拉开帷幕。本次论坛由OKLink和CertiK主办,香港投资推广署独家支持,聚焦如何构建安全可靠的Web3生态系统议题,同时深入剖析这一进程中所面临的潜在挑战。…

OkHttp网络框架深入理解-SSL握手与加密

OkHttp简介 由Square公司贡献的一个处理网络请求的开源项目,是目前Android使用最广泛的网络框架。从Android4.4开始HttpURLConnection的底层实现采用的是OkHttp。 特点: 支持HTTP/2并允许对同一主机的所有请求共享一个套接字通过连接池,减少了请求延迟…

每日汇评:黄金争取本周收于2000美元上方

在周五美国个人消费支出通胀之前,金价巩固了周四的双向价格走势; 在市场情绪改善之际,美元与美债收益率一同下跌; 黄金价格在日线图上确认了一个多头标志,相对强弱指数仍然指向更多的上涨; 周五早盘&#x…

万能鼠标设置 SteerMouse v5.6.8

鼠标可谓是用户们在使用电脑时候的必备外接设备呢!适合你自己的鼠标设置也绝对能够优化你的Mac使用体验!想要更好的Mac体验就试试用Steermouse Mac版吧。它通过软件来自由设置你的鼠标操作!在这款万能鼠标设置工具中,用户可以在偏…

Hadoop3.0大数据处理学习4(案例:数据清洗、数据指标统计、任务脚本封装、Sqoop导出Mysql)

案例需求分析 直播公司每日都会产生海量的直播数据,为了更好地服务主播与用户,提高直播质量与用户粘性,往往会对大量的数据进行分析与统计,从中挖掘商业价值,我们将通过一个实战案例,来使用Hadoop技术来实…