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

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

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


🐓 什么是数据流图

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

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


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

6ee4499e80504fbc9875dc280cce83a0.png

1.加工

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

2.数据流

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

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

d6bfe5db8ca749c9825f0822af81ef9f.png

3.数据存储文件

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

4.数据源点或终点

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


 🐓 数据流图设计要略

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

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

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

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

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

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

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


🐓 数据字典

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

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

9eb7cea13f7146d4999adaaabb96e244.png

数据字典的四个条目

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

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

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

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


🐓 分层数据流图

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

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

注意事项:

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

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

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

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

a5e501ecdac546579bfa77f59601ac76.png


🐓 系统流程图

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

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

主要作用

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

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

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


🐓 程序流程图

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

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

主要作用

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

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

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

相关文章
|
1月前
|
监控 数据可视化 数据建模
软件工程之设计分析(2)
软件工程之设计分析(2)
38 0
软件工程之设计分析(2)
|
7月前
|
存储 算法 前端开发
【软件设计师-从小白到大牛】上午题基础篇:第五章 结构化开发方法
在结构化分析中,用数据流图描述 数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模。 数据字典有以下4类条目:数据流、数据项、数据存储和基本加工。
100 0
|
2天前
|
架构师 网络协议 程序员
程序员,练就哪些技能才胜任架构师?
程序员,练就哪些技能才胜任架构师?
|
1月前
|
存储 测试技术 持续交付
【软件设计师】一篇文章让你读懂什么是软件工程与系统开发
【软件设计师】一篇文章让你读懂什么是软件工程与系统开发
|
1月前
|
存储 安全 算法
【软件设计师备考 专题 】软件设计的艺术:分析与集成、逐步求精、抽象、信息隐蔽
【软件设计师备考 专题 】软件设计的艺术:分析与集成、逐步求精、抽象、信息隐蔽
71 0
|
1月前
|
存储 安全 数据库
【软件设计师备考 专题 】企业信息资源管理基础知识
【软件设计师备考 专题 】企业信息资源管理基础知识
58 0
|
1月前
|
设计模式 敏捷开发 测试技术
【中级软件设计师】—软件工程、面向对象、数据流图考点总结篇(六)
【中级软件设计师】—软件工程、面向对象、数据流图考点总结篇(六)
|
8月前
|
Cloud Native 程序员 Go
从项目中突显技能:在面试中讲述你的编程故事
从项目中突显技能:在面试中讲述你的编程故事
47 0
|
11月前
|
测试技术 程序员 开发者
【软工视频】第六章软件测试
【软工视频】第六章软件测试
|
图形学
入行3D建模难不难学习?10年建模师:这3种人,一辈子都学不会
下面这些问题是不是也是你心中所惑?还是说经常听到有人这么说? 这个功能在哪里,我不会呀! 为什么我努力学习了这么久,还是没学会? **这个时代,最不缺的就是勤奋的年轻人。** 大家都希望用宝贵的青春奋力一搏,高山仰止。所以我们经常看到许多人,每天像吃饭一样大口吞咽知识,然而却消化不良。
150 0
入行3D建模难不难学习?10年建模师:这3种人,一辈子都学不会