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

news2024/11/28 14:53:49

作为一个程序员,不仅要具备高水平的程序编码能力,还要是熟练掌握软件设计的方法和技术,具有一定的软件设计能力,一般包括软件分析设计图(常见的有数据流图,程序流程图,系统流程图,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.可以用于程序测试和调试,帮助测试人员快速定位和修复程序中的错误和问题。

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

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

相关文章

Python与SQLAlchemy:轻松管理数据库

在这篇文章中,我们将学习如何使用Python和SQLAlchemy库来轻松管理数据库。SQLAlchemy是一个强大的ORM(对象关系映射)库,它允许您通过Python代码与关系型数据库进行交互,而无需编写SQL语句。 一、安装SQLAlchemy 首先…

Android studio 中英文转换

一、确认版本号 需要确认android studio软件版本,根据版本下载对应的中文汉化包,如果安装的汉化包版本不对应,可能会导致安装失败。 面板选择Help→About,在弹出框中查看当前版本号,我们只需要关心版本号前面的222即可…

智慧图书管理系统架构设计与实现

随着数字化时代的到来,智慧图书管理系统在图书馆和机构中扮演着重要的角色。一个优秀的图书管理系统不仅需要满足基本的借阅管理需求,还需要具备高效的性能、良好的扩展性和稳定的安全性。本文将讨论智慧图书管理系统的架构设计与实现,以满足…

在 Python 中,通过列表字典创建 DataFrame 时,若字典的 key 的顺序不一样以及部分字典缺失某些键,pandas 将如何处理?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ pandas 是一个快速、强大、灵活且易于使用的开源数据分析和处理工具,它是建立在 Python 编程语言之上的。 pandas 官方文档地址:https://pandas.pydata.org/ 在 Python 中&…

第九篇:node静态文件服务(中间件)

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 📘 引言: 当今互联网时代&am…

IDEA实现序列化时如何自动生成serialVersionUID

实现步骤:1.安装GenerateSerialVersionUID插件 2.点击idea左上角File -> Settings -> Editor -> Inspections -> 搜索 Serialization issues ,找到 Serializable class without ‘serialVersionUID’ ->打上勾,再点击Apply-&…

《剑指 Offer》专项突破版 - 面试题 49、50 和 51 : 详解与二叉树中路径相关的面试题(C++ 实现)

目录 面试题 49 : 从根节点到叶节点的路径数字之和 面试题 50 : 向下的路径节点值之和 面试题 51 : 节点值之和最大的路径 面试题 49 : 从根节点到叶节点的路径数字之和 题目: 在一棵二叉树中所有节点都在 0~9 的范围之内,从根节点到叶节点的路径表…

5G车载路由器引领无人驾驶车联网应用

随着无人驾驶技术的不断发展,车联网正逐渐成为实现智能交通的重要组成部分。5G车载路由器将在车联网的应用中起到至关重要的作用,它能够满足无人驾驶应用的低时延、高速率和实时控制等需求,进一步推动无人驾驶车联网技术。 5G路由器具备低时延…

ACK One:构建混合云同城容灾系统

作者:蔡靖 对于当前业务运行在 IDC 内的 Kubernetes 集群中,希望通过云计算为云下业务提供同城灾备的高可用冗余能力,可利用阿里云分布式云容器平台 ACK One [ 1] 来提供统一得流量、应用和集群管理,实现业务流量的多集群路由和灾…

Eclipse - Switch Workspace

Eclipse - Switch Workspace References Switch Workspace References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

解决Ubuntu下网络适配器桥接模式下ping网址不通的情况

问题反应:ping不通网址 打开虚拟机中的设置,更改网络适配器为NAT模式 确定保存更改之后,退出输入如下命令。 命令1: sudo /etc/network/inferfaces 命令2: sudo /etc/init.d/network/ restart

Poller模块与Channel模块整合

目录 概要 tcp_cli.cc tcp_srv.cc server.hpp 测试结果 gdb调试 概要 本主要是将以下模块进行整合测试 Buffer缓冲区类实现(模块一)-CSDN博客 Socket套接字类实现(模块二)-CSDN博客 Channel事件管理类实现(模块三)-CSDN博客 Poller描述符监控类实现(模块四)-CSDN博客 经…

guitar pro五线谱转六线谱 guitar pro怎么去掉五线谱 简谱是什么 新手学吉他

在音乐领域,五线谱和六线谱是两种常见的乐谱表示方法。五线谱通常用于表示管弦乐、钢琴和其他键盘类乐器的音乐,而六线谱则常用于表示吉他等弦乐器的音乐。Guitar Pro软件作为一款专业的吉他编奏软件,六线谱的音乐更适合在软件中编奏。因此&a…

揭秘:一行代码搞定.Net API高并发的烦恼

高并发下的接口请求重复提交问题 在.Net开发中,我们经常遇到用户疯狂点击同一按钮,或者服务响应慢时重复发送请求,导致数据重复添加或混乱。这不仅浪费资源,更会得到错误的业务结果。如何高效解决这一普遍问题呢? 常规…

AI算法初识之分类汇总

一、背景 AI算法的分类方式多种多样,可以根据不同的学习机制、功能用途以及模型结构进行划分。以下是一些主要的分类方式及相应的代表性算法: 1. 按照学习类型 - **监督学习**: - 线性回归(Linear Regression) …

轨道交通信号增强与覆盖解决方案——经济高效,灵活应用于各类轨道交通场景!

方案背景 我国是世界上轨道交通里程最长的国家,轨道交通也为我们的日常出行带来极大的便利。伴随着无线通信技术的快速发展将我们带入电子时代,出行的过程中对无线通信的依赖程度越来越高,无论是车站还是车内都需要强大、高质量的解决方案以…

【NextJS】nextjs+qiankun遇ReferenceError: window is not defined

实验环境: qiankun: ^2.10.16next: 14.1.0react: ^18.2.0 根据官方手册快速上手教程(链接) 构建主程序实验代码: qiankun部分: // file: micro-base/plugins/qiankun/index.tsimport type { AppMetadata } from qiankun; import { registe…

vue+springboot登录与注册功能的实现

①首先写一个登录页面 <template> <div style"background-color: #42b983;display: flex;align-items: center;justify-content: center;height: 100vh"><div style"background-color: white;display: flex;width: 50%;height: 50%;overflow: h…

Camtasia Studio2024中文汉化版下载安装激活图文教程

Camtasia studio 2024是一款功能强大的屏幕录制和视频编辑软件。它可以帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;并可以将录制的视频进行编辑和制作成高质量的视频教程、演示文稿、培训课程等。 Camtasia studio 2024具有直观的界面和易于使用的工具&#xff0c;包…

软件实例分享,操作简单美发店会员登记记账本vip会员管理系统软件教程

软件实例分享&#xff0c;操作简单美发店会员登记记账本vip会员管理系统软件教程 一、前言 以下软件程序教程以 佳易王美发店会员管理系统软件V16为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、新会员可以直接使用手.机号&#xff0c;不需…