第一节 数据流程图
在系统分析阶段,采用一套图形工具——数据流程图DFD(data flow diagram,简称数据流图)来描述现行的或是即将要开发的新系统的模型。
实际上,DFD有两个作用:一是用来描述系统的模型,包括系统的逻辑模型和物理模型;二是作为管理人员与系统开发人员之间进行相互交流的沟通桥梁。
数据流图,顾名思义,就是用来表示数据在信息系统中如何流动的,同时也可表明系统所能完成的功能。但是,DFD并不表明系统的功能是如何实现的。数据流图可以用来说明系统能够完成的功能。
数据流图用4个基本符号来画,如图8 1所示。它们分别是数据处理、数据流、数据存储、外部实体。现在,有几个不同版本的数据流图符号。一种是被称为Gane&Sarson的符号集,还有一种也是比较流行的Yourdong符号集。
一、数据流图的作图规则
实际上,在用图8 1所示的符号画DFD时需要遵循一定的作图规则。
1.数据处理
一个加工处理符号用圆角矩形或是一个圆泡表示,图形中的文字表示的是加工处理的名称。一个加工处理要接收各种输入的数据,加工以后产出具有不同内容和形式的输出数据。例如,计算工资的处理要用两个输入(工资率和工作的小时数)来产生一个输出(应得工资数额)。处理可以很简单,也可以很复杂。
图8 1 数据流程图的基本符号
一般情况下,往往把数据流图中的处理认为是“黑箱”。处理的细节一般不在数据流图中表示,而在处理描述中表示。本章的后面将要介绍处理描述。例如,可画一个处理符号,它在数据流图中的名称是“累计付款”。然而,数据流图并不显示实际使用的数据、详细的输出、在“累计付款”中将要采取的具体步骤等细节,可以到处理名称为“累计付款”的描述中去了解这些细节。
2.数据流
数据流的符号就是一个箭头,在上面标注数据流的大致内容。数据流是数据从信息系统的一部分转移到另一部分的流通路径。在一个数据流图中的数据流表示的是一系列的数据。例如,数据流可以表示一个单个的数据项目(学生编号),也可以表示一组数据(一个班级,包含学生的姓名、学号)。数据流图不显示数据流的结构和详细内容。这些元素在数据字典中定义,本章中将会讨论数据字典。
由于任何一个处理都会改变数据的形式或内容,因此至少应有一个数据流流入处理符号,至少要有一个数据流流出处理符号。一个处理符号可以有许多输出数据流和许多输入数据流。一个处理符号亦可以连接任意其他符号,如另一个处理符号、数据存储符号或外部实体符号。要注意:一个数据流至少有一端必须是处理符号。如图8 2给出了处理和数据流正确组合的实例。
图8 2 数据流和处理正确组合的实例
图8 3给出了几种错误的数据流和处理之间的连接错误。图(a)所示错误是仅有输出,没有输入,这种处理被称为“自发生成”,一般情况下应予以避免;图(b)所示错误是仅有输入,没有输出,这种处理被称为“黑洞”,读者可考虑:为什么这样表述是错误的?图(c)所示的“计算成绩”处理虽然有输入和输出,但是输入的数据很明显是无法得到输出信息的,这种处理被称为“灰洞”。在数据流图中出现“自发生成”、“黑洞”、“灰洞”是不符合逻辑的。
图8 3 数据流和处理错误组合的实例
3.数据存储
在数据流图中,用一个右端开口而左端封闭的矩形代表数据存储。数据存储符号用来表示系统中处理的结果或是处理中要保存的数据信息。例如,数据存储可以存放档案信息、历史信息等。
数据存储的介质目前并不考虑,因为在系统的分析阶段只需要关心信息系统的逻辑需求,而不是物理需求。数据存储的时间长短也不重要,重要的是存储数据的流向。数据存储的详细内容并不在数据流图中表示,它的结构和数据项在数据字典中定义。
数据存储必须由一个数据流连接到一个处理。在任何情况下,数据存储至少要有一个输入数据流和一个输出数据流。请读者考虑:这是为什么?图8 4给出了数据存储的典型应用例子。
图8 4 数据存储为正确的实例
有时画流程图也会出现错误。在图8 5中给出了错误的例子。在该图中,两个数据存储错误地相连。请读者考虑:这是为什么?另外的例子是数据存储缺少输出数据流或是输入数据流。
图8 5 数据存储为不正确的实例
4.外部实体
外部实体可以是人、部门、外部机构,或其他信息系统。外部实体负责向系统提供数据,也可以从系统获取数据信息。在数据流图中,用矩形代表外部实体,外部实体的名字就放在矩形的内部。
外部实体表示了信息系统的边界,即信息系统如何与外部世界进行数据信息的交流。例如,订购货物的客户是一个外部实体,因为客户向采购处理系统提供数据。又譬如,提供病例数据的病人、接受家庭财产税单的房屋主人、从本公司的采购系统中接收数据的应付账款的处理系统等也是外部实体。
为系统提供数据的外部实体称为数据源,从系统中接受数据的外部实体称为数据终点。另外,外部实体既可以是数据源,也可以同时是数据终点,即两者兼有,如图8 6所示。
图8 6 数据源
外部实体必须通过一个数据流和一个处理连接在一起,如果外部实体与外部实体有数据流,或者外部实体与数据存储之间有数据流都是不正确的。
二、数据流图的分解
1.顶层图
为一个信息系统画数据流图的第一步是画顶层图。顶层图是表明信息系统的范围和边界的数据流图。画顶层图时,把代表整个信息系统的处理符号画在中央。然后,在四周画出与信息系统相关的各个外部实体,并用数据流符号正确地连接实体和放在中间的处理符号。在顶层图中,没必要标明任何的数据存储,因为数据存储是处于信息系统的内部。
通过仔细地检查信息系统的需求,识别所有的外部数据源和数据终点、数据流内容就可以确定外部实体;然后为外部实体、数据流命名;再确定数据流的方向。
图8 7是一个学生“成绩系统”的顶层图。画图时,把“成绩系统”放在图的中央;通过调查分析,可以知道与成绩系统有关系的,即向“成绩系统”提供数据及从该系统中得到处理信息的外部实体有“学生”、“教师”、“学生注册系统”等几个,然后把这3个外部实体放在处理的四周。在中央处理和外部实体的信息交流中,涉及6个不同的数据流。“学生注册系统”外部实体通过“上课名单”数据流提供数据,并且通过“期末成绩”数据流接收数据;“学生”外部实体通过“考试试卷”数据流提供数据,并通过“考试成绩”数据流接收数据;“教师”外部实体通过“评分标准”数据流提供数据,并通过“成绩单”数据流接收数据。
图8 7 “成绩系统”顶层图
图8 8给出了“订购系统”的顶层图。这是用Gane &Sarson符号集画的顶层图。看来“订购系统”顶层图比“成绩系统”顶层图复杂一些,因为它多了两个外部实体和3个数据流。但该图并不难理解。一个系统比另一个系统更复杂的判断依据是系统有更多的组成部分、内部的处理、外部实体和数据存储、数据流等几个方面。
在画顶层图时要将系统所涉及的所有外部实体罗列出来。顶层图中的处理名应该是信息系统的名称。例如,“成绩系统”、“订购系统”等。系统的名称用作处理的名称是因为顶层图只表明信息系统和它的边界。在低层的数据流图中应该用一
图8 8 “订购系统”顶层图
个动词和一个描述性的名词,例如,“更新库存”、“计算加班费”、“产生报表”。
应在任意一套数据流图中使用唯一的名称。例如图8 8中使用唯一的外部实体名称“客户”,则无论什么时候看见了外部实体“客户”,都是指同一个外部实体。同样,这种命名约定也同样适用于数据存储。
在数据流图中,数据流箭头不能交叉。在有许多个处理的低层图中,处理符号不能太多。如果太多,那么数据流图可能相当复杂,这时应该重新分析系统。达到这一要求的另一个方法是重复画同一个外部实体、数据存储。当在一张图中重复一个符号时,应该用一个特殊记号(例如,星号或斜杠),表明它在这张图中是被重复的。
2.零层图及图的分解
顶层图提供了一个信息系统的最一般的视图。它向系统开发人员提供的是一个信息系统的逻辑概念模型。而零层图则是对顶层图进行了细化表述,因为在零层图中显示了系统内部的主要处理、数据流和数据存储,而且零层图一般会重复顶层图中的相同的外部实体和数据流。
在零层图中对每个处理符号要使用唯一的编号。可用处理编号来指代数据流图,此图包含该处理的下一层的更详细的处理细节。
图8 9显示了“成绩系统”的顶层图和零层图的关系。注意,3个外部实体(“学生注册系统”、“学生”、“教师”)和6个数据流(“期末成绩”、“班级花名册”、“考试试卷”、“考试成绩”、“评分标准”、“成绩单”)出现在两张图中。另外,顶层图中的处理圆泡在零层图中被扩展了,以显示更为详细的细节:4个处理、1个数据存储、5个新的数据流。同时,1表示数据存储“建立成绩册”。
图8 9 “建立成绩册”处理
零层图中的每一个处理都有一个编号:“建立成绩册”是1,“期末评分”是2,“批改考试卷”是3,“建立成绩单”是4。这些编号十分重要,因为它们标识了一系列的数据流图。但是要注意:处理的编号并不表示处理的次序,只表示有数据需要通过该处理。如果处理必须按照顺序来进行,可在其他文档(如系统流程图)表示。对于图8 9中的“建立成绩册”处理,如果有更详细的细节,可以画图1,因为1是这个处理的编号。
在图8 9中,“期末成绩”数据流是一个分叉数据,它从“期末评分”处理中流出,既流进“学生注册系统”这一外部实体中,又流入“建立成绩册”这个数据存储。当一个数据流流经两个或更多的不同的地方时,可以用分叉数据流来表示,而不必用两条数据流线来表示。但是,如果数据流入并且流出同一个符号,应该使用几个独立的数据流,而不应在一个数据流的两端都加箭头。例如,用两个数据流“考试试卷”、“考试成绩”表示流入和流出“批改考试卷”处理的数据。
因为零层图是顶层图中处理详情扩充的版本,所以零层图又称之为顶层图的分解。有时把顶层图说成是零层图的父处理,零层图称为顶层图的子图。零层图也可称为总览图。
如果需要表示某个处理的细节时,需要给它们分层次并进行平衡。分层次是指画出一系列逐渐详细的数据流图;平衡是指保持整套数据流图的一致性,即包括该处理所有的输入输出数据流、数据定义以及过程描述。
分层的方法是先把信息系统显示为一个单一的处理,然后显示更详细的细节,直到所有的处理都成为单一功能,此时整套数据流图被描述成分层。分层又称为扩展、分解。因为信息系统模型是用一系列自上而下的分层数据流图来描述的,所以越是低层的数据流图对系统的描述越详细。
在分层过程中,零层图代表一个信息系统的总览图。“成绩系统”由顶层图和零层图表示,它只有一层数据流图。如果零层图能够清晰地表示系统的处理功能,则对图的分解就可以到此为止。但对大一些的信息系统(例如,“制造系统”)来说,可能就需要更多层的数据流图来表示。
不是所有的处理都能被扩展成同样多的层次,但尽量要做到平衡。如果开发
图8 10 图的分解与平衡
出一套数据流图,其中一个处理有两层,另一个处理却有7层,还有的处理可能有更多层,出现这种不均匀的情况,可能需要考虑重画信息系统的逻辑模型。事实上,建立几套数据流图是常见的情况。大多数系统分析员认为开发一套好的数据流图需要尝试几种设计,直到设计出最好的数据流图。
在一个已经平衡的数据流图中,父处理的输入和输出数据流与子图的纯输入和输出相同,这样使上、下层图的数据流达到平衡,也就是说父处理的输入和输出数据流在子图中被保留。图的分解与平衡的概念如图8 10所示,请注意上下层中处理圆泡的编号、上下层图之间的输入和输出数据流的个数及方向。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。