数据流图(数据库)
时间:2022-11-22 02:30:01 | 来源:信息时代
时间:2022-11-22 02:30:01 来源:信息时代
数据流图 : 从“数据”和“对数据的加工”两方面表达数据处理系统工作过程的一种图形表示方法。它以图形的方式描绘数据在系统中流动和处理的过程,具有直观、易于被用户和软件人员双方理解的特点。由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是结构化分析(structured analysis,SA)方法中用于表示系统逻辑模型的一种工具。图1是一个飞机机票预订系统的数据流图,它反映的功能是:旅行社把预订机票的旅客信息(姓名、年龄、单位、身份证号码、旅行时间、目的地等)输入机票预订系统。系统为旅客安排航班,打印出取票通知单(附有应交的账款)。旅客在飞机起飞的前一天凭取票通知单交款取票,系统检验无误,输出机票给旅客。
图1 飞机机票预定系统数据流图
1. 数据流图的四种基本图形符号
→: 箭头,表示数据流。数据流是数据在系统内传播的路径,由一组成分固定的数据组成,如订票单由旅客姓名、年龄、单位、身份证号、日期、目的地等数据项组成。由于数据流是流动中的数据,所以必须有流向,除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。
○:圆或椭圆,表示数据加工(又称为数据处理)。对数据流进行某些操作或变换。每个加工也要有名字,通常是动词短语,简明地描述完成什么加工。在分层的数据流图中,加工还应编号。
=: 双杠,表示数据存储(又称为文件)。数据存储是指暂时或长期保存的数据,它可以是数据库文件或某种形式的数据组织。也就是说,这些数据可以被保存在计算机中,也可保存在计算机外,甚至保存在纸面上。
□:方框,表示数据的源点或终点(又称外部项)。数据源点或终点是被描述的系统外部环境中的实体(包括人员、组织或其他软件系统),统称外部实体。一般只出现在数据流图的顶层图。
数据流图的基本要点是描绘“做什么”而不考虑“怎样做”。数据存储和数据流都是数据,仅仅所处的状态不同,数据存储是静止状态的数据,数据流是处于运动中的数据。处理并不一定是一个程序,一个处理框可以代表一系列程序、单个程序或者程序的一个模块,甚至人工处理的过程。有时数据的源点和终点相同,如果只用一个符号代表数据的源点和终点,则至少将有两个箭头和这个符号相连,一个进一个出。这可能导致其中一条箭头相当长,从而降低了数据流图的清晰度。遇到这种情况时,可再重复画一个同样的符号(正方形或立方体)表示数据的终点。有时数据存储也需要重复,以增加数据流图的清晰程度。如果代表同一个事物的同样符号在图中出现在n个地方,则在这个符号的一个角上画n-1条短斜线做标记。
2.绘制数据流图的主要原则
(1) 明确系统界面。
(2) 自顶向下逐层扩展: 关联图、顶层图、第一层、第二层。
(3)数据流图只反映数据流向、数据加工和逻辑意义上的数据存储,不反映数据处理的技术过程。
3.绘制数据流图的主要步骤
(1)首先画系统的输入输出,即先画顶层数据流图。顶层流图只包含一个加工,用以表示被开发的系统,然后考虑该系统有哪些输入、输出数据流。顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。图2为飞机机票预订系统的顶层数据流图。
图2 飞机机票预定系统顶层图
(2)画系统内部,即画下层数据流图。不再分解的加工称为基本加工。一般将层号从0开始编号,采用自顶向下,由外向内的原则。画0层数据流图(见图3)时,把顶层流图的系统分解为若干子系统,并确定每个子系统间的数据接口和活动关系。例如,在上面的机票预订系统按功能可分成两部分,一部分为旅行社预订机票; 另一部分为旅客取票,两部分通过机票文件的数据存储联系起来。
图3 飞机机票预定系统0层图
4.绘制数据流图的注意事项
(1)命名:不论数据流、数据存储还是加工,合适的命名使人们易于理解其含义。
(2) 画数据流而不是控制流: 数据流反映系统“做什么”,不反映“如何做”,因此箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。
(3)要保持各层成分的完整性和一致性:下层数据流图不会出现不属于上层图中的数据流子项的新数据流。但可出现不属于上层图的数据存储环节子项的新的数据存储环节。
(4)每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。
(5)编号:如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号。
(6)父图与子图的平衡:子图的输入、输出数据流同父图相应加工的输入、输出数据流必须一致,此即父图与子图的平衡,如图4中的子图对应于父图中的加工节点“3.1”。
父图
子图
图4 父图与子图
(7)局部数据存储:当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。
(8)提高数据流图的易懂性: 注意分解的合理性,即被分解出来的各个子加工的独立性。应该把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性。