【软件设计师】程序猿需掌握的技能——数据流图

作为一个程序员,不仅要具备高水平的程序编码能力,还要是熟练掌握软件设计的方法和技术,具有一定的软件设计能力,一般包括软件分析设计图(常见的有数据流图,程序流程图,系统流程图,E-R图)和其他对业务表达的说明资料。

 🐓 什么是数据流图

数据流图(Data Flow Diagram,简称DFD)是一种图形化技术,它从数据传递和加工的角度,以图形方式描绘数据在系统中流动和处理的过程。数据流图既提供了功能建模机制,也提供了信息建模机制,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

数据流图特别适用于表示软件模型,因为它只反映系统必须完成的逻辑功能,是一种功能模型。在结构化开发方法中,数据流图是需求分析阶段产生的结果,它标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。

 🐓 数据流图的基本图形符号

 1.加工

用圆或者椭圆进行描述,又称数据处理,表示输入数据在此进行变换产生输出数据,以数据结构或数据内容作为加工对象。加工的名字通常是一个动词短语,可以更简单的表明要完成的加工。

2.数据流

用箭头描述,由一组固定的数据项组成,箭头方向表示数据的流向,作为数据在系统内的传输通道,大多是在加工之间传输加工数据的命名通道,也有在数据存储文件和加工之间的非命名数据通道。

同一数据流图上不能由同名的数据流。如果由两个以上的数据流指向一个加工,或是从一个加工中输出两个以上的数据流,那么它们之间一定存在一定的关系

3.数据存储文件
用双杆描述,在数据流图中起保存数据的作用,又称数据存储或文件,可以是数据库文件或任何形式的数据组织。流向数据存储的数据流可以理解为写入文件或查询文件,从数据存储流出的数
据流可以理解为从文件读数据或得到查询结果。


4.数据源点或终点
用方框描述,表示数据流图中要处理数据的输入来源或处理结果要送往的地方,在图中仅作为一个符号,并不需要以任何软件的形式进行设计和实现,是系统外部环境中的实体,故称外部实体。它们作为系统与系统外部环境的接口界面,在实际的问题中可能是人员、组织、其他软硬件系统等。一般只出现在分层数据流的顶层图中。 

  🐓 数据流图设计要略

1.明确系统边界和接口:在顶层数据流图中,需要明确系统的输入和输出数据流,以及系统和外部环境的数据交换关系。这有助于确定系统的范围和边界。

2.自顶向下,逐步细化:从顶层数据流图开始,逐步细化系统的各个部分,直到达到足够详细的程度。每一层的数据流图都是对上一层的细化,这样可以确保系统的逻辑清晰、层次分明。

3.保持数据守恒:在数据流图中,一个加工的所有输出数据流中的数据必须全部来自该加工的输入数据流,或者是通过该加工能产生的数据。这有助于确保系统的数据处理逻辑的正确性。

4.适当命名:为数据流、加工、数据存储和外部实体等选择合适的命名,使其能够反映该成分的实际含义。这有助于理解和分析数据流图。

5.注意数据流的平衡:父图和子图之间必须保持平衡,即父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。这有助于确保系统的数据流动和处理逻辑的一致性。

6.使用标准符号:在绘制数据流图时,应使用标准的符号来表示不同的成分,如数据流、加工、数据存储和外部实体等。这有助于使数据流图更加清晰、易于理解。

7.考虑数据字典:为每个数据流和数据存储定义清晰的数据字典,包括数据元素的名称、类型、取值范围等。这有助于确保系统的数据定义的一致性和准确性。

 🐓 数据字典

