数据流图——从软考真题中学画数据流图DFD

题目

建议将题目复制到word后与此文分屏查看。后面需要多次查看题目。

某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,
其主要功能描述如下:
1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程
	的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确
	认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课
	程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的
	单元相对应,如果是,那么这些成绩是有效的,否则无效。
4. 对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存
	在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,
	系统不会处理这些成绩。
5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成
	通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的
	成绩列表,用来提交考试委员会审查。
6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。
	主讲教师须将核对之后的成绩报告返还系统。
7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审
	查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成
	绩,系统将会生成最终的成绩单,并通知每个选课学生。
现采用结构化方法对这个系统进行分析与设计,得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。  


  
  图1-1
  顶层数据流图
  

  

 
  图1-2
  0层数据流图
  

【问题1】(4分)
  使用说明中的词语,给出图1-1中的外部实体E1~E4的名称。
【问题2】(3分)
  使用说明中的词语,给出图1-2中的数据存储D1~D5的名称。
【问题3】(6分)
  数据流图1-2缺少了三条数据流,根据说明及数据流图1-1提供的信息,
  分别指出这三条数据流的起点和终点。
【问题4】(2分)
  数据流图是在系统分析与总体设计阶段宏观地描述系统功能需求的重要图形化工具,程序流
  程图也是软件开发过程中比较常用的图形化工具。简要说明程序流程图的适用场合与作用。

画顶层图

我们先不看给出的图,凭借题目给出的信息自己画图,先是顶层图,画顶层图步骤有3步:
1.将软件系统看作加工,
2.确定外部实体,
3.画出数据流
找到题目中的软件系统,题目第一句就可以看到“成绩管理系统”

浏览题目一遍,不难找出所有外部实体

根据各个外部实体与软件系统进行的交互操作,可以得到数据流

与题目给出的图对比
在这里插入图片描述
【问题1】的答案就已经出来了,很明显E1为考试委员会,E2为主讲教师,E3为学生,E4为教务处。

画0层图

接下来是画0层图,0层图作画步骤:
1.细分顶层图的加工
2.数据流连接加工
再次从头开始看全文,看到第3句,
在记录学生成绩之前,系统需要验证这些成绩是否有效
这里之前是被我们忽略掉的,在画顶层图时,这里算作总的成绩管理系统的加工,现在需要细分成绩管理系统了,我们就需要把此系统的功能提取出来——命名为“验证成绩”的加工。

继续往后看,到第4句
对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。
这里我们又看到系统的两个功能,“保存课程成绩文件”与“保存无效成绩文件”,也就是两个加工。

继续看到第5句
若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表
前面的“系统会发送课程完成通知给教务处”,明显是数据流而不算作是功能,后面的“请求系统生成相应的成绩列表”才体现出功能,我们命此加工为“生成成绩列表”。

直到最后的一句
“系统将会生成最终的成绩单,并通知每个选课学生。”
可见又是一个加工,我们命名为“生成成绩单”

下面要做是补全数据流
所有这些加工实质就是整体的软件系统的加工,所以可以先把顶层图的数据流照搬过来

这里注意每条数据流要对应好加工,图中省略了外部实体,这没关系。
然后加上数据存储文件

画到这一步并没有完,有部分数据流并没表示出来,比如保存课程成绩文件与保存无效成绩文件的数据输入还有生成成绩单的数据输入流,但没关系,解第二题足够了,若把所有数据流加上那第三题就迎刃而解了。在这里插入图片描述
【问题2】答案
D1就是学生信息文件夹
D2为课程单元信息文件
D3为课程信息文件
D4为课程成绩文件(图中我命名为了 有效成绩文件)
D5为无效成绩文件

第一次画就是上图那样不能掌握布局所以很乱,第二次画时根据这张图规划好布局就可以画得更工整了
【问题3】
第一条数据流:由说明的第5条可知,生成成绩列表时,是需要从课程成绩文件中获取信息的,“课程成绩文件”是图中的D4。而D4和加工4之间并没有数据流,因此这就是一条缺失的数据流。
  第二条数据流:生成成绩单时是需要学生信息的。且不符合数据输入输出平衡(文末有相关知识),加工5应该从D1中获取相应的信息,这样就找到了第二条数据流。
  第三条数据流:说明的第7句告诉我们,只有“对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生”。也就是说,从成绩列表到成绩单的生成是有条件的。这意味着,在加工4和加工5之间应该存在一条数据流,这就是第3条数据流。
所以完整的0层图应如下图所示
在这里插入图片描述

解题技巧

(1)适当地为数据流、加工、数据存储、外部实体命名,名字应反映该成分的实际含义, 避免空洞的名字。

(2)画数据流而不要画控制流。

(3)每条数据流的输入或者输出是加工。

(4)—个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。

(5)允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工。

(6)保持父图与子图平衡。
为了表达较为复杂问题的数据处理过程,用一个数据流图往往不够。一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从0开始编号。对任何一层数据流图来说,称它的上层数据流图为父图,在它的下一层的数据流图为子图。也就是说,父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。值得注意的是,如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。

(7)在自顶向下的分解过程中,若一个数据存储首次出现时只与一个加工有关,那么这个数据存储应作为这个加工的内部文件而不必画出。

(8)保持数据守恒。
也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。每个加工必须有输入数据流和输出数据流,反映此加工的数据来源和加工变换结果。一个加工的输出数据流只由它的输入数据流确定。数据流必须经过加工,即必须进入加工或从加工中流出。每个加工必须既有输入数据流,又有输出数据流。

(9)在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某 一张子图中可能只有读没有写,或者只有写没有读。

posted on 2019-03-28 16:28  107国道道长  阅读(1988)  评论(0编辑  收藏  举报

导航