最近备战软考,复习到数据流图,学习成果与大家分享。
数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。(百科)
谈谈我的一点理解
有时候我们要开发或者理解一个系统,总体的系统结构我们弄清楚了,但是细节上需要再深入,而数据流图“自顶向下,由外到内,逐步细化”的思想就凸显出很重要的作用,它可以作为我们系统分析的指导方法。
数据流图分析关注的重点是数据,将面向控制的信息作为数据进行处理,包括了系统的所有数据,能准确的抽象系统数据的流向和处理过程.概括的描述当数据在系统流程中流动和处理的移动变换过程;数据流图分层进行分析,对顶层图的分析可以发现是否有输入信息或需要输出的信息被遗漏,容易及早发现系统各部分的逻辑错误,也容易修正.每一层都明确强调“需要什么”,“干了什么”“给出什么”;
这样逐层分解下去,系统被严密的展开,系统的框架就展现出来了.采用数据流图进行分析,可以提高分析的可见性和可控性,更容易理解软件要完成什么功能,数据来源于哪里,结果要输出到哪里等等,清晰明了。
下面我们来看看数据流图的组成,设计原则和应用
基本图形符号

加工(数据处理):输入数据在此进行变换产生输出数据。加工对象为:数据结构或数据内容。
数据流:箭头表示数据流向,作为加工之间传输数据的命名通道(数据流有名字),或数据存储文件与加工之间的非命名通道(数据流没名字,但其连接的加工和文件的名字,和流向可以确定其含义)。
同一个数据流图上不能有同名的数据流,如果两个以上的数据流指向一个加工,或是从一个加工中输出两个以上的数据流,这些数据流往往存在一定关系,如图:

数据存储文件:流向数据存储的数据流可以理解为写入文件或查询文件,从数据存储流出的数据流可以理解为从文件读数据或得到查询结果。
数据源点或终点:是系统外部环境中的实体,也称外部实体。它们作为系统与系统外部环境的接口界面,在实际问题中可能是人员、组织、其他硬件系统等。一般出现在顶层数据流图中。
数据流图的设计原则

下面我们通过一些示例来说明这些设计原则
示例1:

上图违反了父图与子图的平衡原则。
因为父图中有提货单输出流,但子图中没有与这条输出流相关的输出流。
我们看两者的输入流,父图的输入流是订货单,而子图的输入流是数量,账号,客户,这是平衡的,因为子图的三条输入流是对父图输入流的分解,同样子图中的加工4.1,4.2,4.3也可以看成是对父图加工4的分解,这符合自顶向下,逐层细化原则
示例2:
下面是一张有错的数据流图。

(1)根据数据守恒原则,外部实体和外部实体,外部实体和数据存储之间不能存在数据流,,存储与存储之间也不应该有数据流,数据流必须跟加工有关,没有加工数据流不可能流来流去的。

(2)对于加工,输入是A,输出还是A,也违反了数据守恒原则,输入与输出一样,加工没有作用。

(3)对于加工,只有输入没有输出,违反了数据守恒原则。比如,人不可能只吃饭,不大小便。嘿嘿

(4)对于加工,只有输出没有输入,违反了数据守恒原则。比如,人不可能一直大小便,但不吃饭。嘿嘿
示例3:

加工细节隐蔽原则说的是:在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节,例如上面的父图中,并没有画出加工1的内部细节
再进行对加工1进行细化的时候,我们就应该画出它的内部细节,如第二个图。
简化加工之间的关系:加工间的数据流越少,各个加工就越相对独立,耦合越低,所以应尽量减少加工间输入/输出数据流的数目。
均匀分解:不要出现,一些加工分解了10层,而另一些加工分解了3层这样的情况
忽略枝节:暂时不要考虑一些例外情况,出错处理等枝节性问题。
表现的是输入流而不是控制流:不要和程序流程图混淆,数据流图,强调从数据加工的角度来描述系统,自然是数据流。
这些原则中,最重要的当属:保持父图与子图平衡,保持数据平衡,加工细节隐蔽
一般从这三个原则来考查一张数据流图是否正确。
数据字典
数据字典的就是对数据流图中出现的所有被命名的图形元素在数据字典中作为一个词条加以定义,使每个图形元素的名称都有一个确切的解释。
在对数据流和数据文件词条进行描述时可能包含一定的数据结构,对于数据结构的描述常用的是定义是。如下表

在数据字典中有4种类型的条目:
1、数据项条目:通常为数据项的值类型,允许的取值范围等
2、数据流条目:给出某个数据流的定义,列出该数据流的各组成数据项。
3、文件条目:对文件的定义,列出期组成的数据项
4、加工条目:对每个不能再分解的加工做说明,包括加工的激发条件,加工的逻辑,优先级等等。
示例:
图书管理系统中
查询请求信息=[查询读者请求信息|查询图书请求信息]
读者情况=读者号+姓名+所在单位+{借书情况}
根据上面的定义表,我们很容易看出这些条目的意思。
下面我们来看一个数据流图的综合应用问题,这样有助于我们理解数据流图。
需求:



根据以上信息提出的几个问题!希望对这几个问题的解析,能加深大家对数据流图的理解。