数据字典(Data Dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。它是对系统中使用的所有数据元素定义的集合,主要对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述。数据字典的目的是对数据流图中的各个元素做出详细的说明,为简单的建模项目提供帮助。

数据字典的内容包括数据库中所有模式对象的信息,如视图、簇、索引等;分配的空间信息,如空间大小和当前使用空间等;列的缺省值;约束信息的完整性;用户的名字;用户及角色被授予的权限;用户访问或使用的审计信息;以及其他产生的数据库信息。

 数据字典的四个条目

1.数据流:数据流是数据在系统内传播的路径,由一组成分固定的数据组成。在数据字典中,数据流条目给出了数据流的定义,通常列出该数据流的各组成数据项。

2.数据存储:数据存储是数据库或系统中的文件或数据库表,用于存储数据。在数据字典中,数据存储条目描述了存储的数据项、数据类型、数据长度和结构组成等信息。

3.数据项:数据项是数据的基本单位,它描述了数据的特性或属性。在数据字典中,数据项条目提供了数据项的名称、数据类型、取值范围、使用频率和使用方式等信息。

4.加工:加工是对数据进行处理或转换的过程。在数据字典中,加工条目描述了加工的名称、输入和输出数据流、处理逻辑和使用的程序等信息。

 🐓 分层数据流图

分层数据流图是一种数据流图的形式,它将整个系统的数据处理过程分解成多个层次,每一层都反映了系统的一个特定方面或模块。通过分层数据流图,可以更加清晰地展示系统的数据处理流程和逻辑关系,有助于开发人员理解和设计系统。

在分层数据流图中,通常将最高层的数据流图称为顶层数据流图,它描述了整个系统的输入和输出,以及系统的主要功能和处理过程。顶层数据流图中的加工通常被进一步细化,形成下一层的数据流图,称为中间数据流图(Intermediate Data Flow Diagram)。中间数据流图进一步描述了顶层数据流图中的某个加工的内部细节,包括其子加工、数据流和数据存储等。最终,最底层的数据流图描述了系统中最为具体的处理过程和数据流动情况。

注意事项:

1.每层数据流图应该聚焦于系统的不同方面或模块,避免重复和冗余。

2.上下层之间的数据流图应该保持一致性,即父图和子图之间必须保持平衡,确保数据流的守恒。

3.每个加工都应该被清晰地定义和描述,包括其功能、输入和输出数据流、以及所使用的数据存储等。

4.数据流图应该使用标准的符号和命名规范,以便于理解和交流。

 🐓 系统流程图

系统流程图(System Flowchart)是另一种用于描述系统内部数据处理流程的传统工具。与数据流图不同,系统流程图更注重于描述系统内部各个部件之间的物理关系和控制流程,而不是数据流动的情况。 

系统流程图的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况和系统的操作控制。系统流程图中的每个部件都被视为一个独立的实体,通过数据流和控制流相互连接。

主要作用

1.描述系统内部各个部件之间的物理关系和控制流程,帮助开发人员了解系统的整体结构和运行方式。

2.作为系统分析和设计的重要工具,有助于开发人员识别系统中的瓶颈和问题,并进行相应的优化和改进。

3.可以作为系统实现和维护的参考文档,帮助维护人员快速定位和修复系统中的故障和问题。

 🐓 程序流程图

程序流程图(Program Flowchart)是另一种用于描述程序内部逻辑结构的图形化工具。它是程序分析中最基本、最重要的分析技术之一,主要用于表示程序中的操作顺序和流程控制。

程序流程图的基本思想是用图形符号来表示程序中的各个操作步骤和控制流程,包括顺序结构、选择结构和循环结构等。通过程序流程图,可以清晰地展示出程序从起点到终点的完整执行过程,以及各个操作步骤之间的逻辑关系和控制流。

主要作用

1.描述程序的内部逻辑结构和执行流程,帮助开发人员理解和分析程序的运行过程。

2.作为程序设计和开发的重要工具,有助于开发人员优化程序结构、提高代码质量和可维护性。

3.可以用于程序测试和调试,帮助测试人员快速定位和修复程序中的错误和问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华清远见嵌入式学习——驱动开发——作业1

作业要求&#xff1a; 通过字符设备驱动分步注册过程实现LED驱动的编写&#xff0c;编写应用程序测试&#xff0c;发布到CSDN 作业答案&#xff1a; 运行效果&#xff1a; 驱动代码&#xff1a; #include <linux/init.h> #include <linux/module.h> #include &l…

【《高性能 MySQL》摘录】第 3 章 服务器性能剖析

文章目录 3.1 性能优化简介3.1.1 通过性能剖析进行优化3.1.2 理解性能剖析 3.2 对应用程序进行性能剖析3.3 剖析 MySQL 查询3.3.1 剖析服务器负载捕获 MySQL 的查询到日志文件中分析查询日志 3.3.2 剖析单挑查询使用 SHOW PROFILE &#xff08;现已过时&#xff09;使用SHOW ST…

Uiautomator2实现Android自动化测试详解

目录 1、UIautomator2框架原理 2、UIautomator2使用 2.1、安装 2.2、元素定位工具-weditor 2.3、设备连接 2.4、全局配置 2.4.1、通过settings设置 2.4.2、通过属性设置 2.5、APP相关操作 2.5.1、安装应用 2.5.2、启动应用 2.5.3、等待应用启动 2.5.4、结束应用 …

day1 2/18

1> 使用fgets统计给定文件的行数 #include<myhead.h> int main(int argc, const char *argv[]) {if(argc!2){printf("enter error\n");return -1;}FILE*fpNULL;if((fpfopen(argv[1],"r"))NULL){perror("fopen error");return -1;}i…

3D模型素材哪家好?推荐六大优质3D模型资源库!

如今越来越多的设计师在寻找合适的3D模型素材用于设计项目中&#xff0c;帮助自己提高工作效率。然而&#xff0c;市面上的3D模型素材琳琅满目&#xff0c;质量参差不齐。那么&#xff0c;哪家的3D模型素材比较好呢?本文将为你推荐六大优质3D模型资源库&#xff0c;助你轻松找…

《2024巨量引擎日化行业白皮书》丨附下载

✦ ✦✦ ✦✦ ✦✦ ✦ 中国日化行业在2022年短暂承压之后&#xff0c;随着生活恢复常态&#xff0c;迎来新的发展契机&#xff0c;2023年呈回稳向上态势。以抖音为代表的内容电商是行业增长的主要驱动力&#xff0c;内容场和货架场互通互联&#xff0c;促进行业全域化释放潜能…

信息安全风险管理

信息安全风险管理 系统外部可能造成的损害,称为威胁;系统内部可能造成的损害,称为脆弱性。系统风险则是威胁利用脆弱性造成损坏的可能性。 蛋的裂缝可以看作“鸡蛋”系统的脆弱性,而苍蝇可以看作威胁,苍蝇叮有缝的蛋表示威胁利用脆弱性造成了破坏。 风险评估 风险评估就…

OpenAI全新发布文生视频模型:Sora!

OpenAI官网原文链接&#xff1a;https://openai.com/research/video-generation-models-as-world-simulators#fn-20 我们探索视频数据生成模型的大规模训练。具体来说&#xff0c;我们在可变持续时间、分辨率和宽高比的视频和图像上联合训练文本条件扩散模型。我们利用对视频和…

一键安装ROS适用于Ubuntu22/20/18

一键安装ROS适用于Ubuntu22/20/18 1、简介 ROS&#xff08;Robot Operating System&#xff0c;机器人操作系统&#xff09;是一个用于机器人软件开发的框架。它提供了一套工具和库&#xff0c;用于机器人应用程序的开发、测试和部署。ROS是由美国斯坦福大学机器人实验室&…

AlexNet的出现推动深度学习的巨大发展

尽管AlexNet&#xff08;2012&#xff09;的代码只比LeNet&#xff08;1998&#xff09;多出几行&#xff0c;但学术界花了很多年才接受深度学习这一概念&#xff0c;并应用其出色的实验结果。 AlexNet&#xff08;由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton共同设计…

Linux------环境变量

目录 前言 一、环境变量 二、添加PATH环境变量 三、HOME环境变量 四、查看所有环境变量 1.指令获取 2.代码获取 2.1 getenv 2.2main函数的第三个参数 2.3 全局变量environ 五、环境变量存放地点 六、添加自命名环境变量 七、系统环境变量具有全局属性 八、环境变…

CrossOver For Mac v24.0.0 让Mac可以运行Windows程序的工具

CrossOver For Mac v24.0.0 可以在 Mac 上运行成千上万的 Windows 程序。从办公软件、实用工具、游戏到设计软件&#xff0c;您只需在 Mac 的 dock 轻按一下便可运行。您可以 Windows 程序和 Mac 程序之间随意切换&#xff0c;而这一切无需重启、无需虚拟机&#xff0c;也无需购…

前后端分离(delivery-management)部署文档

1. 前端项目:delivery-management 1.1. 前端项目打包 执行命令:npm run build 或者yarn run build,生成dist目录。 构建流程如下图: 1.2. 文件上传 将打包好的前端项目(dist目录),上传到服务器,并拷贝到nginx安装目录html目录下。 执行上传命令(sftp):put -r E:\…

研狗插件解压密码

请搜索淘宝店铺 模型算法专家店

一起玩儿物联网人工智能小车(ESP32)——63 SD和TF卡模块的使用

摘要&#xff1a;本文介绍SD和TF卡模块的使用方法 前面介绍了非易失性存储的使用方法&#xff0c;由于空间和本身只支持键值对的限制&#xff0c;非易失性存储只适用于少量数据的记录。而不适用于各种声音、图片、大量数据等情况的使用。这时候就需要有文件系统或者更大容量存…

卫星热平衡试验与太阳光模拟器

卫星热模型是一种用于研究卫星的热特性的模型。卫星在太空中接收到的太阳辐射会导致其表面温度的变化&#xff0c;而表面温度的变化会影响卫星的热传导和热辐射&#xff0c;进而影响其冷却和热平衡。 卫星热模型一般涉及以下几个方面的内容&#xff1a; 1. 热辐射模型&#xf…

vue-productionSourceMap作用

当其设置为false时(productionSourceMap: false) 当其设置为true时(productionSourceMap: true) 注:1.当设置为true时,打包后每个文件都有一个.map文件,其目的是为了精确定位代码错误 2.当设置为false时,可减少项目打包大小 3.正式环境禁止使用true,因为其可通过反编译.map文件…

医生门诊涉众利益-《软件方法》自测题解析39

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 《软件方法》第6章自测题1 1 [ 单选题 ] 关于用例规约&#xff0c;以下说法正确的是&#xff1a; A) 针对同一个用例&#xff0c;应该为研发团队不同角色准备不同视角的用例规约。…

【7】知识融合

知识融合&#xff08;也称本体对齐、本体匹配、实体对齐&#xff09;&#xff0c;即合并两个知识图谱(本体)&#xff0c;基本的问题都是研究怎样将来自多个来源的关于同一个实体或概念的描述信息融合起来。 需要确认的是&#xff1a; 等价实例&#xff1a;实体的匹配&#xf…

Spring Boot 笔记 024 登录页面

1.1 登录接口 //导入request.js请求工具 import request from /utils/request.js//提供调用注册接口的函数 export const userRegisterService (registerData)>{//借助于UrlSearchParams完成传递const params new URLSearchParams()for(let key in registerData){params.a…