一、单项选择题(每题2分,共40分)1.软件生存周期模型有多钟,下列选项中,(C)不是软件生存周期模型。A.螺旋模型B.增量模型C.功能模型D.瀑布模型2.以下说法错误的是(C)。A.增量模型是在瀑布模型的基础上加以修改而形成的B.增量模型推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件C.瀑布模型和增量模型都属于整体开发模型D.瀑布模型规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节3.可行性分析中,系统流程图用于描述(A)。A.当前运行系统B.当前逻辑模型C.目标系统D.新系统4.研究软硬件资源的有效性是进行(A)研究的一方面。A.技术可行性B.经济可行性C.社会可行性D.操作可行性5、数据字典中,一般不包括下列选项中的(D)条目。A.数据流B.数据存储C.加工D.源点与终点6、SA方法的分析步骤是首先调查了解当前系统的工作流程,然后(A)。A.获得当前系统的物理模型,抽象出当前系统的逻辑模型,建立目标系统的逻辑模型B.获得当前系统的物理模型,抽象出目标系统的逻辑模型,建立目标系统的物理模型C.获得当前系统的逻辑模型,抽象出目标系统的物理模型,建立目标系统的逻辑模型D.获得当前系统的逻辑模型,抽象出目标系统的物理模型,建立目标系统的物理模型7、通过(B)可以完成数据流图的细化。A.结构分析B.功能分解C.数据分析D.系统分解8、对软件进行分解,是为了(C)。A.降低模块的复杂程度B.降低模块间接口的复杂程度C.降低模块的复杂程度,并降低模块间接口的复杂程度D.降低模块的复杂程度,并提高模块间接口的复杂程度9、为了提高模块的独立性,模块内部最好是(C)。A.逻辑内聚B.时间内聚C.功能内聚D.通信内聚10、在软件结构设计完成后,对于下列说法,正确的是(C)。A.非单一功能模块的扇入数大比较好,说明本模块重用率高B.单一功能的模块扇入高时应重新分解,以消除控制耦合的情况C.一个模块的扇出太多,说明该模块过分复杂,缺少中间层D.一个模块的扇入太多,说明该模块过分复杂,缺少中间层11、在软件开发过程中,以下说法正确的是(B)。A.程序流程图是逐步求精的好工具B.N-S图不可能任意转移控制,符合结构化原则C.判定表是一种通用的设计工具D.程序流程图和N-S图都不易表达模块的层次结构12、面向数据结构的设计方法(Jackson方法)是进行(B)的形式化的方法。A.系统设计B.详细设计C.软件设计D.编码13、所有的对象可以成为各种对象类,每个对象类都定义了一组(B)A.说明B.方法C.过程D.类型14、以下说法错误的是(D)A.对象具有很强的表达能力和描述功能B.对象是人们要进行研究的任何事务C.对象是封装的基本单位D.类封装比对象封装更具体、更细致15、以下说法正确的是(B)A.功能模型不包括对象模型中值的约束条件B.功能模型说明对象模型中操作的含义C.功能模型说明动态模型中约束的含义D.功能模型说明对象模型中动作的意义16、以下说法错误的是(D)A.面向对象方法不仅支持过程抽象,而且支持数据抽象B.某些面向对象的程序设计语言还支持参数化抽象C.信息隐蔽通过对象的封装性来实现D.在面向对象方法中,类是最基本的模块17、以下说法错误的是(A)A.多态性防止了程序相互依赖性而带来的变动影响B.多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果C.多态性与继承性相结合使软件具有更广泛的重用性和可扩充性D.封装性是保证软件部件具有优良的模块性的基础18、软件可维护性的特征中相互矛盾的是(C)。A.可修改性和可理解性B.可测试性和可理解性C.效率和可修改性D.可理解性和可读性19、以下说法正确的是(C)。A.组装结构可用来描述现实世界中的一般的抽象关系B.分类结构可用来描述现实世界中的类的组成的抽象关系C.面向对象的继承性是子类自动共享父类数据结构和方法的机制D.面向对象的唯一性是指将具有一致性的数据结构(属性)和行为(操作)的对象抽象成类20、以下说法错误的是(A)A.面向对象分析与面向对象设计的行医没有明显区别B.在实际的软件开发过程中面向对象分析与面向对象设计的界限是模糊的C.面向对象分析和面向对象设计活动一个多次迭代的过程D.从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程一、多项选择题(每题2分,共20分)1、软件危机产生的主要原因是(AE)。A.软件本身的特点B.用户使用不当C.硬件可靠性差D.对软件的错误认识E.缺乏好的开发方法和手段2、以下说法中正确的是(BCD)。A.快速原型思想是在研究概要设计阶段的方法和技术中产生的B.探索型和实验型快速原型采用的是抛弃策略C.演化型快速原型采用附加策略D.快速原型是利用原型辅助软件开发的一种新思想3、下列叙述中,(ABD)是不正确的。A.软件系统中所有的信息流都可以认为是事物流B.软件系统中所有的信息流都可以认为是变换流C.事务分析和变换分析的设计步骤是基本相似的D.事务分析和变换分析的设计步骤完全不同4、在程序的描述和分析中,下列哪个不是用以指明数据来源、数据流向和数据处理的辅助图形(ACD)。A.瀑布模型B.数据流图C.数据结构图D.业务图5、软件维护是保证软件正常、有效的重要手段,而软件的下述特性中(ABCD)有利于软件的维护。A.可测试性B.可理解性C.可修改性D.可移植性6、软件需求规格说明书的内容包括对(ACD)的描述。A.主要功能B.算法的详细过程C.用户界面及运行环境D.软件的性能7、下列说法正确的是(ACD)。A.变换型的DFD是由输入、变换(或称处理)和输出三部分组成B.变换型数据处理的工作过程一般分为三步:处理数据、变换数据和再处理数据C.变换输入端的数据流为系统的逻辑输入,它将外部形式的数据变换成内部形式,送给主加工。D.变换输出端为逻辑输出,它把主加工产生的数据的内部形式转换成外部形式后物理输出。8、以下说法正确的是(ABC)。A.面向对象方法不仅支持过程抽象,而且支持数据抽象B.某些面向对象的程序设计语言还支持参数化抽象C.信息隐藏通过对象的封装性来实现D.在面向对象方法中,类是最基本的模块9、在程序设计过程中,要为程序调试做好准备,主要体现在(ABC)。A.采用模块化、结构化的设计方法设计程序B.编写程序时要为调试提供足够的灵活性C.根据程序调试的需要,要选择并安排适当的中间结果输出和必要的断点D.以上答案都不正确10、对象间的关系可以有哪几种关系(BCD)。A.一对多关系B.一般-特殊关系C.整体-部分关系D.二、填空题(每空1分,共15分)1.快速原型的思想是在研究______需求分析_____的方法和技术中产生的。2._____可行性研究_____的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。3.经过需求分析,开发人员已经基本上理解了用户的要求,确定了目标系统的功能,定义了系统的数据,描述了处理这些数据的基本策略。将这些共同的理解进行整理,最后形成文档_____需求规格说明书______.4.两个模块通过全程变量相互作用,这种耦合方式称为_____公共耦合______。5.再详细设计阶段,除了对模块内的算法进行设计,还应对模块内的_____数据结构_____进行设计。6.子类自动共享父类的属性和操作的机制称为_____继承_____。7.在UML语言中,利用_____用例图_____来对需求分析中的问题进行描述。8.对象抽象是_____类_____,类的具体化就是_____对象_____。9.用等价类划分法设计测试用例时,如果被测试程序的某个输入条件规定了取值范围,则可以确定一个合理等价类和_____两个不合理等价类_____。10.用黑盒技术设计测试用例的方法有_____等价类划分_____、_____边界值分析_____、_____错误推测_____和_____因果图_____。11.在单元测试中,测试一个模块时,需要设计_____驱动模块_____。三、简答题(每题6分,共24分)1、测试面向对象软件时,单元测试、集成测试和确认测试各有哪些新特点?单元测试:集中检测软件设计的最小单元——模块。通常,单元测试和编码属于软件过程的同一个阶段。在编写出源程序代码并通过了编译程序的语法检查之后,就可以用详细设计描述作指南,对重要的执行通路进行测试,以便发现模块内部的错误。可以应用人工测试和计算机测试这样两种不同类型的测试方法,完成单元测试工作。这两种测试方法各有所长,互相补充。通常,单元测试主要使用白盒测试技术,而且对多个模块的测试可以并行地进行。集成测试:是测试和组装软件的系统化技术,例如,子系统测试即是在把模块按照设计要求组装起来的同时进行测试,主要目标是发现与接口有关的问题(系统测试与此类似)。例如,数据穿过接口时可能丢失;一个模块对另一个模块可能由于疏忽而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有问题等等。不幸的是,可能发生的接口问题多得不胜枚举。确认测试:也称为验收测试,它的目标是验证软件的有效性。上面这句话中使用了确认(validation)和验证(verification)这样两个不同的术语,为了避免混淆,首先扼要地解释一下这两个术语的含义。通常,验证指的是保证软件正确地实现了某个特定要求的一系列活动,而确认指的是为了保证软件确实满足了用需求而进行的一系列活动。2.为什么说类构件是目前比较理想的可重用软构建?它有哪些重用方式?面向对象技术中的“软件重用。面向对象技术中的“类”,是比较理想的可重用的软构件,不妨称之为类构件,可重用的软构件,不妨称之为类构件,在上一小节中讲述的构件组装模型,就是利用类构件来构造应用程讲述的构件组装模型,序。可重用的软构件应具备的特点1.可重用的软构件应具备的特点模块独立性强(1)模块独立性强(2)具有高度可塑性具有高度可塑性接口清晰、简明、可靠(3)接口清晰、简明、可靠2.类构件的重用方式类构件的重用方式实例重用(1)实例重用继承重用(2)继承重用面向对象方法特有的继承性,面向对象方法特有的继承性,提供了一种对已有的类构件进行裁剪的机制。的类构件进行裁剪的机制。当已有的类构件不能通过实例重用完全满足当前系统需求时,实例重用完全满足当前系统需求时,继承重用提供了一种安全地修改已有类构件,一种安全地修改已有类构件,以便在当前系统中重用的手段多态重用(3)多态重用利用多态性不仅可以使对象的对外接口更加一般基类与派生类的许多对外接口是相同的)化(基类与派生类的许多对外接口是相同的),从而降低了消息连接的复杂程度,低了消息连接的复杂程度,而且还提供了一种简便可靠的软构件组合机制,系统运行时,靠的软构件组合机制,系统运行时,根据接收消息的对象类型,由多态性机制启动正确的方法,对象类型,由多态性机制启动正确的方法,去响应一个一般化的消息,从而简化了消息界面和软构件连接3.简述功能模型、对象模型、动态模型三种模型之间的关系。对象模型:表示了静态的结构化的系统数据性质,描绘了系统的静态结构,从客观世界实体的对象关系角度来描述对象.动态模型:该模型描述了系统的控制结构,它表示了瞬间的,行为化的系统的系统控制性质,它关心的是系统的挖掘及操作的执行顺序,序幕宏观世界从对象的事件和状态的角度出发,表现了对象的相互行为.功能模型:描述了系统的所有计算,指出发生的时间,事件和客观.4.决定软件可维护性的因素主要有哪些。系统大小,系统年龄结构合理性,模块化层次组织系统文档结构命令的格式和约定程序的复杂性等等四、应用题(1题9分,2题12分,共21分)1.复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来