软件设计师2010年下半年上午试题及详细答案

发布时间 : 星期一 文章软件设计师2010年下半年上午试题及详细答案更新完毕开始阅读

本题考查操作系统中文件管理的基本知识。

根据题意,磁盘块的大小为512B,每个块号需占3B,因此一个磁盘物理块可存放512/3=170个块号。

根索引采用一级索引时的文件最大长度为: 170×512/1024=87040/1024=85KB

根索引采用二级索引时的文件最大长度为: 170×170×512/1024=28900×512/1024=14450KB 29、C

冗余是指对于实现系统规定功能是多余的那部分资源,包括硬件、软件、信息和时间。通常冗余技术分为4类:(1)结构冗余,按其工作方法可以分为静态、动态和混合冗余;(2)信息冗余,指的是为了检测或纠正信息在运算或传输中的错误另外加的一部分信息;(3)时间冗余,是指以重复执行指令或程序来消除瞬时错误带来的影响;(4)冗余附件技术,是指为实现上述冗余技术所需的资源和技术。 30、B

软件成熟度模型CMM是对软件组织进化阶段的描述,该模型在解决软件过程存在问题方面取得了很大的成功,因此在软件界产生了巨大影响,促使软件界重视并认真对待过程改进工作。过程能力成熟度模型基于这样的理念:改进过程将改进产品,尤其是软件产品。软件组织为提高自身的过程能力,把不够成熟的过程提升到较成熟的过程涉及4个方面,这4个方面构成了软件过程改进的框架,即过程改进基础设施、过程改进线路图、软件过程评估方法和软件过程改进计划。在进行评估后需要把发现的问题转化为软件过程改进计划。而过程改进通常不可能是一次性的,需要反复进行。每一次改进要经历4个步骤:评估、计划、改进和监控。 31、B

软件复杂性度量是软件度量的一个重要分支。软件复杂性度量的参数有很多,主要包括:(1)规模,即指令数或者源程序行数;(2)难度,通常由程序中出现的操作数所决定的量来表示;(3)结构,通常用与程序结构有关的度量来表示;(4)智能度,即算法的难易程度。 32、A

软件复杂性度量是软件度量的一个重要分支,而其主要表现在程序的复杂性。其中,McCabe度量法是一种基于程序控制流的复杂性度量方法,该方法认为程序的复杂性很大程度上取决于控制的复杂性。首先根据程序画出程序图,然后基于图论用图的环路数来度量程序复杂性,即V(G)=m-n+2p,其中m,n和p分别表示图G中孤的个数、顶点的个数和强连通分量数。根据上述公式可得,上图的复杂性为9-7+2=4。 33、C

软件的可维护性是指维护人员理解、改正、改动和改进这个软件的难易程度,是软件开发阶段各个时期的关键目标。软件系统的可维护性评价指标包括可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。 34、C

软件系统文档是系统建设过程的“痕迹”,是系统维护人员的指南,是开发人员与用户交流的工具。软件系统文档不仅包括应用软件开发过程中产生的文档,还包括硬件采购和网络设计中形成的文档;不仅包括有一定格式要求的规范文

档,还包括系统建设过程中的各种来往文件、会议纪要、会计单据等资料形成的不规范文档。软件系统文档可以提高软件开发的可见度,提高软件开发效率,且便于用户理解软件的功能、性能等各项指标。 35、C

软件测试是软件开发过程中一个独立而且非常重要的阶段,它是为了发现错误而执行程序的过程。因此一个成功的测试应该能发现至今未发现的错误。而且需要特别指出的是软件测试不能表明软件中不存在错误,它只能说明软件中存在错误。另外,由于问题的复杂性、软件本身的复杂性和抽象性、软件开发各个阶段工作的多样性、参加开发各种人员之间的配合关系等因素,使得开发的每个环节都可能产生错误,因此软件测试应该贯穿到软件开发的各个阶段中,且需要尽早地和不断地进行。经验表明,测试中存在一种集群现象,即在被测程序段中,若发现的错误数目越多,则残存的错误数目也较多。 36、B

