1、计算机操作系统1数据流图的画法及实例数据流图也称为数据流程图 date flow diagram , DFD,是一种便于用户理解和分析系统数据流程的图形工具,他摆脱了系统和具体内容,精确的在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。数据流图的基本组成成分数据流:是由一组固定成分的数据组成,表示数据的流向。值得注意的是,数据流图中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有一个合适的名字,以反映该数据流的含义。加工:加工描述了输入数据流到输出数据之间的变换,也就是输入数据流经过什么处理后变成了输出数据。每个加
2、工都有一个名字和编号。编号能反映该加工位于分层的数据流图的哪个层次和哪张图中,能够看出它是由哪个加工分解出来的子加工。数据存储:数据存储表示暂时存储的数据。每个数据存储都有一个名字。外部实体:外部实体是存在于软件系统之外的人员或组织,他指出数据所需要的发源地或系统所产生的数据的归属地。外部实体 加工 数据流分层数据流图的设计方法 第一步,画子系统的输入输出把整个系统视为一个大的加工,然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到那些外部实体,就可以画出输入输出图。这张图称为顶层图。第二步,画子系统的内部把顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层计算机
3、操作系统2图的输入数据经过若干加工处理后,变成顶层图的输出数据流。这张图称为 0 层图。从一个加工画出一张数据流图的过程就是对加工的分解。可以用下述方法来确定加工:在数据流的组成或值发生变化的地方应该画出一个加工,这个加工的功能就是实现这一变化,也可以根据系统的功能决定加工。确定数据流的方法用户把若干数据当作一个单位来处理(这些数据一起到达、一起处理)时,可以把这些数据看成一个数据流。关于数据存储对于一些以后某个时间要使用的数据,可以组织成为一个数据存储来表示。第三步,画加工的内部把每个加工看作一个小系统,把加工的输入输出数据流看成小系统的输入输出流。于是可以象画 0 层图一样画出每个小系统的
4、加工的 DFD 图。第四步,画子加工的分解图 对第三步分解出来的 DFD 图中的每个加工,重复第三步的分解过程,直到图中尚未分解的加工都是足够简单的(即不可再分解) 。至此,得到了一套分层数据流图。第五步,对数据流图和加工编号对于一个软件系统,其数据流图可能有许多层,每一层又有许多张图。为了区分不同的加工和不同的 DFD 子图,应该对每张图进行编号,以便于管理。 顶层图只有一张,图中的加工也只有一个,所以不必为其编号。 0 层图只有一张,图中的加工号分别是 0.1、0.2、,或者 1, 2 。 子图就是父图中被分解的加工号。 子图中的加工号是由图号、圆点和序号组成,如:1.12,1.3 等等。
5、应该注意的问题:1. 应适当的为数据流、加工、数据存储以及外部实体命名,名字应该反映该成分的实际含义,避免使用空洞的名字。计算机操作系统32. 画数据流图,不是画控制流。3. 一个加工的输出数据流,不应与输入数据流同名,及时他们的组成完全相同。4. 允许一个加工有多条数据流流向另一个加工,也允许一个加工有两条相同的输出数据流流向不同的加工。5. 保持父图与子图的平衡。也就是说,父图中的某加工的输入输出流必须与他的子图的输入输出数据流在数量上和名字上相同。值得注意的是,如果父图中的一个输入(输出)数据流对应于子图中的几个输入(输出)数据流,而子图中组成这些数据流的数据项的全体正好是父图中的这一个
6、数据流,那么他们仍然算是平衡的。6. 在自顶向下的分解过程中,若一个数据存储首次出现时,只与一个加工有关系,那么这个数据存储应作为这个加工的内部文件而不必画出。7. 保持数据守恒,也就是,一个加工的所有输出数据流中的数据必须能从该加工的输出流中直接获得,或者通过该加工能产生的数据。8. 每个加工必须既有输入数据流,又有输出数据流。9. 在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但是在某张子图中,可能只有读没有写,或者只有写没有读。特别注意上面的几点,都是考试的目标。近两年考试的内容都集中到2、5、6、8 的几点上。例题:2004 年 11 月下午题阅读下列说明和数据流图
7、,回答问题 1 至问题 3,将解答填入答题纸的对应栏目中。说明 某图书管理系统的主要功能是图书管理的信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件。系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书,以及图书注销。1. 购入新书时要为该书编制入库单。入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件的库存总量(表示到目前为止,购入此种图书的数量) 。2. 读者借书时须填写借书单(不知道哪个神经病开发的系统,还要填写借书单的) 。计算机操作系统4借书内容包括读者号和所借图书分类目
8、录号。系统首先检查该读者号是否有效,若无效 ,则拒绝借书,若有效,则进一步检查该读者已借图书是否达到最大限制数,是则拒绝借书,否这允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件。3. 读者还书时需要填写还书单(他妈的,什么年头还要填写还书单?) 。系统根据读者号,从借书文件中读出与该图书相关的借阅纪录,标明还书日期,再写回到结束文件中。若图书逾期,则处以相应的罚款。4. 注销图书时,须填写注销单,并修改图书目录文件占有的库存总量。系统的信息查询功能主要包括读者信息查询和图书信息查询。其中读者信息查询可得到读者的基本信息及读者的借阅图书的情况;图书信息查询可得到图书的基本情况
9、和图书的借出情况,图书管理系统的顶层图如下图所示:图书管理系统的第 0 层 DFD 图如下图,其中,加工 2 的细化图如下图。问题 1:数据流图有两条数据流是错误的,请指出这两条数据流的起点和终点。问题 2:数据流图中 2.1、2.2 缺少三条数据流,指出这三条数据流的起点和终点。问题 3:根据系统功能和数据流图填充下列数据字典条目中的(1)和(2)查询请求语法信息=查询读者请求信息 查询图书请求信息读者发问=读者号 +姓名+所在单位+借书情况管理工作请求单= (1) 入库单= (2) 。计算机操作系统5解题思路这是分层数据流的问题,解决这类问题的关键一点就是细心。把题目看清楚,不要丢掉任何条
10、件。解题 1:解题的关键是利用分层数据流图的数据流平衡原则(即父图和子图的一致性) 。因为题中已说明有两条数据流是错误地,只需要把第 0 层图和顶层图对比即可。首先检查 0 层图和顶层图的的说有输出和输出的数据流图是否一致。发现顶层图上有一个“非法请求信息”的数据流,在 0 层数据流中没有,但在 0 层图中有一条“非法查询请求信息”和一条“非法管理工作请求信息” ,这是不是问题的所在呢?在前面所述的“数据流图的设计方法”注意事项中的第 5 条“保持父图与子图的平衡”计算机操作系统6是这样说的:“父图中的某加工的输入输出流必须与他的子图的输入输出数据流在数量上和名字上相同。值得注意的是,如果父图
11、中的一个输入(输出)数据流对应于子图中的几个输入(输出)数据流,而子图中组成这些数据流的数据项的全体正好是父图中的这一个数据流,那么他们仍然算是平衡的” 。我们可以看出来“非法查询请求信息”和 “非法管理工作请求信息”加起来,应该就是“非法请求信息”这条数据流,出考题的人真他妈的变态,这样子绕弯弯来让我们来踩,实际考试的时候,估计很多人都上了他们的套了。既然这样,就只能去找别的地方了。从 1 号图中,输入的数据流有“当前日期” 、 “管理工作请求单” ,输出的信息流有“非法管理请求单” 、 “罚款单” ,加工是“处理管理请求” ,根据这些输出信息,我们可以知道,是要罚款的,要罚款,肯定就是逾期
12、还书,根据题意,罚款需要的数据流有“读者的借书记录” , “还书单” ,其中“管理工作请求单”估计就是“借书单” ,好像少了“借书记录”这样的东西。但是,每一条数据流都没有发现问题。从 2 号图中,加工处理是“处理查询请求” ,输出的数据流有“图书情况” 、 “读者情况” 、 “非法查询请求信息” 、存储到“读者文件” ,输入的数据流是“查询请求信息” ,根据经验,我们可以看出,仅仅根据“查询请求信息”这条数据流怎么可以得到“读者信息”和“图书情况”这两条数据流呢?好像也去缺少了一些信息;再看看,数据流中有一个数据存储“读者文件” ,数据流的方向是存储到“读者文件”中。我们知道,从“读者文件”
13、读出数据,我们可以查到读者信息,但是向“读者文件”中写入数据,是不是很矛盾?从这一点我们完全可以肯定,这条数据流的方向是错误的,应该是从“读者文件”读出读者信息,然后输出“读者情况”数据流。从 3 号图中,输入的数据流有“读者信息” 、从“读者文件”中读“读者数据” ,输出的信息却没有,数据加工是“登记读者信息” ,根据数据加工的名字,我们可以知道,是把读者的数据“登记处理” ,然后存储到读者的数据文件中,但这里不但没有存储数据,而且还有从读者文件中读出读者数据的数据流,显然与常理有悖。在者,对于一个数据加工,只有输入数据,却没有输出数据,这也是数据流图设计的大忌。因此,第二个错误就在这里。由
14、此可以看出,出考题的人都很变态,总是设计一点圈套来让我们上钩,大家一定要小心,仔细读图,仔细理解题目。第一题的答案是:计算机操作系统7“2 处理查询请求”到“读者文件”的数据流是错误的,从“读者文件”到“3 登记读者信息”的数据流是错误的。问题 2 读 2.1 的数据加工可以看出,输出的数据流是“读者情况”数据,根据题意,我们知道“读者情况”的内容包含的数据有“读者的基本情况”和“读者的借阅情况” ,读者的基本情况,我们只需查询“读者文件”即可,借阅情况,我们需要查询“借书文件”即可,但图中只有读“读者文件”的数据流,但没有读“借书文件”的数据流,看来,这就是缺少的数据流中的一条。读 2.1
15、的数据加工可以看出,我们是要做图书数据的查询操作,根据题意,查询图书情况的内容包括图书的基本情况和借出情况,图书的基本情况需要“基本目录情况”文件查出,而借阅情况需要查询“借书文件” ,根据图中的数据流,缺少的正是这两条数据流,因此,所有的答案都已经出来了。答案:缺少的数据流有: 从“借书文件”到“2.1 读者查询”的数据流从“借书文件”到“2.2 图书信息查询”的数据流从“图书目录文件”到“2.2 图书信息查询”的数据流解题 3从题意中可以了解到,图书管理系统的功能分为“购入新书、读者借书、读者还书、图书注销”四个方面的业务。分别需要填写入库单、借书单、还书单、注销单,所以,根据问题的语法格
16、式,管理工作请求单的答案应该是:“入库单|借书单| 还书单| 注销单。根据题意,入库单的内容包含:分类目录号、书名、作者、价格、数量、日期,按照问题所给的格式写出入库单的格式为入库单=分类目录号 +书名 +作者+价格+ 数量+日期根据这一题目的分析,大家应该知道,数据流图不是很难,所有的问题,只要细心理解题目,很容易就找到答案。特别要注意的是,中国的出考题的人很变态,他们总是喜欢设计一点圈套来让你向里面跳。计算机操作系统82005 年 5 月数据库系统工程师的数据流考题阅读一下说明和数据流图,回答问题 1 至问题 3说明学生住宿服务系统帮助学生在就学的城市找到所需的住房,系统对出租的房屋信息、
17、房主信息、需要租房的信息、以及学生和房主的会面信息进行管理和维护。房主信息包括:姓名、地址、电话号码、以及系统分配的唯一标识 ID 和密码;房屋信息包括:房屋地址、类型(单间/双间) 、适合住宿的人数、房租、房主ID、以及现在是否可以出租(例如,由于装修原因,需要等到装修结束后才可以租出)。每当房屋信息发生变化,房主需要通知系统,系统将更改房屋文件的以便方便学生能够获得准确地可租房屋信息。房主向系统加入可租用的房屋信息时,需要交纳一定的费用,由系统自动给出费用信息。房主可随时更新房屋的各种属性。学生可通过系统查询现有的可租用的房屋,但必须先在系统中注册。学生信息包括:姓名、现住址、电话号码、出
18、生日期、性别以及系统分配的唯一标识 ID 和密码。若学生希望租用某房屋,则需要发出租房请求,请求中包含房屋的详细信息,系统将安排学生与房主会面的时间和地点,并将会面信息通知学生和房主。会面信息包括:会面时间、会面地点,以及会面双方的基本信息,系统将纪录会面信息。学生住宿服务系统的顶层图如下图,学生住宿的第 0 层图 DFD 如下图,其中,加工 3 的细化数据流图也给出。回答:问题 1:数据流顶层图中缺少了一条数据流(在 0 层图中也没有给出) ,请给出此数据流的起点和终点,并采用说明中的词汇给出数据流名。计算机操作系统9数据流图 0 层图中缺少了“查询房屋”加工相关的数据流,请指出数据流的起点和终点。问题 2:“安排会面”加工除需要写入会面文件外,还需要访问那些文件?问题 3:请补齐下列数据字典条目:登陆信息=学生 ID+密码注册信息= 。怎么样,这道题应该会做吧,试一试,若有问题,咱们再作点评。