最近,为了准备软测试,在数据流图中复习,和大家共享学习成果。
数据流图(Data Flow Diagram )简称DFD,从数据传输和加工的角度,用图形表示系统的逻辑功能、系统内部数据的逻辑流程、逻辑转换过程,是结构化系统分析方法的主要表达工具和软件模型(百科)
我稍微谈谈我的理解
我们有时开发系统,有时理解系统。 整体系统结构已经明确,但在细节上还需要更深入。 而数据流图中“自上而下、由外而内、逐步细化”的思想强调了其重要作用,它可以作为我们系统分析的指导方法。
数据流图的分析关注数据,将面向控制的信息作为数据进行处理,包括系统的所有数据,能够准确抽象出系统数据流和处理过程。 对数据流图进行分层分析,分析顶层图,可以发现输入信息和需要输出的信息是否缺失,便于早期发现系统各部分的逻辑错误,便于纠正.每一层都有“需要什么”、“做了什么”、“给出了什么”
这样按层次进行分解的话,系统将严密地展开,系统的框架将被显示出来。通过使用数据流图进行分析,分析的可视性和控制性将得到提高,软件起到什么样的功能,数据来自哪里,结果将被输出到哪里
看看数据流图的构成、设计原则和应用
基本图形符号
加工(数据处理)输入数据在此进行转换并生成输出数据。 加工对象是数据结构或者数据内容。
数据流:箭头表示数据流,用于在加工之间传输数据的命名通道(数据流中有名称)或数据存储文件与加工之间的未命名通道)数据流没有名称,但连接的加工和加工
同一数据流图不能包含同名的数据流。 在许多情况下,如果两个或多个数据流指向一个加工,或者从一个加工输出两个或多个数据流,则这些数据流之间存在以下关系:
数据存储文件:流向数据存储的数据流被理解为写入文件或查询文件,而从数据存储流出的数据流被理解为从文件读取数据或获得查询结果。
数据源的点或终点:系统外部环境中的实体,也称为外部实体。 它们作为系统与系统外部环境的接口,在实际问题中可能是人员、组织或其他硬件系统等。 一般显示在顶级流程图中。
数据流图的设计原则
通过一些例子说明这些设计原则
示例1 :
上图违反了母图和子图的平衡原则。
因为父图中有提单的输出流,而子图中没有与此输出流关联的输出流。
从两者的输入流程来看,母图的输入流程为订单,子图的输入流程为数量、账号、客户,这是平衡的。 由于子图的3个输入流程是母图的输入流程的分解,所以同样子图的加工4.1、4.2、4.3也可以看作是母图的加工4的分解,这符合自上而下、逐层细分的原则
示例2 :
以下是错误的数据流图。
)根据数据存储原则,外部实体与外部实体、外部实体与数据存储区之间不能存在数据流。存储区和存储区之间也不能存在数据流。 数据流必须与加工有关。 没有加工数据流就不能流过来。
)2)关于加工,输入是a还是输出是a也违反了数据保存的原则,输入和输出一样对加工没有贡献。
)3)关于加工,只有输入没有被输出,违反了数据保存的原则。 例如,人不能只吃饭,不能小便。 黑格
)4)对于加工,只有输出没有输入,违反了数据保存原则。 例如,人不能继续大小便,但不吃饭。 黑格
示例3 :
加工细节隐藏的原则是,在绘制母体图时,只需绘制加工与加工的关系,而不需要绘制单个加工内部的细节。 例如,在上面的母图中,没有描绘加工1的内部的细节
细分加工1时,必须如图2所示,画出内部的详细内容。
简化加工之间的关系:加工之间的数据流越少,每个加工相对独立,耦合越低,因此应尽量减少加工之间的输入和输出数据流数量。
请勿均匀分解(请勿分解。 一部分加工分解成10层,另一部分加工分解成3层
忽略枝节:暂时不要想例外情况、错误处理等枝节问题。
表示的是输入流而不是控制流。 请不要和程序的流程图混淆。 数据流图强调从数据加工的角度来描述系统,当然是数据流。
这些原则中最重要的是保持母图和子图的平衡,保持数据的平衡,隐藏加工细节
一般根据这三个原则来调查一张数据流图是否正确。
数据词典
所谓数据词典,就是将数据流图中出现的所有命名图形要素在数据词典中定义为词条,使各图形要素的名称得到恰当的解释。
描述数据流和数据文件的词条时可能包含一定的数据结构,常用于描述数据结构的是定义。 如下表所示
enter">在数据字典中有4种类型的条目:
1、数据项条目:通常为数据项的值类型,允许的取值范围等
2、数据流条目:给出某个数据流的定义,列出该数据流的各组成数据项。
3、文件条目:对文件的定义,列出期组成的数据项
4、加工条目:对每个不能再分解的加工做说明,包括加工的激发条件,加工的逻辑,优先级等等。
示例:
图书管理系统中
查询请求信息=[查询读者请求信息|查询图书请求信息]
读者情况=读者号+姓名+所在单位+{借书情况}
根据上面的定义表,我们很容易看出这些条目的意思。
下面我们来看一个数据流图的综合应用问题,这样有助于我们理解数据流图。
需求:
根据以上信息提出的几个问题!希望对这几个问题的解析,能加深大家对数据流图的理解。
对于问题1:
我们前面提到过,
可以通过数据流图那三个重要设计原则(保持父图与子图平衡,保持数据平衡,加工细节隐蔽)来考查一张数据流图是否正确。
1、查看是否平衡,即子图中的输入流合输出流和父图是否对应;
2、查看数据守恒,处理查询请求没有输入,登记读者信息没有输出.
正确应该如红色箭头画法。
对于问题2:
1、首先我们看到对于加工2,父图和子图是平衡的,所以,本题只能是2.1和2.2或者他们和文件之间缺少数据流。
只得根据需求描述去分析到底缺失哪些数据流。
根据在原需求中的
我们可以很轻松的判断出缺少哪些数据流,如下图红色箭头
对于问题3:这是一个数据字典的应用问题。
根据以上我们截取需求中的信息,,注意红色部分,再结合我们开始介绍的数据字典定义符号的使用,即可很轻松解决这个问题。
管理工作请求单=[购入新书|读者借书|读者还书|图书注销]
入库单=分类目录号+书名+作者+价格+数量+购书日期。
数据流图就到这了,我是懂了,不知道你懂了没?