黑盒测试也称为功能测试,在完全不考虑软件的内部结构和特性的情况下来测试软件的外部特性。常用的黑盒测试技术包括等价类划分、边界值分析、错误猜测和因果图的报告。白盒测试也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的执行路径和过程进行测试,检查是否满足设计的需

要。常用的白盒测试技术包括逻辑覆盖和基本路径测试。37、B 38、A 39、C 40、D 41、D 42、C

本题考查面向对象设计的原则。

开-闭原则(Open-Closed Principle)是面向对象的可复用设计(Object

Oriented Design, OOD)的基石。开-闭原则是指一个软件实体应当对扩展开放,对修改关闭,即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。满足开-闭原则的系统可以通过扩展已有的软件系统,提供新的能力和行为,以满足对软件的新需求,使软件系统有一定的适应性和灵活性;因为已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化中的软件系统有一定的稳定性和延续性;满足开-闭原则的系统具备更好的可复用性与可维护性。

在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,从而满足“对修改关闭”的要求;而从抽象类导出的具体类可以改变系统的行为,从而满足对扩展开放。

里氏代换原则(Liskov Substitution Principle, LSP)是指一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且软件系统觉察不出基类对象和子类对象的区别,也就是说,在软件系统中把基类都替换成它的子类,程序的行为没有变化。但需要注意的是,里氏代换原则中仅仅指出了用子类的对象去代替基类的对象,而反过来的代换则是不成立的。例如,如果一个软件模块中使用的是一个子类对象,那么使用父类对象去代换子类对象则可能产生错误。用一句简单的话概括:任何基类对象可以出现的地方,子类对象一定可以代替基类对象。

依赖倒转原则(Dependence Inversion Principle, DIP)就是要依赖于抽象,而不依赖于实现,或者说要针对接口编程,不要针对实现编程。系统中进行设计和实现的时候应当使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型说明,以及数据类型的转换等,而不要用具体类进行上述操作。要

保证做到这一点,一个具体类应当只实现接口和抽象类中声明过的方法,而不要给出多余的方法。

传统的过程性系统的设计办法倾向于使高层次的模块依赖于低层次的模块,抽象层次依赖于具体层次。依赖倒转原则就是把这个不良的依赖关系倒转过来。面向对象设计的重要原则是创建抽象层次,并且从该抽象层次导出具体层次,具体层次给出不同的实现。继承关系就是一种从抽象化到具体化的导出。抽象层包含的应该是应用系统的业务逻辑和宏观的、对整个系统来说重要的战略性决定,而具体层次含有的是一些次要的与实现有关的算法和逻辑,以及战术性的决定,带有一定的偶然性选择。从复用的角度来说,高层抽象的模块是应当复用的,而且是复用的重点,因为它含有一个应用系统最重要的宏观业务逻辑,是较为稳定的部分。而在传统的过程性设计中,复用则侧重于具体层次模块的复用。

使用依赖倒转原则时建议不依赖于具体类,即程序中所有的依赖关系都应该终止于抽象类或者接口。尽量做到:任何变量都不应该持有一个指向具体类的指针或者引用;任何类都不应该从具体类派生;任何方法都不应该覆写它的任何基类中的已经实现的方法。43、B 44、A 45、D

本题考查组合和聚合的基本概念。

