数据流图——从软考真题中学画数据流图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)在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某 一张子图中可能只有读没有写,或者只有写没有读。
数据流图——从软考真题中学画数据流图DFD的更多相关文章
- 软考下午题详解---uml图
在上篇博客中,小编主要简单的对软考下午题当中的数据流图设计进行了一系列总结,今天我们继续来看软考下午题当中大题部分,uml图的相关知识,在我们学习的过程中,我们也已经接触过,西安交大刘惠老师讲解过um ...
- 从阿里、腾讯的面试真题中总结了这11个Redis高频面试题
前言 现在大家的工作生活基本已经是回归正轨了,最近也是迎来了跳槽面试季,有些人已经拿到了一两个offer了. 这段时间收集了阿里.腾讯.百度.京东.美团.字节跳动等公司的Java面试题,总结了Redi ...
- 软考历程(5)——extend 与 include
软考中涉及扩展与包括关系的辨认,先不说考试的事,扩展与包括关系是UML中非经常见.非常基础的一种关系,然而我发现非常多同学都特别easy混淆,甚至软考真题中都存在题目和答案有待商榷的地方.此篇博客实属 ...
- 软考之路--J2SE,从HelloWorld到传世代码
"Hello World"程序指的是只在计算机屏幕上输出"Hello, World!"(意为"世界,你好!")这行字符串的计算机程序.hel ...
- 软考之信息安全工程师(包含2016-2018历年真题详解+官方指定教程+VIP视频教程)
软考-中级信息安全工程师2016-2018历年考试真题以及详细答案,同时含有信息安全工程师官方指定清华版教程.信息安全工程师高清视频教程.持续更新后续年份的资料.请点赞!!请点赞!!!绝对全部货真价实 ...
- PMP全真模拟题真题試題含答案解析 2019年下半年PMP考試适用 PMP中文文对照试题 【香港台灣地區PMP考試也可用】
PMP全真模拟题真题试题 含答案解析 2019年下半年PMP考试适用 PMP中文文对照试题 [香港台灣地區PMP考試也可用]PMP全真模擬題真題試題 含答案解析 2019年下半年PMP考試适用 PMP ...
- Java面试中笔试题——Java代码真题,这些题会做,笔试完全可拿下!
大家好,我是上海尚学堂Java培训老师,以下这些Java笔试真题是上海尚学堂Java学员在找工作中笔试遇到的真题.现在分享出来,也写了参考答案,供大家学习借鉴.想要更多学习资料和视频请留言联系或者上海 ...
- 【Java面试真题】剑指Offer53.2——0~n-1中缺失的数字(异或、二分两种解法)
[Java实现]剑指Offer53.2--0~n-1中缺失的数字:面试真题,两种思路分享 前面有另一道面试题[Java实现]剑指offer53.1--在排序数组中查找数字(LeetCode34:在排序 ...
- 软考之路--从生活着手,看PV如何操作
PV操作,是软考当中一个很重要的考点,一听到这个名词,顿时赶脚高大上有么有,在软考的历年试题中,也不乏PV操作的身影,老师也对PV操作进行了一次讲课,那时年少,听得稀里糊涂,也不是很理解,在小编的理解 ...
随机推荐
- IntelliJ IDEA 破解Jrebel6.3.0安装
首先下载所必要的两个文件(jrebel3.6.0和cracked文件) 密码:pvsd 注意:如果不是该版本的Jrebel该破解文件可能无效. 步骤1:安装 解压文件得出两个压缩包 在idea中选择 ...
- ubuntu安装后环境配置
首先实现能够连接外网,宿主机和虚拟机能ping通 进行smb的配置,能实现pytty的远程连接. 首先apt-get update 安装ssh apt-get install ssh 打开ssh服务 ...
- ie8兼容性总结
DOCTYPE 首先需要确保你的HTML页面开始部分要有DOCTYPE声明.DOCTYPE告诉浏览器使用什么样的HTML或XHTML规范来解析HTML文档,具体会影响: 对标记.attributes ...
- 简介C#读取XML的方式(转)
在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询. XML作用 ...
- redis bind的坑
启动redis时,发现外网访问不了 检查以下方面 1. ping redis 的ip 2. 检查防火墙端口是否开放3. bind bind bind指的是绑定哪个ip可以访问 bind 要填写你自己r ...
- 深度学习实战-强化学习-九宫格 当前奖励值 = max(及时奖励 + 下一个位置的奖励值 * 奖励衰减)
强化学习使用的是bellmen方程,即当前奖励值 = max(当前位置的及时奖励 + discout_factor * 下一个方向的奖励值) discount_factor表示奖励的衰减因子 使用 ...
- MSSQL 表修复语句
一早发现C盘爆满了,查询了下发现是mssql下面占用了几十G的log以及mdmp文件 一般发现这种文件就是代表着数据库出问题了. 检查数据库,发现某个数据库有问题,(回想起来前天做了一个操作,可能有问 ...
- K8s存储卷、pv和pvc的使用
emptyDIR 临时目录 hostPath :使用主机的路径 网络存储: 传统的设备存储:NAS,SAN 分布式存储:glusterfs,rbd,cephfs 云存储:EBS,Azure,阿里云的 ...
- mysql左连接右连接(查询两张表不同的数据)
有两张表:一张A表he一张B表 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 :right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录: ...
- 自然语言推断(NLI)、文本相似度相关开源项目推荐(Pytorch 实现)
Awesome-Repositories-for-NLI-and-Semantic-Similarity mainly record pytorch implementations for NLI a ...