对于问题1:
我们前面提到过,
可以通过数据流图那三个重要设计原则(保持父图与子图平衡,保持数据平衡,加工细节隐蔽)来考查一张数据流图是否正确。
1、查看是否平衡,即子图中的输入流合输出流和父图是否对应;
2、查看数据守恒,处理查询请求没有输入,登记读者信息没有输出.
正确应该如红色箭头画法。

对于问题2:
1、首先我们看到对于加工2,父图和子图是平衡的,所以,本题只能是2.1和2.2或者他们和文件之间缺少数据流。
只得根据需求描述去分析到底缺失哪些数据流。
根据在原需求中的

我们可以很轻松的判断出缺少哪些数据流,如下图红色箭头

对于问题3:这是一个数据字典的应用问题。

根据以上我们截取需求中的信息,,注意红色部分,再结合我们开始介绍的数据字典定义符号的使用,即可很轻松解决这个问题。
管理工作请求单=[购入新书|读者借书|读者还书|图书注销]
入库单=分类目录号+书名+作者+价格+数量+购书日期。
数据流图就到这了,我是懂了,不知道你懂了没?
分享到:
相关推荐
数据流图基础知识点总结 数据流图(DFD:Data Flow Diagram)是一种抽象的信息流程图,用于描述系统中信息的运动过程。它不涉及硬件、软件、数据结构与文件组织,仅关心系统的逻辑功能。数据流图使用四种基本符号:...
数据流图的优势在于图形描述简明、清晰,不涉及到技术细节,所描述的内容是面向用户的,因此即使完全不懂信息技术的用户单位的人员也容易理解。数据流图是系统分析人员与用户之间进行交流的有效手段,也是系统设计...
随着汽车电子技术的飞速发展,汽车数据流分析已经成为诊断和维修现代汽车不可或缺的技能之一。本文旨在详细解析如何读懂数据流,助您成为汽车维修行业的佼佼者。 首先,我们要理解什么是汽车数据流。数据流是各种...
后台返回的数据流,一堆看不懂的乱码: 接下来要处理这堆乱码,因为用到的地方多,所以在util.js文件里封装了一个公共方法并抛出: 虽然vue里有封装好的请求接口的方法,但这里要单独用axios,所以先在util.js里...
【作品名称】:基于c#+Mysql实现的房屋租赁管理系统【数据库课程设计】(含报告+源码+ER 图+数据流图) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训...
随着时间推移,企业在面对快速变化的市场需求时发现,孤立的数据孤岛导致信息同步困难,不同部门间的数据标准不一致等问题愈发明显。这促使企业寻求一种能够整合并统一管理数据的方法,从而更好地支持业务决策和运营...
在瀑布流的应用中,数据源通常来自数据库,比如图片的URL、标题、描述等信息。这个文件可能是用来搭建测试环境,预填充一些数据以便演示瀑布流的效果。 3. **Public**:这个目录通常用于存放前端资源,如CSS样式表...
《不懂大数据也能看明白电商数据分析方法论》是针对非大数据专业人士设计的一份教育资源,旨在让读者深入理解电商行业的数据解析技巧。这份资料的核心是通过简洁易懂的方式介绍数据分析的关键概念和应用,帮助读者...
基于Java实现的利用卡尔曼滤波算法对数据流进行平滑化处理,适用于过滤各种传感器输入中的噪波源码+文档说明+界面演示 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是...
通过阅读《教你如何看懂时序图》这份PDF,你可以深入理解时序图的构造、解析方法,以及如何将其应用于实际项目中。同时,配合《怎样读芯片数据手册.pdf》,你将能够更好地掌握硬件系统的交互逻辑,为你的编程和系统...
在电子技术领域,电路图是表达电子电路工作原理和结构的图形语言,是学习和设计电子电路不可或缺的基础工具。对于初学者来说,掌握如何看懂电路图是开启电子世界大门的钥匙。本文将引导读者了解电路图的基本构成以及...
《你不懂JS:类型与文法》是系列书籍《你不懂JS》的一部分,该系列旨在深入探讨JavaScript这门语言的核心基础知识,帮助开发者更好地理解和掌握JavaScript,而非仅限于表面的使用或者依赖一些流行框架和库。...
不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...
《让不懂编程的人爱上iPhone开发》是一套专为编程初学者设计的iOS 7开发教程。这个系列教程旨在帮助那些对编程和iPhone应用开发感兴趣,但又缺乏相关基础的读者快速入门。通过深入浅出的讲解,使得学习过程充满乐趣...
在设计电路时,选择合适的功率MOS器件是实现高效率、高稳定性的关键,而掌握如何彻底读懂MOS的数据手册,无疑成为了每个电子工程师的必备技能。本文旨在深入解析如何彻底读懂MOS的数据手册,以Philips半导体的功率...
数据处理框架涵盖ETL流程,包括批处理、流处理、数据清洗、数据交换和查询等功能。任务调度模块是其核心,协调和监控数据处理任务,确保高效运行。 5. 数据治理框架 数据治理涉及数据管理、目录、质量、安全和...
2. 数据处理框架:这一部分主要负责数据的加工处理工作,包括批量处理、实时流处理、AI分析、数据清洗、数据交换和查询等任务。其目的是将原始数据转换为可用的业务数据。 3. 数据存储框架:数据中台需要高效地存储...