组合(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。组合是一种很强的“拥有”关系,部分和整体的生命周期通常一样。组合成的新对象完全支配其组成部分,包括它们的创建和湮灭等。一个组合关系的成分对象是不能被另一个组合构成的对象共享的。聚合同样表示“拥有”关系,但其程度不如组合强,有时候“部分”对象可以在不同的“整体”对象之间共享,并且“部分”对象的生命周期也可以与“整体”对象不同,甚至“部分”对象可以脱离“整体”对象而单独存在。一般而言,组合是值的合成

(Aggregation by Value),而聚合是引用的合成(Aggregation by Reference)。46、D 47、B

本题考查面向对象设计中的设计模式。

题中的类图是观察者设计模式,在该设计模式中的Subject和Observer分别表示抽象的被观察者和观察者。通常,一个观察者(Observer)观察一个被观察者(Subject),而一个被观察者可以被多个观察者关注。当Subject的状态发生变化时,Subject将通知所有的Observer,告知状态已经发生了变化,而Observer收到通知后,将查询Subject的状态。 48、D

本题考查程序语言翻译的基础知识。

有限自动机是一种识别装置的抽象概念,它能准确地识别正规集。有限自动机分为两类:确定的有限自动机和不确定的有限自动机。它们都可以用状态转换图和状态转换矩阵表示。

一个确定的有限自动机是个五元组:(S,∑,f,s0,Z),其中:S是一个有限集合,它的每个元素称为一个状态;∑是一个有穷字母表,它的每个元素称为一个输入字符;f是从S×∑→S上的单值部分映像,f(A,a)=Q表示当前状态为A、输入为a时,将转换到下一状态Q。我们称Q为A的一个后继状态;s0∈S,是唯一的一个开始状态;Z是非空的终止状态集合,ZS。

一个不确定的有限自动机也是一个五元组,它与确定有限自动机的区别是:f是从S×∑→2S上的映像。对于S中的一个给定状态及输入符号,返回一个状态的集合。即当前状态的后继状态不一定是唯一确定的;有向弧上的标记可以是ε。 49、A

本题考查程序设计的基础知识。

可视化程序设计是以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序与结果的调整同步。

与传统的编程方式相比,“可视化程序设计”仅通过直观的操作方式即可完成界面的设计工作。

可视化程序设计语言的特点主要表现在两个方面:一是基于面向对象的思想,引入了控件的概念和事件驱动;二是程序开发过程一般遵循以下步骤,即先进

行界面的绘制工作,再基于事件编写程序代码,以响应鼠标、键盘的各种动作。 可视化程序设计最大的优点是设计人员可以不用编写或只需编写很少的程序代码,就能完成应用程序的设计,这样就能极大地提高设计人员的工作效率。 50、B

本题考查程序设计语言的基础知识。

汇编语言源程序中的每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目标代码)。

伪指令语句用于指示汇编程序如何汇编源程序,常用于为汇编程序提供以下信息:该源程序如何分段,有哪些逻辑段在程序段中,哪些是当前段,它们分别由哪个段寄存器指向;定义了哪些数据,存储单元是如何分配的等。伪指令语句除定义的具体数据要生成目标代码外,其他均没有对应的目标代码。伪指令语句的这些命令功能是由汇编程序在汇编源程序时,通过执行一段程序来完成的,而不是在运行目标程序时实现的。

目前主要有两种不同标准的汇编语言指令格式:Windows下的汇编语言基本上都遵循Intel风格的语法,如MASM、NASM,而Unix/Linux下的汇编语言基本上都遵循AT&T风格的语法。 汇编语言语句的通用格式如下:

[名称[:]] 指令码 [第一操作数] [,第二操作数] ;注释

汇编语言指令码的操作数的个数可以是0、1、2个;当操作数的个数为2的时候,语句还有两种不同的格式。

Windows下Intel风格的汇编语言语句格式为:

[名称[:]] 指令码目的操作数 DST,源操作数 SRC ;注释 Unix/Linux下AT&T风格的汇编语言语句格式为:

[名称[:]] 指令码源操作数 SRC, 目的操作数DST ;注释

汇编语言语句格式中的“名称”并不是所有语句都必需的。如果语句中带有“名称”,则大多数情况下“名称”都表示的是内存中某一存储单元的地址,也就是其后面各项在内存中存放的第一个存储单元的地址。 51、D

本题考查数据库概念结构设计中的基础知识。根据局部应用设计好各局部E-R图之后,就可以对各个局部E-R图进行合并。合并的目的在于解决分E-R图中相互间存在的冲突,消除分E-R图之间存在的信息冗余,使之成为能够被全系统所有用户共同理解和接受的统一的、精炼的全局概念模型。分E-R图之间的

联系合同范文客服:xxxxx#qq.com(#替换为@)