大家好,又见面了,我是你们的朋友全栈君。
数据流图(Data Flow Diagram,DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
数据流图的优点:
数据流图有4种基本符号:
初学者在画数据流图时,往往试图在数据流图中表现分支条件或循环,殊不知这样做将造成混乱,画不出正确的数据流图。在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。
注意:
补充:数据流说明
假设一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给订货系统。当某种零件的库存数量少于库存量临界值时就应该再次订货。
数据流图有4种成分:源点和终点、处理、数据存储和数据流。画出上述定货系统的数据流图可采用以下步骤。
注意,并不是所有数据存储和数据流都能直接从问题描述中提取出来。例如,“当某种零件的库存数量少于库存量临界值时就应该再次订货”,这个事实意味着必须在某个地方有零件库存量和库存量临界值这样的数据。因为这些数据元素的存在时间看来应该比单个事务的存在时间长,所以认为有一个数据存储保存库存清单数据是合理的。
下表列出了上面分析的结果,其中加星号标记的是在问题描述中隐含的成分。
一旦把数据流图的4种成分分离出来后,就可以着手画数据流图了。但是要注意,数据流图是系统的逻辑模型,而任何计算机系统实质上都是信息处理系统,也就是说计算机系统本质上都是把输入数据变换成输出数据。因此,任何系统的基本模型都由若干个数据源点/终点以及一个处理组成,这个处理就代表了系统对数据加工变换的基本功能。
对于上述的定货系统可以画出下图所示的顶层数据流图(突出表明了数据的源点和终点)。
从顶层数据流图这样非常高的抽象层次开始画数据流图是一个好办法。在这个高层次的数据流图上是否列出了所有给定的数据源点 / 终点是一目了然的,因此它是很有价值的沟通工具。
顶层数据流图太抽象了,从这张图上所能了解到的信息非常有限。下一步应该把基本系统模型细化,描绘系统的主要功能。
由于 “产生报表” 和 “处理事务” 是该系统必须完成的两个主要功能,它们将代替图顶层数据流图中的“订货系统”。此外,细化后的数据流图中还增加了两个数据存储:处理事务需要“库存清单”数据;产生报表和处理事务在不同时间,因此需要存储“定货信息”。除了2.1节(2.1 数据流图有4种成分分析)的表中列出的两个数据流之外还有另外两个数据流,它们与数据存储相同。这是因为从一个数据存储中取出来的或放进去的数据通常和原来存储的数据相同,也就是说,数据存储和数据流只不过是同样数据的两种不同形式(事务 <–> 库存清单,订货信息 <–> 订货报表)。
给处理和数据存储都加了编号,这样做的目的是便于引用和追踪。
接下来应该对功能级数据流图中描绘的系统主要功能进一步细化。考虑通过系统的逻辑数据流,当发生一个事务时必须首先接收它;随后按照事务的内容修改库存清单;最后如果更新后的库存量少于库存量临界值时,则应该再次定货,也就是需要处理定货信息。因此,把“处理事务”这个功能分解为下述3个步骤:“接收事务”、“更新库存清单”和“处理订货”,这在逻辑上是合理的。
我们为什么不进一步分解“产生报表”这个功能呢?因为订货报表中需要的数据在存储的订货信息中全都有,产生报表只不过是按一定顺序排列这些信息,再按一定格式打印出来。然而这些考虑纯属具体实现的细节,不应该在数据流图中表现。同样道理,对“接收事务”或“更新库存清单”等功能也没有必要进一步细化。总之,当进一步分解将涉及如何具体地实现一个功能时,就不应该再分解了。
在对数据流图分层细化时必须保持信息连续性,即当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。
还应该注意在数据流图中对处理进行编号的方法。处理1.1,1.2和1.3是更高层次的数据流图中处理1的组成元素。如果处理2被进一步分解,它的组成元素的编号将是2.1, 2.2……如果把处理1.1进一步分解,则将得到编号为1.1.1,1.1.2……的处理,以此类推。
数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性。 因此,给这些成分起名字时应该仔细推敲。
数据源点/终点并不需要在开发目标系统的过程中设计和实现,它并不属于数据流图的核心内容,只不过是目标系统的外围环境部分(可能是人员、计算机外部设备或传感器装置)。通常,为数据源点 / 终点命名时采用它们在问题域中习惯使用的名字(如“采购员”、“仓库管理员”等)。
数据流(或数据存储)命名:
处理命名:
教务管理是一项需求周密计划、严谨安排的工作,要依据教师、学生信息进行合理安排。
教务管理子系统的需求描述:
图书馆管理子系统的需求描述:
*
表示数据流之间是“与”关系(同时存在)+
表示“或”关系注意:这里的圆形可以被圆角矩形框替换,都表示变换数据的处理。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149012.html原文链接:https://javaforall.cn