1、认识 软件设计师下午试题随着模块化试题的发展,软件设计师的下午试题题型基本固定,重点突出,便于考生有针对性地复习。 1、分值分布:软件设计师下午试题总分 75 分,每题 15 分,要求考生应答五道试题。其中前四题为必做题,占据 60 分,后面几题由考生根据自己的情况选做一题,合计 75 分。2、考试题目数量:根据考试大纲要求,要求考生掌握 C 语言和 C+、Java 中的一种面向对象的程序语言。往年必做题有四道题,选做题有三道题,分别为 C 语言题、C+ 题和 Java 题,整个卷面共七道题。由于考试中许多考生在选做题中只选 C 语言题应答,对不会或不熟 C+和 Java 语言的考生来说,一样
2、可以应考,这与软件设计师考试大纲的要求是相背离的。因此,2010 年 5 月软件设计师下午试题中,必做题数量不变,选做题里去掉了C 语言题,即选做题为二道题,整个卷面共六道题。这样,考生在选做题中就只能在 C+和 Java 中选择一题来作答,达到了考试大纲所要求的掌握一门面向对象的程序设计语言目的。3、考点总结:从历届考题来看,考点如下表所示题型 题号 考点1 数据流图2 数据库题3 UML必做题4 C 语言程序填空5 C 语言程序填空(2010 年 5 月取消)6 C+程序填空选做题7 Java 程序填空第一题:数据流图数据流图简称 DFD 图。是结构化分析方法(SA)中用于表示系统逻辑模型
3、的一种工具。要求考生掌握 DFD 图的基本成分:数据流、加工、数据存储及外部实体。希赛教育研发中心编写的软件设计师考试考点分析与真题详解中结合考试真题对数据流图进行了的详细解析。考试方式:根据题目描述判断 DFD 图中的实体,找出错误的数据流,补充缺失的数据流。第二题:数据库题根据软件设计师考试大纲要求,考生须掌握给定一个实际的应用问题如何设计 E-R 模型,如何将 E-R 模型转换成关系模式,确定联系类型、主键、候选键、外键,判断关系模式规范化的程度;掌握给定一个实际的应用问题如何用 SQL 进行数据定义(创建表、视图)、完整性定义及权限定义,掌握常用数据库的访问方法。希赛教育的模拟试题就不
4、同的考点进行了收集。考试方式:根据题目描述完成补充图形、填空、简答等形式。第三题:UMLUML 统一建模语言是面向对象软件的 标准化建模语言。它是一种富有表达力的语言,可以描述开发所需要的各种视图,然后以此为基础装配系统。在软件设计师下午试题中,要求考生掌握 UML 的基本概念与作用以及 UML 提供的 9种图的表示与应用:类图、对象图、用例图、序列图、协作图、状态图、活动图、构件图和部署图。希赛教育针对不同的 UML 图编制了多套的模拟试题供学员学习。考试方式:根据题目描述判断 UML 图中各元素所代表的事物,元素间的关系。第四题和第五题: C 语言 程序填空C 语言是考试大纲要求考生必须掌
5、握的程序语言,要求考生用 C 语言实现常用的数据结构与算法及应用程序。第五题与第六、第七题一起构成选答题。2010 年 5 月的考试取消了 C 语言选答题。希赛教育的模拟试题中提供各种常用数据结构(线性表、栈、队列、串、数组、矩阵、数和图)以及常用算法(排序、查找、字符串、递归算法)练习和分析。考试方式:根据题目描述程序的功能完成程序填空。第六题与第七题:C+ 程序填空和 Java 程序填空根据软件设计师考试大纲要求,考生须掌握一种面向对象的程序设计语言:C+或者Java,第六题与第七题由考生从中选择一道来应答,两题都答则选题号小的为有效答题。通常这两道题的题目背景是相同的,只是要求考生分别用
6、 C+和 Java 语言来实现常见的设计模式及应用程序。希赛教育研发中心组编的软件设计师考试冲刺指南中有设计模式的相关描述。考试方式:根据题目描述完成程序填空。软件设计师考试的下午题的第一道题,数据库系统工程师考试的下午题的第一道题都是数据流图题,而能够将这道题全部做对的考生是非常少的。解题的方法与技巧1.首先要懂得数据流图设计要略。有时为了增加数据流图的清晰性,防止数据流的箭头线太长,减少交叉绘制数据流条数,一般在一张图上可以重复同名的数据源点、终点与数据存储文件。如某个外部实体既是数据源点又是数据汇点,可以在数据流图的不同的地方重复绘制。在绘制时应该注意以下要点:(1)自外向内,自顶向下,
7、逐层细化,完善求精。(2)保持父图与子图的平衡。为了表达较为复杂问题的数据处理过程,用一个数据流图往往不够。一般按问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。根据层次关系一般将数据流图分为顶层数据流图、中间数据流图和底层数据流图,除顶层图外,其余分层数据流图从 0 开始编号。对任何一层数据流图来说,称它的上层数据流图为父图,在它的下一层的数据流图为子图。顶层数据流图只含有一个加工,表示整个系统;输入数据流和输出数据流为系统的输入数据和输出数据,表明了系统的范围,以及与外部环境的数据交换关系。底层数据流图是指其加工不能再分解的数据流图,其加工称为“原子加工”。中间数据流图是对
8、父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图。中间层次的多少,一般视系统的复杂程度而定。任何一个数据流子图必须与它上一层父图的某个加工对应,二者的输入数据流和输出数据流必须保持一致,此即父图与子图的平衡。父图与子图的平衡是数据流图中的重要性质,保证了数据流图的一致性,便于分析人员阅读和理解。在父图与子图平衡中,数据流的数目和名称可以完全相同;也可以在数目上不相等,但是可以借助数据字典中数据流描述,确定父图中的数据流是由子图中几个数据流合并而成的,也即子图是对父图中加工和数据流同时进行分解,因此也属于父图与子图的平衡,如图 1 所示。图 1 父图与子图的平衡(3)保持数
9、据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。每个加工必须有输入数据流和输出数据流,反映此加工的数据来源和加工变换结果。一个加工的输出数据流只由它的输入数据流确定。数据流必须经过加工,即必须进入加工或从加工中流出。(4)加工细节隐蔽。根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节。当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口时,那么这些数据存储为局部数据存储。为了强调局部数据存储的隐蔽性,一般情况下,局部数据存储只有作为某些加工的数据接口或某
10、个特定加工的输入和输出时,才画出来。即按照自顶向下的分析方法,某数据存储首次出现时只与一个加工有关,那么这个数据存储应该作为与之关联加工的局部数据存储,在该层数据流子图中不必画出,而在该加工的子图中画出,除非该加工为原子加工。(5)简化加工间的关系。在数据流图中,加工间的数据流越少,各个加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。(6)均匀分解。应该使一个数据流中的各个加工分解层次大致相同。(7)适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字。(8)忽略枝节。应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性的问题。(9)表现
11、的是数据流而不是控制流。数据流图与传统的程序流程图不同,数据流图是从数据的角度来描述一个系统的,而流程图则是从对数据加工的角度来描述系统的。数据流图中的箭头是数据流,而流程图中的箭头则是控制流,它表达的是程序执行的次序。数据流图适合于宏观地分析一个组织的业务概况,而程序流程图只适合于描述系统中某个加工的执行细节。每个加工必须既有输入数据流,又有输出数据流;在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读、没有写,或者只有写、没有读。2.解题的方法。(1) 数据平衡原则。数据平衡原则分为两个方面: 在分层数据流图中,父图和子图要平衡,也就是说,父图中
12、某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。数据平衡的另一个方面是说:每个加工必须即有输入数据流又有输出数据流,而且一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。(2) 要特别注意的几个细节问题。 除了流向数据存储(文件)或从数据存储流出的数据流不必命名外,其它每个数据流都必须有一个合适的名字。流向文件的数据流,表示写入数据,流出文件的数据流表示读文件。在整套数据流图中,每个文件必须既有读的数据流又有写的数据流,但在某一张子图中可能只有读没有写,或者只有写没有读。在逐步精化的过程中,若一个文件首次出现时只与一个加工
13、有关,既该文件是个加工的内部文件,那么该文件在当层图中不必画出,可在该加工的细化图中画出。3.解题的技巧。(1)阅读题干的技巧。快速的阅读第一遍,基本了解题目所涉及到的知识点或者事务,打记实体对象和存储文件,甚至可以将数据流也标记一下;这一步重点落在问题上,一般问题不难,但一定要看清问题。带着问题来看第二遍,边看边解决。(2)要有整体的概念,不能因一个点符合就断定是它,尤其是数据对象。(3)注意解题的速度,一般在 20 分钟以内为最好。(4)解题的过程中,每一条数据流都能够在说明中找到相应的语句。(5)数据流名称要写对,每错一个字扣 0.5 分;流向也要写对。(6)做好以后,复查一遍;不要边做
14、边怀疑、边修改,那样会担误时间,且错误更多。三.例题讲解例 1:【软件设计师(数据库系统工程师)2007 年 11 月真题】试题一(共 15 分)阅读以下说明和图,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。【说明】某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:1. 每门课程都有 3 到 6 个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。3. 在记录学生成绩之前,系统需要验证这些成
15、绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。4. 对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提
16、交考试委员会审查。6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。现采用结构化方法对这个系统进行分析与设计,得到如图 1-1 所示的顶层数据流图和图 1-2 所示的 0 层数据流图。图 1-2 0 层数据流图【问题 1】(4 分)使用说明中的词语,给出图 1-1 中的外部实体 E1E4 的名称。【问题 2】(3 分)使用
17、说明中的词语,给出图 1-2 中的数据存储 D1D5 的名称。【问题 3】(6 分)数据流图 1-2 缺少了三条数据流,根据说明及数据流图 1-1 提供的信息,分别指出这三条数据流的起点和终点。起 点 终 点【问题 4】(2 分)数据流图是在系统分析与总体设计阶段宏观地描述系统功能需求的重要图形化工具,程序流程图也是软件开发过程中比较常用的图形化工具。简要说明程序流程图的适用场合与作用。试题分析:本题考查的是 DFD 的应用,属于比较传统的题目,考查点也与往年类似。问题 1 考查的是顶层 DFD。顶层 DFD 通常用来确定系统边界,其中只包含一个唯一的加工(即待开发的系统)、外部实体及外部实体
18、与系统之间的输入输出数据流。题目要求填充的正是外部实体。从顶层 DFD 可以看出,数据流是完整的。所以只要根据数据流从题目说明的上下文中,找出 E1E4 所对应的外部实体,分别为考试委员会、主讲教师、学生和教务处。0 层 DFD 中缺少的东西比较多,要求填写数据存储及缺失的数据流。先来确定数据存储。首先,从说明中找出可能是数据存储的元素来。很明显,学生信息文件、课程信息文件、课程单元信息文件、课程成绩文件和无效成绩文件应该是数据存储。下面的工作就是对号入座。从 0 层 DFD 上可以看到,加工 3 到 D5 有一条数据流;而加工 3 所完成的操作是“记录无效成绩”。从说明中可知,“对于无效成绩
19、,系统会单独将其保存在无效成绩文件中”,所以 D5 应该是数据存储“无效成绩文件”;类似地,从加工 2 气己录有效成绩”到 D4 有一条数据流,这说明 D4 就是数据存储“课程成绩文件”。D1 输出两条数据流,分别流向加工 1“验证学生信息”和加工4“生成成绩列表”。由说明“根据学生信息文件来确认该学生是否选修这门课程”可知,验证学生信息时,需要根据学生信息文件来进行;而生成成绩列表及成绩单时,学生信息都是必要的。所以 D1 应该是“学生信息文件”。这样的话,D2 和 D3 就应该分别与“课程单元信息文件”和“课程信息文件”对应。由于 D2 和 D3 都只与加工 1 有关,所以它们的对应关系就
20、是随意的了。这样 5 个数据存储就填充完整了。下面要丰 L 充缺失的数据流。首先,从说明的第 5 条可知,生成成绩列表时,是需要从课程成绩文件中获取信息的,“课程成绩文件”实际上就是图中的 D4。而 D4和加工 4 之间并没有数据流,因此这就是一条缺失的数据流。另外,前面在确定 D1 所对应的数据存储时提到过,生成成绩单时是需要学生信息的。所以,加工 5 应该从 D1 中获取相应的信息,这样就找到了第二条数据流。第三条数据流也比较容易找。说明的第 7 条告诉我们,只有“对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生”。也就是说,从成绩列表到成绩单的生成是有条件的。这意味着
21、,在加工 4 和加工 5 之间应该存在一条数据流,这就是第 3 条数据流。问题 4 实际上是为了考查大家对 DFD 的进一步理解,明确 DFD 在软件开发中用于描述功能需求。例 2:【软件设计师 2004 年 5 月真题】试题一(15 分)阅读下列说明和数据流图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。说明某图书馆管理系统的主要功能是图书管理和信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件。系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书以及图书注销。1. 购入新书时需要为该书编制入库单。入库单内容包括图书分类
22、目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件中的库存总量(表示到目前为止,购入此种图书的数量)。2. 读者借书时需填写借书单。借书单内容包括读者号和所借图书分类目录号。系统首先检查该读者号是否有效,若无效,则拒绝借书;若有效,则进一步检查该读者已借图书是否超过最大限制数(假设每位读者能同时借阅的书不超过 5 本),若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。3. 读者还书时需填写还书单。系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写回到借书文件中,若图书逾期,则处以相应的罚款。4. 注销图书时,需填写注销单并修改图书目录文件中的库存总量。系统的信息查询功能主要包括读者信息查询和图书信息查询。其中读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。