|
|
51CTO旗下网站
|
|
移动端

2017 年上半年软件设计师上午试题分析与解答(4)

《软件设计师历年真题解析》本书针对软件设计师2014—2017年共8次真题进行了试题的分析和解答,帮助考生熟悉试题形式,了解重点、掌握解答问题的方法和技巧等。本节为2017 年上半年软件设计师上午试题分析与解答。

作者:薛大龙来源:电子工业出版社|2018-08-21 12:28

2017 年上半年软件设计师上午试题分析与解答(4)

● 以下关于螺旋模型的叙述中,不正确的是 (29) 。

(29) A.它是风险驱动的,要求开发人员必须具有丰富的风险评估知识和经验

B.它可以降低过多测试或测试不足带来的风险

C.它包含维护周期,因此维护和开发之间没有本质区别

D.它不适用于大型软件开发

试题分析

螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。

参考答案:(29)C

● 以下关于极限编程(XP) 中结对编程的叙述中,不正确的是 (30) 。

(30) A.支持共同代码拥有和共同对系统负责

B.承担了非正式的代码审查过程

C.代码质量更高

D.编码速度更快

试题分析

XP 提倡结对编程,代码所有权归于整个开发队伍,其中的结对编程就是一种对代码的审査过程。XP 主要解决代码质暈低的问题,编码速度不能改变。

参考答案:(30)D

● 以下关于C/S(客户机/服务器)体系结构的优点的叙述中,不正确的是 (31) 。

(31) A.允许合理地划分三层的功能,使之在逻辑上保持相对独立性

B.允许各层灵活地选用平台和软件

C.各层可以选择不同的开发语言进行并行开发

D.系统安装、修改和维护均只在服务器端进行

试题分析

选项D 是B/S 结构的特点。

参考答案:(31)D

● 在设计软件的模块结构时, (32) 不能改进设计质量。

(32) A.尽量减少高扇出结构 B.尽量减少高扇入结构

C.将具有相似功能的模块合并 D.完善模块的功能

试题分析

在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则。

(1)模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。一般来说,一个模块的大小应使其实现代码在1~2 页纸之内,或者实现代码行数在50~200 行之间,这种规模的模块易于实现和维护。

(2)模块的扇入和扇出要合理。一个模块的扇出是指该模块直接调用的下级模块的个数;扇出大表示模块的复杂度高,需要控制和协调过多的下级模块。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。一个模块的扇入是指直接调用该模块的上级模块的个数;扇入大表示模块的复用程度高。设计良好的软件结构通常顶层扇出比较大,中间扇出较少,底层模块则有大扇入。一般来说,系统的平均扇入和扇出系数为3 或4,不应该超过7,否则会增大出错的概率。

(3)深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。

参考答案:(32)D

● 模块A、B 和 C 有相同的程序块,块内的语句之间没有任何联系,现把改程序块取出来,形成新的模块D,则模块D 的内聚类型为 (33) 内聚。以下关于该内聚类型的叙述中,不正确的是 (34) 。

(33) A.巧合 B.逻辑

C.时间 D.过程

(34) A.具有最低的内聚性 B.不易修改和维护

C.不易理解 D.不影响模块间的耦合关系

试题分析

内聚按强度从低到高有以下几种类型。

(1)偶然内聚

如果一个模块的各成分之间毫无关系,则称为偶然内聚,也就是说模块完成一组任务,这些任务之间的关系松散,实际上没有什么联系。

(2)逻辑内聚

几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚,如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系。局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。

(3)时间内聚

如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。

(4)通信内聚

如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。

(5)顺序内聚

如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。

(6)过程内聚

过程内聚是指构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。

(7)信息内聚

模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该模块执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。

(8)功能内聚

模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。

参考答案:(33)A (34)D

● 对下图所示的程序流程图进行语句覆盖测试和路径覆盖测试,至少需要 (35) 个测试用例。采用McCabe 度量法计算其环路复杂度为 (36) 。

(35) A.2 和3 B.2 和4 C.2 和5 D.2 和6

(36) A.1 B.2 C.3 D.4

试题分析

覆盖2 条路径就能达到语句覆盖的要求,故语句覆盖用2 个测试用例即可。路径覆盖需要把程序中的3 条路径均覆盖一遍,需要3 个用例。

整个程序流程图转化为节点图之后,一共11 个节点,13 条边,根据环路复杂度公式有:
13-11+2=4。

参考答案:(35)A (36)D

● 在面向对象方法中,两个及以上的类作为一个类的超类时,称为 (37) ,使用它可能造成子类中存在 (38) 的成员。

(37) A.多重继承 B.多态 C.封装 D.层次继承

(38) A.动态 B.私有 C.公共 D.二义性

试题分析

多重继承是编程语言中的概念,多重继承指的是一个类可以继承另外一个类,而另外一个类又可以继承别的类,比如A 类继承B 类,而A 类又可以继承C 类,这就是多重继承。多重继承可能造成混淆的情况,出现二义性的成员。

参考答案:(37)A (38)D

● 采用面向对象方法进行软件开发,在分析阶段,架构师主要关注系统的 (39) 。

(39) A.技术 B.部署 C.实现 D.行为

试题分析

采用面向对象方法进行软件开发,分析阶段,架构师主要关注系统的行为,即系统应该做什么。

参考答案:(39)D

● 在面向对象方法中,多态指的是 (40) 。

(40) A.客户类无需知道所调用方法的特定子类的实现

B.对象动态地修改类

C.一个对象对应多张数据库表

D.子类只能够覆盖父类中非抽象的方法

试题分析

多态按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。例如不同的足球运动员都在进行射门这个动作时,会产生不同的结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。也就是说客户类在调用方法时,并不需要知道特定子类的实现,都会用统一的方式来调用。

参考答案:(40)A

● 以下UML 图是 (41) ,图中和表示 (42) ,1*:find_books() 和1.1:search()表示 (43) 。

(41) A.序列图 B.状态图 C.通信图 D.活动图

(42) A.类 B.对象 C.流名称 D.消息

(43) A.类 B.对象 C.流名称 D.消息

试题分析

通信图也叫作协作图,描述的是对象和对象之间的关系,即一个类操作的实现。简而言之就是,对象和对象之间的调用关系,体现的是一种组织关系。“协作”作为一个结构事物用于表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能。文本框中的“:”号,表示一个对象,“:”号前的部分是对象名,“:”号后面的部分是类名,对象之间连线上面的箭头所标识的是对象之间通信的消息。

参考答案:(41)C (42)B (43)D


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

J2EE应用开发(WebLogic+JBuilder)(第二版)

本书介绍如何将最流行的J2EE应用服务器WebLogic Server和最好的Java集成开发工具JBuilder结合起来开发J2EE应用,主要内容包括:WebLogic Se...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