软件设计师第3部分系统开发和运行知识
2012-12-26来源/作者:卫凯点击次数:787
第3部分 系统开发和运行知识
◆软件不经修改或只经少量修改就可以由一台机器搬到另一台机器上运行,同一软件可应用于不同环境指的是(1)。为了提高软件的可移植性,应注意提高软件的(2)。采用(3)有助于提高(2)。为了提高可移植性,还应(4)。使用(5)语言开发的系统软件具有较好的跨平台性。
(1)A.质量
B.效率
C.软件可移植性
D.软件可维护性
(2)A.使用的方便性
B.简洁性
C.可靠性
D.设备独立性
(3)A.优化算法
B.专用设备
C.表格驱动方式
D.树型文件目录
(4)A.有完备的文档资料
B.选择好的宿主计算机
C.减少输入/输出次数
D.选择好的操作系统
(5):A.C++
B.Ada
C.C
D.Java
答案:(1)C (2)D (3)C (4)A (5)D
解析:软件的可移植性:指软件不经修改或只经少量修改就可以由一台机器搬到另一台机器上运行。同一软件可应用于不同环境。软件的可维护性是指维护人员为纠正软件系统出现的错误或缺陷,以及为满足新的要求而理解、修改和完善软件系统的难易程度。提高可维护性是决定软件工程方法论所有步骤的关键目标。提高软件的设备独立性。采用表格驱动方式,以及建立完备的文档资料有助于提高软件的可移植性。Java语言具有良好的跨平台性。
●人们对软件存在着许多错误的观点,这些观点表面上看起来很有道理,符合人们的直觉,但实际上给管理者和开发人员带来了严重的问题。许多人认识到下述观点是错误的,但遗憾的是旧的观念和方法培植了拙劣的管理和技术习惯。下列观点中可取的是(6)。
(6)A.项目需求总是在不断变化,但这些变化能够很容易地满足,因为软件是灵活的。 B.如果我们已经落后于计划,可以增加更多的程序员赶上进度
C.有了对目标的一般描述就足以开始写程序了,我们以后可以再补充细节。
D.软件包括程序、数据和文档,其中文档是成功开发的基础,为软件维护提供了指导。 答案:(6)D
解析:软件需求确实是经常变化的,但这些变化产生的影响会随着其引入时间的不同而不同。对需求把握得越准确。软件的修修补补就越少。有些需求在一开始时很难确定。在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。软件开发不同于传统的机械制造。人多不见得力量大。如果给落后于计划的项目增添新人。可能会更加延误项目。因为新人会产生很多新的错误。使项目混乱,并且原有的开发人员向新人解释工作和交流思想都要花费时间,使实际的开发时间更少。所以制定恰如其分的项目计划是很重要的。不完善的系统定义是软件项目失败的主要原因。关于待开发软件的应用领域、功能、性能、接口、设计约束和标准等需要详细的描述,而这些只有通过用户和开发人员之间的通信交流才能确定。越早开始写程序。就要花越长肘间才能完成它。
●软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。渐增模型是在快速开发一个(7)的基础上,逐步演化成最终的软件。螺旋模型综合了(8)的优点,并增加了(9)。喷泉模型描述的是面向(10)的开发过程,反映了该开发过程的(11)特征。
(7)A.简单模块
B.执行环境
C.原型
D.程序界面
(8)A.瀑布模型和喷泉模型
B.瀑布模型和演化模型
C.演化模型和喷泉模型
D.原型和喷泉模型
(9)A.风险分析
B.进度控制
C.版本控制
D.质量控制
(10)A.数据流
B.数据结构
C.对象
D.构件(Component)
(11)A.迭代和有间隙
B.无迭代和无间隙
C.无迭代和有间隙
D.迭代和无间隙
答案:(7)C (8)B (9)A (10)C (11)D
解析:软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段。有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程。明确规定了要完成的主要活动和任务。用来作为软件项目工作的基础。典型的开发模型有:①瀑布模型(waterfall model);②渐增模型/演化/迭代(incremental model);③原型模型(prototype model);④螺旋模型(spiral model);⑤喷泉模型(fountain model);⑥智能模型(intelligent model);⑦.混合模型(hybrid model)。
演化模型主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求。并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。螺旋模型基本的做法是在“瀑布模型”的每一个开发阶段之前。引入非常严格的风险识别、风险分析和风险控制。直到采取了消除风险的措施之后,才开始计划下一阶段的开发工作。喷泉模型(fountain model,(面向对象的生存期模型,O0模型))与传统的结构化生存期比较,具有更多的增量和迭代性质。生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下案.可以落在中间.也可以落在最底部。
● Jackson结构化程序设计方法是一种面向(12)的设计方法,主要适用于规模适中的(13)系统的开发,其基本步骤依次是(14)、建立程序结构、(15)。
(12)A.数据流
B.对象
C.数据结构
D.控制结构
(13)A.数据处理
B.科学计算
C.实时控制
D.文字处理
(14)、(15)A.建立数据结构
B.列出基本操作
C.建立控制结构
D.建立对象
答案:(12)C (13)A (14)A (15)B
解析:Jackson方法由M.Jackson提出的,Jackson方法的基本思想和SD方法是一致的。但它不是面向数据流,而是面向数据结构的。在数据结构基础上建立程序结构。该方法特别使用于设计企事业管理一类的规模适中的数据处理系统。应用该方法的基本步骤依次是建立系统的数据结构;以数据结构为基础,对应地建立程序结构;列出程序中要用到的各种基本操作,再将这些操作分配到程序结构中适应的模块。
●软件设计是一个创造性的过程,从工程管理的角度来看,软件设计分两步完成。首先做(16),将软件需求转化为数据结构和软件的系统结构。然后是(17),即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。
(16)A.概要设计
B.平台设计
C.体系结构设计
D.文档设计
(17)A.测试设计
B.程序没计
C.接口设计
D.详细设计
答案:(16)A (17)D
解析:软件设计的过程可以分两步完成。首先做概要设计,将软件需求转化为数据结构和软件的系统结构。然后是详细设计。即过程设计。通过对结构表示进行细化。得到软件的详细的数据结构和算法。衡量设计的技术原则有:(1)设计出来的结构应是分层结构,从而建立软件成份之间的控制。(2)设计应当模块化,从逻辑上将软件划分为完成特定功能或子功能的构件。(3)设计应当既包含数据抽象,也包含过程抽象。(4)设计应当建立具有独立功能特征的模块。(5)设计应当建立能够降低模块与外部环境之间复杂连接的接口。(6)设计应能根据软件需求分析获取的信息。建立可驱动可重复的方法。软件设计过程根据基本的设计原则,使用系统化的方法和完全的的设计评审来建立良好的设计。
● 软件开发成本主要是(18)的消耗。软件的开发成本是以(19)所花费的代价来计算的。软件开发成本的估算,应是从(20),需求分析,设计,编码,单元测试,组装测试到确认测试,整个软件开发全过程所花费的代价作为依据的。
(18)A.计算机资源
B.管理资源
C.人的劳动
D.物理参品成本
(19)A.开发维护过程
B.一次性开发过程
C.项目管理
D.软件测试
(20)A.项目建立
B.软件计划
C.获取需求
D.项目分析
答案:(18)C (19)B (20)B
解析:软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。它不包括原材料和能源的消耗。主要是人的劳动的消耗。人的劳动消耗所需代价就是软件产品的开发成本。软件产品开发成本的计算方法不同于其它物理产品成本的计算。软件的开发成本是以一次性开发过程所花费的代价来计算的。软件开发成本的估算,应是从软件计划,需求分析,设计,编码,单元测试,组装测试到确认测试,整个软件开发全过程所花费的代价作为依据的。
●对于一个大型复杂的软件项目的估算处理主要按(21)和(22)手段进行。基本估算的方法分为三类:从项目的整体出发,进行(22)的方法称为(23)估算法。把待开发的软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发总工作量的方法称为(24)估算法。而把待开发的软件项目与过去已完成的软件项目做类比,区分出类似部分和不同部分分别处理的方法称为(25)估算法。
(21)、(22)A.类推
B.比较
C.分解
D.归纳
(23) 、(25)A.自顶向下
B.自底向上
C.差别
D.专家判定技术
答案:(21)C (22)A (23)A (24)B (25)C
解析:对于一个大型的软件项目,由于项目的复杂性,开发成本的估算不是一件简单的事,要进行一系列的估算处理。主要靠分解和类推。基本估算方法分为三类:自顶向下的估算方法,自底向上的估计法。差别估计法。 自顶向下的估算方法(先估算总成本/工作量)的主要思想是从项目的整体出发。进行类推。估算人员根据以前已完成项目所消耗的总成本(或总工作量),推算将要开发的软件的总成本(或总工作量)。然后按比例将它分配到各开发任务单元中去,再来检验它是否能满足要求。
自底向上的估计法的主要思想是把待开发的软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发的总工作量。
差别估计法综合了上述两种方法的优点。其主要思想是把待开发的软件项目与过去已完成的软件项目进行类比。从其开发的各个子任务中区分出类似的部分和不同的部分。
●黑盒测试中常用的等价类划分方法是先把程序的(26)域划分成若干区间,然后从每个区间中选取少数代表性数据当作测试用例。在使用等价类划分方法时,通常会涉及到两种等价类:(27)。因果图方法是根据(28)之间的因果关系来设计测试用例的。在实际应用中,对修改后的程序重新测试称为(29)。
(26)A.判断条件
B.输出
C.结构
D.输入
(27)A.有效等价类和无效等价类
B.输入等价类和输出等价类
C.判断等价类和测试等价类
D.数据等价类和结构等价类
(28)A.主程序与子程序
B.设计与实现
C.条件与结果
D.输入与输出
(29)A.强度测试
B.验收测试
C.回归测试
D.系统测试
答案:(26)D (27)A (28)D (29)C
解析:黑盒测试中常用的等价类划分方法是先把程序的输入域划分成若干区间,然后从每个区间中选取少数代表性数据当作测试用例(由于数量太大,穷举测试一般情况下不可能实现)。在使用等价类划分方法时,通常会涉及刘两种等价类:有效等价类和无效等价类。顾名思义,有效等价类就是对程序的规格说明是有意义的合理的输入数据集;无效等价类就是对程序规格说明书不合理或无效的输入数据集。我们在设计测试用例时,要兼顾这两种情况。同时要注意一个测试用例只能覆盖一个无效等价类。这样便于错误定位,防止一个错误表征掩盖了另一个错误。因果图方法含义:仅仅将值输入,是不断验证单个数据的情况。有时候。我们需要将各个数据联系在一起考虑,从而引申出多种组合。这时候有些单个数据完好的功能就可能出现错误。回归测试是指对修改后的程序重新测试。
● 下列关于对象消息的观点,不正确的是(30)。
(30)A.键盘、鼠标等设备有变化时,就会产生消息
B.应用程序对象能向操作系统发送消息
C.应用程序对象之间不可以相互发送消息
D.发送与接收消息的对象通信机制与传统的子程序调用机制不同
答案:(30)C
解析:发送、接收消息是对象间通信的手段,对象之间可以互相发送消息。
● 面向对象技术中,对一组对象的共同特性进行抽象便得到类,类和类之间的泛化关系是指(31),聚合关系是指(32),(33)是对象的特性的表现。
(31)A.一般和具体
B.整体和部分
C.重载关系
D.多态关系
(32)A.组装关系
B.合成关系
C.封装关系
D.继承关系
(33)A.隐蔽信息
B.操作和属性相分离
C.信息开发性
D.能抽象出现实世界
答案:(31)B (32)A (33)D
解析:在实际生活中。有许多东西都具有共同的特征。例如。狗和猫都是动物。对象也可以具有共同的特征。您可以使用它们所属类之间的泛化关系来阐明这些共同特征。通过将共同特征抽取到它们所属的类中,可以在将来更容易地变更和维护系统。泛化关系是一般元素和具体元素之间的一种分类关系。具体元素与一般元素完全一致。但包含一些额外的信息。在允许使用一般元素的场合。可以使用具体元素的实例。聚合关系用于对模型元素之间的组装关系进行建模。有许多组成关系的示例:图书馆包括大量的书籍。公司部门由雇员组成,计算机由许多设备组成。如果对此进行建模。那么聚合关系体(部门)与其组成部分(雇员)之间存在聚合关系关联关系。
●CMM提供了一个框架,将软件过程改进的进化步骤组织成5个成熟度等级。除第1级外,每一级都包含了实现这一级目标的若干关键过程域,每一个关键过程域又包含若干(34)。
关键实践
B.软件过程性能
C.软件过程能力
D.软件过程
答案:(34)A
解析:关键实践(Key Practices):是指关键过程域中的一些主要实践活动。每个关键过程域最终由关键实践所组成,通过实现这些关键实践达到关键过程域的目标。一般情况下。关键实践描述了该“做什么”,但没有规定“如何”去达到这些目标。
●在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,(35)是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
A.业务需求
B.功能要求
C.非功能需求
D.用户需求
答案:(35)C
解析:软件需求包括三个不同的层次-业务需求、用户需求和功能需求(也包括非功能需求)。作为功能需求的补充。软件需求规格说明还应包括非功能需求。它描述了系统展现给用户的行为和执行的操作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节,性能要求;设计或实现的约束条件及质量属性。所谓约束是指对开发人员在软件产品设计和构造上的限制。质量属性是通过多种角度对产品的特点进行描述。从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。
●(36)意味着一个操作在不同的类中可以有不同的实现方式。
A.多态性
B.多继承
C.类的复用
D.封装
答案:(36)A
解析:多态性是指用一个名字定义不同的函数,这函数执行不同但又类似的操作,从而实现“一个接口,多种方法”。多态性的实现与静态联编、动态联编有关。静态联编支持的多态性称为编译时的多态性,也称静态多态性。它是通过函数重载和运算符重载实现的。动态联编支持的多态性称为运行时的多态性。也称动态多态性。它是通过继承和虚函数实现的。
●在面向对象的系统中,系统责任的良好分配原则是(37)。
(37)A.在类之间均匀分配
B.集中分配在少数控制类中
C.根据交互图的消息进行分配
D.根据个人喜好进行分配
答案:(37)B
解析:在面向对象的系统中,根据交互图的消息进行分配便可以对系统责任进行良好的分配。
●软件配置项是软件配置管理的对象,即软件工程过程中产生的(38)。
(38)A.接口
B.软件环境
C.信息项
D.版本
答案:(38)C
解析:Pressman对于配置项(Software Configuration Item,SCI)给出了一个比较简单的定义:“软件过程的输出信息可以分为三个主要类别:(1)计算机程序(源代码和可执行程序),(2)描述计算机程序的文档(针对技术开发者和用户)。以及(3)数据(包含在程序内部或外部)。这些项包含了所有在软件过程中产生的信息,总称为软件配置项。”
●软件测试计划开始于需求分析阶段,完成于(39)阶段。
(39)A.需求分析
B.软件设计
C.软件实现
D.软件测试
答案:(39)C
解析:软件测试计划开始于需求分析阶段,在软件实现阶段完成。
● 图形常用作软件开发过程中的描述工具。DFD就是面向(40)分析方法的描述工具。在一套分层DFD中,若某一张图中有N个加工(process),则这张图允许有(41)张子图。在一张DFD图中,任意两个加工之问(42)。在画分层DFD时,应注意保持(43)之间的平衡。DFD中从系统的输入流到系统的输出流的一连串连续变换形成一种信息流,这种信息流可分为(44)两大类。
供选择的答案: (40)A.数据结构
B.数据流
C.对象
D.构件(component)
(41)A.O~N
B.0
C.1~N
D.1
(42)A.有且仅有一条数据流
B.至少有一条数据流
C.可以有0或多条名字互不相同的数据流
D.可以有0或多条数据流,但允许其中有若干条名字相同的数据流
(43)A.同一子图的所有直接父图
B.同一父图的所有子图
C.不同父图的所有子图
D.父图与子图
(44)A.事务流和事件流
B.变换流和事务流
C.控制流和变换流
D.事件流和控制流
答案:(40)B (41)A (42)C (43)A (44)B
解析:数据流程图(Data Flow Diagram)是面向数据流分析方法的描述工具。它面对的是系统的信息流程。把信息流看作一个组织或系统运作的线索,简明扼要地勾画出全局,基本元素是外部实体,以箭头表示信息在它们之间的流动状况。在一套分层DFD中,如果某一张图中有N个加工(process)。则这张图允许有0~N张子图,任意两个加工之间可以有0或多条名字互不相同的数据流。在画分层DFD时,应注意保持父图与子图之间的平衡。DFD中从系统的输入流到系统的输出流的一连串连续变换形成变换流和事务流。
● 软件设计要综合考虑软件的可靠性,易维护性,可扩充性,可移植性等。其中理解、改正、改进软件的难易度称为软件的易维护性。通常影响软件易维护性的因素有易理解性、(45)和易测试性。在软件的开发过程中往往采取各种措施来提高软件的易维护性。如采用(46)有助于提高软件的易理解性;(47)有助于提高软件的(45)。在软件质量特性中,(48)是指在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性;(49)是指防止对程序及数据的非授权访问的能力。
(45)A.易恢复性
B.易使用性
C.易替换性
D.易修改性
(46)A.增强健壮性
B.信息隐蔽原则
C.良好的编程风格
D.高效的算法
(47)A.改进算法
B.信息隐蔽原则
C.增强健壮性
D.身份认证
(48)A.准确性
B.正确性
C.可靠性
D.易使用性
(49)A.安全性
B.适应性
C.灵活性
D.容错性
答案:(45)D (46)C (47)B (48)C (49)A
解析:软件的易维护性是指理解、改正、改进软件的难易度。通常影响软件易维护性的因素有易理解性、易修改性和易测试性。采用良好的编程风格有助于提高软件的易理解性;采用信息隐蔽原则有助于提高软件的易修改性。在软件质量特性中。可靠性是指在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性;安全性是指防止对程序及数据的非授权访问的能力。
● (50)工具是指用来辅助软件开发、运行、维护、管理、支持等过程中的活动的开发工具软件。
(50)A.CAD
B.CASE
C.CAM
D.CAI
答案:50(B)
解析:CAD是计算机辅助设计、CAl是计算机辅助教学、CAM是计算机辅助制造,只有CASE是计算机辅助软件工程。
● 常见的集成软件开发环境(IDE)通常由工具集和环境集成机制组成。这种环境的特点是(51)。环境集成机制主要有数据集成机制、控制集成机制和界面集成机制。数据集成机制为环境中的工具提供统一的(52);控制集成机制为(53)提供支持。界面集成机制使得环境中的所有工具具有(54)。
(51)A.可剪裁性和开放性
B.不可剪裁性和开放性
C.可剪裁性和封闭性
D.不可剪裁性和封闭性
(52)A.数据类型
B.数据接口规范
C.数据模式
D.数据仓库
(53)A.各工具之间的同步开发
B.使各工具具有统一的控制结构
C.使各工具具有统一的控制接口
D.各工具之间的通信、切换、调度和协同工作
(54)A.相同的图标和图标的含义
B.同一个界面
C.统一的界面风格和操作方式
D.相同个数的窗口和菜单
答案:5l(A) 52(B) 53(D) 54(C)
解析:集成软件开发环境(IDE)是把一组相关的工具集成在环境中,提供数据集成、控制集成和界面集成等机制。其中,数据集成环境:提供统一的数据模式和数据接口规范,需要相互协同的工具通过这种统一的规范交换数据。数据集成可由共享文件、共享数据结构或共享信息库等不同的层次;控制集成机制:支持各工具或各开发活动之间的通信、切换、调度和协同工作,并且支持软件开发过程的描述、执行和转接;通常消息传送的方式实现控制的集成。界面集成机制使这些工具具有统一的界面风格。从而为软件开发、维护、管理等过程的各项活动提供连续的、一致的全方位支持。集成型软件开发环境由工具集和环境集成机制组成,这种环境应该具有开放性和可剪裁性。
. ●不同的软件开发模型会对软件开发产生不同的影响。演进模型是在快速开发一个(55)基础上,逐步演化最终的软件。
(55)A.伪代码
B.框架
C.原型
D.主程序
答案:55(C)
解析:演化模型是在快速开发一个原型的基础上,逐步演化成最终的软件。
●螺旋模型是常见的软件开发模型,它综合了(56)的优点,并增加了(57)。
(56)A.原型和喷泉模型
B.瀑布模型和喷泉模型
C.演化模型和喷泉模型
D.瀑布模型和演化模型
(57)A.风险分析
B.进度控制
C.版本控制
D.质量评价
答案:56(D) 57(A)
解析:螺旋模型综合了瀑布模型和演化模型的优点并增加了风险分析。它在每个阶段开始前都进行风险的评估。阶段内按照瀑布模型进行开发。并且前一阶段的结束是后一阶段的开始,这就结合了演化模型的优点。
增量模型与喷泉模型具有一定的相似性,但是喷泉模型描述的是面向(58)的开发过程,反映了该开发过程的(59)特征。
(58)A.数据流
B.数据结构
C.对象
D.构件(component)
(59)A.无迭代和有问隙
B.无迭代和无间隙
C.迭代和有间隙
D.迭代和无间隙
答案:58(C) 59(D)
解析:喷泉模型具有更多的增量和迭代性质。生存期的各个阶段可以相互重叠和多次反复。而且在项目的整个生存期中还可以嵌入子生存期。
●在面向对象技术中的通用多态指的是(60)多态和(61)多态,特定多态指的是过载多态和(62)多态。
(60)~(61)A.参数
B.过载
C.包含
D.重置
(62)A.参数
B.隐含
C.强制
D.包含
答案:(60)A(61)C (62)C
解析:参数多态指的是参数不同而方法名相同的一些方法,它们之间依靠参数区分。包含多态最常见的例子就是子类化,即一个类是另一个类的子类。强制多态是通过语义操作把一个变元的类型加以变换。以符合某个函数对类型的要求。
●在表示多个数据流与加工之间关系的符号中,下列符号分别表示(63)和(64)。
(63)A.若A,则((B或c或D)或(B与C与D))
B.若A或B或C,则D
C.若A与B与c,则D
D.若D,则(A或B或c)但非(B与c)
(64)A.若A,则((B或c)或(B与C))
B.若A或B,则c
C.若A与B,则c
D.若A,则(B或c)但非(B与C)
答案:(63)C (64)A
解析:本题考查了数据流图的知识。符号*表示数据流同时出现,符号0表示相邻数据流只取其一。
● 详细设计是软件系统结构设计的重要组成部分,以下选项中属于详细设计的是(65)。(65)A.把软件划分成模块
B.确定模块之间的调用关系
C.确定各个模块的功能
D.设计每个模块的伪代码
答案:(65)D
解析:前三项都是概要设计的内容。
●测试的目的是寻找错误的原因并改正之。如果一个软件是给许多客户使用的,大多数软件厂商要使用几种测试过程来发现那些可能只有最终用户才能发现的错误。(66)测试是由一个用户在开发者的场所来进行的。(67)测试是由软件的最终用户在一个或多个用户实际使用环境下来进行的。
(66)~(67)A.alpha
B.beta
C.gamma
D.delta
答案:(66)A (67)B
解析:alpha测试是由一个用户在开发者的场所来进行的,软件在开发者对用户“指导”下进行测试,开发者负责记录错误和使用中出现的问题。beta测试是由软件的最终用户在一个或多个用户实际使用环境下来进行的,开发者通常不在现场。
● 软件危机主要表现在两方面:一力面是无法满足日益增长的对软件的需求;另一方面是难以满足对已有的软件系统的维护需要。(68)是造成软件危机的主要原因。
①软件本质属性②用户不会使用③硬件不稳定
④对软件的错误看法⑤缺乏好的管理方法和手段⑥开发效率低
(68)A.①⑤⑥
B.①②④
C.③⑤⑥
D.②⑤⑥
答案:(68)A
解析:造成软件危机的原因有两种复杂性,一种是非根本复杂性,一种是根本复杂性。非根本复杂性来自不适合于应用软件的范型、方法学和工具。根本复杂性是软件危机的真正原因,其原因来自于这一事实:软件本质上是复杂的。没有哪种方法学或者工具可以消除这一复杂性。
●原型化(Prototyping)方法所具有的特征是(69)。与结构化力‘法相比,原型化方法更需要(70)。衡量原型开发人员能力的重要标准是(71)。
(69)A.提供严格定义的文档
B.制定详细的需求
C.精确项目管理
D.加强用户参与和决策
(70)A.较长的开发时问
B.完整的生命周期
C.熟练的开发人员
D.明确的需求定义
(71)A.需求获取速度
B.灵活使用开发T具
C.协调组织能力
D.编程技巧
答案:(69)D (70)B (71)D
解析:原型化方法的基本思想是根据用户给出的基本需求。通过快速实现构造出一个小型的、可执行的模型,用户在计算机上实际运行这个用户界面原型,在试用过程中提出意见或建议,然后开发者再对原型进行改进。如此周而复始,逐步弥补不足之处,从而提高了最终产品的质量。它是一种自外向内的设计过程。衡量原型开发人员能力的重要标准不是开发技巧或组织能力,而是能否快速获取需求。
● 软件能力成熟度模型CMM(Capability Maturity Model)是组织进行软件过程改善和软件过程评估的一个有效的指导框架。它描述和分析了软件过程能力的发展与改进的程度,确立了一个软件过程成熟程度的分级标准。在初始级,软件过程定义几乎处于无章法可循的状态,软件产品的成功往往依赖于个人的努力和机遇。在(72),已建立了基本的项目管理过程,可对成本、进度和功毙特性进行跟踪。在已定义级,用于软件管理与工程两方面的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。在(73),对软件过程和产品质量有详细的度量标准。在(74),通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地对过程进行改进。
(72)A.成本级
B.功能级
C.管理级
D.可重复复级
(73)A.标准级
B.已管理级
C.可再复级
D.优化级
(74)A.过程级
B.管理级
C.优化级
D.分析级
答案:(72)D (73)B (74)C
解析:软件能力成熟度模型被国际软件界公认为是软件工程学的一项重大成果。它既可用来科学地评价软件开发单位的软件能力成熟度等级,也可用来帮助软件开发单位进行自检,了解自己的强项和弱项,从而不断完善单位的软件开发过程,确保软件质量,提高软件开发效率。它共分五级,依次是初始级、可重复级、已定义级、已管理级、优化级。
● 系统中模块的(75)指如果模块内出现异常情况,并且它的影响限制在模块内部,则错误弓I起的副作用就会被最小化。
(75)A.可分解性
B.保护性
C.可理解性
D.连续性
答案:(75)B
解析:Meyer定义了合理模块的五个标准:可分解性、保护性、可理解性、连续性、可组装性。模块可分解性是指如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。模块保护性是指如果模块内出现异常情况,并且它的影响限制在模块内部,则错误引起的副作用就会被最小化。模块可理解性是指如果一个模块可以作为一个独立的单位(不用参考其他模块)被理解,那么它就易于构造和修改。模块连续性是指在程序中进行小的修改的能力以及使这些修改在仅仅一个或很少的几个模块中发生对应修改下的反应,则修改引起的副作用就会被最小化。模块可组装性是指如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不是一切从头开始的模块化解决方案。
● 下面关于面向对象方法中消息的叙述中,正确的是(76)。
(76)A.键盘、鼠标、通信端口、网络等设备一旦发生变化,就会产生消息
B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息
C.应用程序之间不能相互发送消息
D.发送与接收消息的通信机制与传统的子程序调用机制相同
答案:(76)A
解析:消息是对象间互相联系的手段,消息刺激接收对象产生某种行为,通过操作的执行来完成相应行为。操作系统不断向应用程序发送消息,应用程序也能向操作系统发送消息。应用程序之间能相互发送消息。发送与接收消息的通信机制与传统的子程序调用机制不同。
●面向对象技术中,对象是由(77)、属性和方法(或操作)组成的。
(77)A.标识
B.规则
C.封装
D.消息
答案:(77)A
解析:对象有三种成份:标识、属性和方法(或操作)。每个对象都有自己的属性值,表示该对象的状态。对象中的属性只能够通过该对象所提供的操作来存取或修改。操作也称为方法或服务,它规定了对象的行为,表示对象所提供的服务。
◆C++语言将类的成员封装在类体之中,使之具有一定的存取规则,这些规则规定了存取类的成员的权利,其中,对于用private说明的成员,它(78)。
(78)A.既能被该类的成员函数访问,又能被外界直接访问
B.不能被该类的成员函数访问,只能被外界直接访问
c.只能被该类的成员函数访问,外界不能直接访问
D.既不能被该类的成员函数访问,也不能被外界直接访问
答案:(78)C
解析:按照被访问权限其成员可以分成public(公用的)、private(私用的)、protected(保护的)。其中public修饰的成员。外界可以直接访问。对于private修饰的成员只能被该类的成员函数访问,外界不能直接访问。
● 软件开发的螺旋模型比瀑布模型和演化模型增加了(79)。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对(80)进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个(81)。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。
(79)A.版本管理
B.可行性分析
C.风险分析
D.系统集成
(80)A.工程
B.风险
C.计划
D.系统
(81)A.概念项目
B.原型项目
C.改进项目
D.风险项目
答案:(79)C (80)B (81)A
解析:软件开发的螺旋模型综合了瀑布模型和演化模型的优点。还增加了风险分析,每转一圈都要对风险进行识别和分析,螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了。新产品的演化沿着螺旋线进行若干次迭代。一直运转到软件生命期结束。
● 以下规则中不符合程序模块优化原则的是(82)。如果一个模块调用下层模块时传递一个数据结构,则这种耦合属于(83)。
(82)A.通过模块的合并和分解,降低模块的耦合度,提高模块的内聚性
B.提高上层模块的扇出,减少模块调用的层次
C.将模块的作用范围限制在模块的控制范围之内
D.降低模块之间接口的复杂性,避免“病态连接”
(83)A.控制耦合
B.直接耦合
C.简单耦合
D.标记耦合
答案:(82)B (83)D
解析:(1)关于程序模块优化的启发式规则有若干条:评估程序结构的“第一次迭代”以降低耦合并提高内聚;试图用高扇出使结构最小化;当深度增加时争取提高扇入;将模块的影晌限制在模块的控制范围内;评估模块接口以降低复杂度和冗余并提高一致性:定义功能可以预测的模块。但要避免过分限制的模块;力争“受控入口”模块,避免“病态连接”;根据设计约束和可移植性需求。对软件进行打包。答案A、C、D都符合上述准则,若要减少模块调用的层次即当深度增加时,应该争取提高扇入,所以答案8不符合原则。(2)一个数据结构的一部分借助于模块接口被传递是标记耦合。两个模块之间的耦合方式有七种:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合.公共藕合、内容耦合。
●软件设计包括四个既独立又相互联系的活动,分别为体系结构设计、(84)、(85)和过程设计。
(84)A.文档设计
B.程序设计
C.实用性设计
D.接口设计
(85)A.用户手册设计
B.语言设计
C.数据设计
D.文档设计
答案:(84)D (85)C
解析:设计模型可以表示成金字塔,这种形状的象征意义是重要的。金字塔是极为稳固的物体,它具有宽大的基础和低的重心。象金字塔一样,我们希望构造坚固的软件设计。我们通过用数据设计建立宽广的基础。用体系结构和接口设计建立坚固的中部。以及应用过程设计构造尖锐的顶部,从而创建出不会被修改之风轻易“吹倒”的设计模型。
● 系统论认为系统具有多元性、相关性以及整体性,系统是“相互作用的多个元素的复合体”,其中系统思想的核心是(86)。
(86)A.动态性
B.多元性
C.相关性
D.整体性
答案:(86)D
解析:系统思想的核心是整体性。
●SEl提出的CMM模型将软件过程的成熟度分为5个等级,以下选项中,属于可管理级的特征是(87)。
(87)A.建立了企业级的管理制度
B.建立了项目级的管理制度
C.软件过程中活动的生产率和质量是可度量的
D.工作无序,项目进行过程中经常放弃当初的计划
答案:(87)C
解析:美国卡内基一梅隆大学SEl的CMM模型提供了衡量一个公司软件工程实践的整体有效性的方法,且建立了五级的过程成熟度级别。第一级:初始级,第二级:可重复级,第三级:定义级,第四级:管理级,第五级:优化级。第四级管理级是指软件过程和产品质量的详细度量数据被收集,通过这些度量数据,软件过程和产品能够被定量地理解和控制。此级包含了第三级的所有特征。根据各选项应选择答案C。
●在面向对象技术中,类属可看作是一种(88)。一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与(89)的那些部分,而用变元来表示与(90)的那些部分。 (88)A.强制多态
B.过载多态
C.参数多态
D.包含多态
(89)A.具体变量无关
B.具体类型相关
C.具体变量相关
D.具体类型无关
(90)A.具体变量无关
B.具体类型相关
C.具体变量相关
D.具体类型无关
答案:(88)C (89)B (90)D
解析:在面向对象技术中。类属是一种参数多态机制。对象在收到消息后要做出响应,不同的对象收到同一消息可产生完全不同的结果,这一现象称为多态。多态有多种不同形式。其中参数多态和包含多态成为通用多态。过载多态和强制多态成为特定多态。参数多态应用比较广泛,被称为最纯的多态。类属类(generic class)仅描述了适用于一组类型的通用样板。是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与具体内容无关的那些部分。而用变元来表示与具体类型相关的那些部分。由于其中所处理的对象的数据类型尚未确定,因而程序员不可用类属类直接创建对象实例,即一个类属类并不是一种真正的类类型。
●以下选项中不属于Charette提出的在软件工程的环境中考虑风险三个概念的是(91)。项目风险关系着项目计划的成败,(92)关系着软件的生存能力。在进行软件工程风险分析时,项目管理人员要进行四种风险评估活动,这四种活动是(93)以及确定风险估计的正确性。
(91)A.关心未来
B.关心变化
C.关心技术
D.关心选择
(92)A.资金风险
B.技术风险
C.商业风险
D.预算风险
(93)A.建立表示风险概率的尺度,描述风险引起的后果,估计风险影响的大小
B.建立表示风险概率的尺度,描述风险引起的后果,确定产生风险的原因
C.确定产生风险的原因,描述风险引起的后果,估计风险影响的大小
D.建立表示风险概率的尺度,确定产生风险的原因,估计风险影响的大小
答案:(91)C (92)C(93)A
解析:P Robert Charette在他关于风险分析和驾驭的书中对风险的概念给出了如下的定义:”首先。风险关系到来来发生的事情。今天和昨天积极考虑已经过晚,因为我们今天收获的是以前的活动播下的种子。问题是,能否通过改变今天的活动为我们自身的明天创造一个完全不同的充满希望的美好前景。其次。风险会发生变化。就象爱好、意见、动作或地点会变化一样……。第三。风险导致选择。而选择本身将带来不确定性。因此,风险就象死亡那样。是一个其生命很少确定性的东西。”当在软件工程的环境中考虑风险时。Charette的这3个概念就成为讨论的基础。首先是关心未来一一风险是否会导致软件项目失败?其次是关心变化一一在用户需求、开发技术、目标机器、以及所有其他与项目及时工作和全面完成有关的实体中会发生什么样的变化?最后,必须解决选择问题——应采用什么方法和工具。应配备多少人力,在质量上强调到什么程度才满足要求?
项目风险是指潜在的预算、进度、人力(工作人员及组织)、资源、客户、及需求等方面的问题以及它们对软件项目的影晌。技术风险威胁到要开发软件的质量及交付时间。商业风险威胁到要开发软件的生存能力。商业风险常常会危害项目或产品。五个主要的商业风险是:(1)市场风险;(2)策略风险;(3)建造了一个销售部门不知道如何去卖的产品;(4)管理风险;(5)预算风险。
在进行软件工程风险分析时。项目管理人员要进行四种风险评估活动。这四种活动是建立表示风险概率的尺度。描述风险引起的后果,估计风险影响的大小,标注风险预测的整体精确度,以免产生误解。
● 软件的互操作性的含义是(94)。
(94)A.软件的可移植性
B.人机界面的可交互性
C.多用户之间的可交互性
D.连接一个系统和另一个系统所需的工作量答案:(94)D
解析:互操作性是指不同的计算机系统、网络、操作系统和应用程序一起工作并共享信息的能力。
● 面向对象的测试可分为四个层次,由高到低分别是(95)。
(95)A.类层—模板层一系统层一算法层
B.系统层一模板层一类层一算法层
C.算法层一模板层一类层一系统层
D.类层一系统层一模板层一算法层
答案:(95)B
解析:各层含义是:系统层,测试面向对象系统;模板层,测试对象集群;类层,测试单个对象类;算法层,测试与对象美联的单个操作。
◆原型法有其适用场合,有些情况并不适合使用,以下选项中不能使用快速原型法的情况是(96)。
(96)A.系统的使用范围变化很大
B.系统的设计方案难以确定
C.用户的数据资源缺乏组织和管理
D.用户的需求模糊不清
答案:(96)C
解析:原型法的主要优点在于它是一种支持用户的方法,使得用户在系统生存周期的设计阶段起到积极的作用;它能减少系统开发的风险,特别是在大型项目的开发中,由于对项目需求的分析难以一次完成,应用原型法效果更为明显。但是不适合用户的数据资源缺乏组织和管理的情况。
●最适合用交互式计算机软件解决的问题是(97)。
(97)A.非结构化决策问题
B.结构化决策问题
C.半结构化决策问题
D.确定性问题
答案:(97)C
解析:在各单位管理决策中所面临的问题,往往是目标含糊不清,多个目标相互冲突,方案的比较和选择没有固定规则或程序可循,所需信息不全或比较模糊的问题,这类决策问题,称为半结构化决策问题。处理半结构化决策问题,就意味着决策过程不能完全用一种算法、程序模糊型概略说明。不能完全依靠计算机系统。它需人机的交互作用。
● (98)将软件组织的过程能力分为五个成熟度级别,每一个级别定义了一组过程能力目标,并描述了要达到这些目标应该具备的实践活动。
(98)A.TSP
B.PSP
C.CMM
D.SSE-CMM
答案:(98)C
解析:CMM是能力成熟度模型(capability Maturity Model)的缩写。是一种用于评价软件承包能力并帮助其改善软件质量的方法。侧重于软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级。二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。CMM是由美国卡内基梅隆大学软件工程研究所1987年研制成功的。是目前国际上最流行最实用的软件生产过程标准和软件企业成熟度等级认证标准。目前,我国已有软件企业通过了CMM标准认证。
●从软件生存周期阶段划分的角度,与瀑布模型最相适应的软件开发方法是(99)。
(99)A.构件化方法
B.结构化方法
C.面向对象方法
D.快速原型方法
答案:(99)B
解析:结构化开发方法的生存周期划分与瀑布模型相对应。因此是与其最相适应的软件开发方法。
● 下述任务中,软件工程需求分析阶段不需要完成的是(100)。
(100)A.分析软件系统的数据要求
B.确定软件系统的性能要求
C.确定软件系统的功能需求
D.确定软件系统的运行平台 答案:(100)D
解析:软件工程需求分析阶段的工作主要有:分析软件系统的数据要求;确定软件系统的功能需求和非功能需求:确定系统的逻辑模型:修正项目的开发计划等。
●软件设计可分为概要设计和详细设计。软件设计的主要任务是设计软件的结构,过程和模块,其中软件结构设计的主要任务是要确定(101)。
(101)A.模块问的相似性
B.模块问的操作细节
C.模块问的组成关系
D.模块的具体功能
答案:(101)C
解析:软件设计可分为概要设计和详细设计。概要设计的任务是确定整个软件系统的结构,划分各模块,确定模块的功能、接口以及模块间的调用关系。设计软件系统结构的主要目的是确定模块间的组成关系。
●系统测试是将软件系统与硬件、外设和网络等其他因素结合,对整个软件系统进行测试。系统测试不包括(102)。
(102)A.安全测试
B.可靠性测试
C.安装测试
D.路径测试
答案:(102)D
解析:系统测试是针对整个产品的全面测试,既包含各模块的验证性测试(验证前两个阶段测试的正确性)和功能性(产品提交个用户的功能)测试,又包括对整个产品的健壮性、安全性、可维护性及各种性能参数的测试。路径测试是白盒测试的内容。不属于系统测试。
● (103)将网络方法用于项目管理工作计划安排的评审和检查。
(103)A.Gantt图
B.PERT网图
C.因果分析图
D.流程图 答案:(103)B
解析:PERT。即Program Evaluation Review Technique,称之为“计划评审技术”,是l958年在安排和控制北极星导弹过程中,由美国海军特别项目办公室倡导发展起来的一种管理手段。它的基本原理是:用网络来表示生产和工作的进度,计算各项活动(也称作业或工序)的有关时间参数,使管理者对全局有一个比较完整清晰的了解,并通过网络分析制定日程计划,以求得完工期、资源和成本的优化方案。在PERT中。用一条有向边表示一项活动,有向边的权数即为此活动要消耗的时间和资源,节点表示事件,即有向边的始点和终点分别表示活动的开始和结束,活动的开始和结束均表示了流程的状态。每项活动所需要的时间用三点估计法来估测,即由非常熟悉该活动的人员估计三个值;最乐观时间、最可能时间、最悲观时间。需要这三个时间估算值作为活动的不确定的度量标准,并代表人们对非标准的开发性方案中大部分活动的全部认识。根据这三个时间值可以期望时间值(TE)、方差(σ2)和标准差(盯)。需要用最大的期望时间值来完成的活动和事件的序列叫关键路线。关键路线的识别将有利于管理人员对整个流程的控制和优化。PERT网络除了用于基于时间的关键路线分析外,扩展的计划评审技术还用于时间费用、时间一人力的权衡和优化。PERT网主要用于生产和工艺流程。
● 结构化分析方法中,数据字典是关于数据的信息集合。其中对加工的描述是数据字典的组成内容之一,常用的加工描述方法(104)。
(104)A.有结构化语言、判定树和判定表
B.有结构化语言和判定树
C.只有结构化语言
D.有判定树和判定表
答案:(104)C
解析:数据字典是关于数据的信息集合。也就是对数据流图中包含的所有元素的定义的集合。它由对下列四类元素的定义组成:(1)数据流(2)数据流分量(数据元素)(3)数据存储(4)处理(加工)。常用的加工描述方法有结构化语言、判定树和判定表。
● CMM能力成熟度模型将软件过程的成熟度分为5个等级。使用定量分析来不断地改进和管理软件过程是在(105)。
(105)A.优化级
B.管理级
C.定义级
D.可重复级
答案:(105)A
解析:CMM是能力成熟度模型(capability Maturity Model)的缩写,是一种用于评价软件承包能力并帮助其改善软件质量的方法,侧重于软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级。四级为已管理级,五级为优化级。在初始级,企业一般不具备稳定的软件开发与维护的环境。常常在遇到问题的时候。就放弃原定的计划而只专注于编程与测试。可重复级Repeatable Level在这一级,建立了管理软件项目的政策以及为贯彻执行这些政策而定的措施。基于过往的项目的经验来计划与管理新的项目。定义级Defined Level在这一级,有关软件工程与管理工程的一个特定的、面对整个企业的软件开发与维护的过程的文件将被制订出来。同时。这些过程是集成到一个协调的整体。这就称为企业的标准软件过程。第四级:管理级Managed Level在这~级,企业对产品与过程建立起定量的质量目标。同时在过程中加入规定得很清楚的连续的度量。作为企业的度量方案。要对所有项目的重要的过程活动进行生产率和质量的度量。软件产品因此具有可预期的高质量。第五级:优化级Optimizing Level在这个等级。整个企业将会把重点放在对过程进行不断的优化。企业会采取主动去找出过程的弱点与长处,以达到预防缺陷的目标。同时,分析有关过程的有效性的资料,做出对新技术的成本与收益的分析。以及提出对过程进行修改的建议。
● 面向数据流的设计方法中,数据流图中的数据流一般可划分为(106)。 (106)A.数据流和事务流
B.变换流和数据流
C.变换流和事务流
D.控制流和事务流
答案:(106)C
解析:面向数据流的设计方法是一种概要设计技术,根据需求阶段对数据流的分析设计软件的总体结构。数据流的类型有变换流,其特点是数据进入系统,以顺序的方式经过输入一变换一输出。事务流,其特点:数据进入系统,到达事务中心,根据数据计算结果从若干动作路径中选择一条路径离开事务中心。
● UML的各种图中,(107)用于接口、类和协作的行为建模,并强调对象行为的事件顺序:可以采用(108)对逻辑数据库模式建模;(109)用于系统的功能建模,并强调对象问的控制流。
(107)A.协作图
B.对象图
C.序列网
D.状态图
(108)A.用例图
B.类图
C.活动图
D.构件图
(109)A.状态图
B.用例图
C.活动图
D.类图
答案:(107)D (108)B (109)C
解析:状态图显示一个由状态、转换、事件和活动组成的状态机。用状态图显示系统的动态视图。状态图对接口、类或协作的行为建模是非常重要的。状态图强调一个对象按事件次序发生的行为。类图是显示一组类、接口、协作以及它们之间关系的图。类图用于对系统的静态设计视图建模。活动图显示从活动到活动的流。活动匿对系统的功能建模是非常重要的。活动图强调对象之间的控制流。
●通过(110)机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现,这句话指的是重置。
(110)A.静态绑定
B.动态绑定
C.类型匹配
D.对象引用
答案:(11O)B
解析:重置(overriding)的基本思想是通过动态绑定机制的支持,使得子类在继承父类界面定义的前提下。用适合于自己要求的实现去置换父类中的相应实现。
●OMT定义了三种模型来描述系统。(111)可以用数据流图来表示;(112)可以用状态图来表示;(113)为上述两种模型提供了基本的框架。
(111)A.对象模型
B.功能模型
C.动态模型
D.类模型
(112)A.对象模型
B.功能模型
C.动态模型
D.类模型
(113)A.对象模型
B.功能模型
C.动态模型
D.类模型
答案:(111)B (112)C (113)A
解析:OMT是一种通过模型来思考问题的方法。这些模型都是围绕着真实世界的概念建立的。0MT方法提供了一组面向对象的概念及图形符号。然后利用这些概念及符号来分析需求、设计系统、实现。它适应于整个软件的开发过程。OMT方法是一种思考问题的方法。而不仅仅是一种编程技术。OMT的方法是从三个相关但体现系统不同方面的角度去对一个系统进行建模,得到的三种模型分别是对象模型、动态模型和功能模型。每一种模型描述系统的一个方面。对象模型代表了系统静态的结构。动态模型代表了系统随时间变化的、行为的、控制的方面。功能模型代表了系统的功能的方面。这三种模型不是完全独立的。每一种模型都包含对其它模型的引用。系统也不是各独立部分的组合。
●动态规划策略的最优性原理,其含义是(114)。
(114)A.当前所做出的决策不会影响后面的决策
B.原问题的最优解包含其子问题的最优解
C.问题可以找到最优解,但利用贪心法不能找到最优解
D.每次决策必须是当前看来最优的决策才可以找到最优解
答案:(114)B
解析:动态规划是对最优化问题的一种新的算法设计方法。由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的没计法对不同的问题。有各具特色的表示方式。动态规划策略设计算法利用问题的最靛子结构性质,以自底向上的方式递归地从子问题的最优解逐步构造出整个问题的最优解。
◆软件不经修改或只经少量修改就可以由一台机器搬到另一台机器上运行,同一软件可应用于不同环境指的是(1)。为了提高软件的可移植性,应注意提高软件的(2)。采用(3)有助于提高(2)。为了提高可移植性,还应(4)。使用(5)语言开发的系统软件具有较好的跨平台性。
(1)A.质量
B.效率
C.软件可移植性
D.软件可维护性
(2)A.使用的方便性
B.简洁性
C.可靠性
D.设备独立性
(3)A.优化算法
B.专用设备
C.表格驱动方式
D.树型文件目录
(4)A.有完备的文档资料
B.选择好的宿主计算机
C.减少输入/输出次数
D.选择好的操作系统
(5):A.C++
B.Ada
C.C
D.Java
答案:(1)C (2)D (3)C (4)A (5)D
解析:软件的可移植性:指软件不经修改或只经少量修改就可以由一台机器搬到另一台机器上运行。同一软件可应用于不同环境。软件的可维护性是指维护人员为纠正软件系统出现的错误或缺陷,以及为满足新的要求而理解、修改和完善软件系统的难易程度。提高可维护性是决定软件工程方法论所有步骤的关键目标。提高软件的设备独立性。采用表格驱动方式,以及建立完备的文档资料有助于提高软件的可移植性。Java语言具有良好的跨平台性。
●人们对软件存在着许多错误的观点,这些观点表面上看起来很有道理,符合人们的直觉,但实际上给管理者和开发人员带来了严重的问题。许多人认识到下述观点是错误的,但遗憾的是旧的观念和方法培植了拙劣的管理和技术习惯。下列观点中可取的是(6)。
(6)A.项目需求总是在不断变化,但这些变化能够很容易地满足,因为软件是灵活的。 B.如果我们已经落后于计划,可以增加更多的程序员赶上进度
C.有了对目标的一般描述就足以开始写程序了,我们以后可以再补充细节。
D.软件包括程序、数据和文档,其中文档是成功开发的基础,为软件维护提供了指导。 答案:(6)D
解析:软件需求确实是经常变化的,但这些变化产生的影响会随着其引入时间的不同而不同。对需求把握得越准确。软件的修修补补就越少。有些需求在一开始时很难确定。在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。软件开发不同于传统的机械制造。人多不见得力量大。如果给落后于计划的项目增添新人。可能会更加延误项目。因为新人会产生很多新的错误。使项目混乱,并且原有的开发人员向新人解释工作和交流思想都要花费时间,使实际的开发时间更少。所以制定恰如其分的项目计划是很重要的。不完善的系统定义是软件项目失败的主要原因。关于待开发软件的应用领域、功能、性能、接口、设计约束和标准等需要详细的描述,而这些只有通过用户和开发人员之间的通信交流才能确定。越早开始写程序。就要花越长肘间才能完成它。
●软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。渐增模型是在快速开发一个(7)的基础上,逐步演化成最终的软件。螺旋模型综合了(8)的优点,并增加了(9)。喷泉模型描述的是面向(10)的开发过程,反映了该开发过程的(11)特征。
(7)A.简单模块
B.执行环境
C.原型
D.程序界面
(8)A.瀑布模型和喷泉模型
B.瀑布模型和演化模型
C.演化模型和喷泉模型
D.原型和喷泉模型
(9)A.风险分析
B.进度控制
C.版本控制
D.质量控制
(10)A.数据流
B.数据结构
C.对象
D.构件(Component)
(11)A.迭代和有间隙
B.无迭代和无间隙
C.无迭代和有间隙
D.迭代和无间隙
答案:(7)C (8)B (9)A (10)C (11)D
解析:软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段。有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程。明确规定了要完成的主要活动和任务。用来作为软件项目工作的基础。典型的开发模型有:①瀑布模型(waterfall model);②渐增模型/演化/迭代(incremental model);③原型模型(prototype model);④螺旋模型(spiral model);⑤喷泉模型(fountain model);⑥智能模型(intelligent model);⑦.混合模型(hybrid model)。
演化模型主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求。并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。螺旋模型基本的做法是在“瀑布模型”的每一个开发阶段之前。引入非常严格的风险识别、风险分析和风险控制。直到采取了消除风险的措施之后,才开始计划下一阶段的开发工作。喷泉模型(fountain model,(面向对象的生存期模型,O0模型))与传统的结构化生存期比较,具有更多的增量和迭代性质。生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下案.可以落在中间.也可以落在最底部。
● Jackson结构化程序设计方法是一种面向(12)的设计方法,主要适用于规模适中的(13)系统的开发,其基本步骤依次是(14)、建立程序结构、(15)。
(12)A.数据流
B.对象
C.数据结构
D.控制结构
(13)A.数据处理
B.科学计算
C.实时控制
D.文字处理
(14)、(15)A.建立数据结构
B.列出基本操作
C.建立控制结构
D.建立对象
答案:(12)C (13)A (14)A (15)B
解析:Jackson方法由M.Jackson提出的,Jackson方法的基本思想和SD方法是一致的。但它不是面向数据流,而是面向数据结构的。在数据结构基础上建立程序结构。该方法特别使用于设计企事业管理一类的规模适中的数据处理系统。应用该方法的基本步骤依次是建立系统的数据结构;以数据结构为基础,对应地建立程序结构;列出程序中要用到的各种基本操作,再将这些操作分配到程序结构中适应的模块。
●软件设计是一个创造性的过程,从工程管理的角度来看,软件设计分两步完成。首先做(16),将软件需求转化为数据结构和软件的系统结构。然后是(17),即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。
(16)A.概要设计
B.平台设计
C.体系结构设计
D.文档设计
(17)A.测试设计
B.程序没计
C.接口设计
D.详细设计
答案:(16)A (17)D
解析:软件设计的过程可以分两步完成。首先做概要设计,将软件需求转化为数据结构和软件的系统结构。然后是详细设计。即过程设计。通过对结构表示进行细化。得到软件的详细的数据结构和算法。衡量设计的技术原则有:(1)设计出来的结构应是分层结构,从而建立软件成份之间的控制。(2)设计应当模块化,从逻辑上将软件划分为完成特定功能或子功能的构件。(3)设计应当既包含数据抽象,也包含过程抽象。(4)设计应当建立具有独立功能特征的模块。(5)设计应当建立能够降低模块与外部环境之间复杂连接的接口。(6)设计应能根据软件需求分析获取的信息。建立可驱动可重复的方法。软件设计过程根据基本的设计原则,使用系统化的方法和完全的的设计评审来建立良好的设计。
● 软件开发成本主要是(18)的消耗。软件的开发成本是以(19)所花费的代价来计算的。软件开发成本的估算,应是从(20),需求分析,设计,编码,单元测试,组装测试到确认测试,整个软件开发全过程所花费的代价作为依据的。
(18)A.计算机资源
B.管理资源
C.人的劳动
D.物理参品成本
(19)A.开发维护过程
B.一次性开发过程
C.项目管理
D.软件测试
(20)A.项目建立
B.软件计划
C.获取需求
D.项目分析
答案:(18)C (19)B (20)B
解析:软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。它不包括原材料和能源的消耗。主要是人的劳动的消耗。人的劳动消耗所需代价就是软件产品的开发成本。软件产品开发成本的计算方法不同于其它物理产品成本的计算。软件的开发成本是以一次性开发过程所花费的代价来计算的。软件开发成本的估算,应是从软件计划,需求分析,设计,编码,单元测试,组装测试到确认测试,整个软件开发全过程所花费的代价作为依据的。
●对于一个大型复杂的软件项目的估算处理主要按(21)和(22)手段进行。基本估算的方法分为三类:从项目的整体出发,进行(22)的方法称为(23)估算法。把待开发的软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发总工作量的方法称为(24)估算法。而把待开发的软件项目与过去已完成的软件项目做类比,区分出类似部分和不同部分分别处理的方法称为(25)估算法。
(21)、(22)A.类推
B.比较
C.分解
D.归纳
(23) 、(25)A.自顶向下
B.自底向上
C.差别
D.专家判定技术
答案:(21)C (22)A (23)A (24)B (25)C
解析:对于一个大型的软件项目,由于项目的复杂性,开发成本的估算不是一件简单的事,要进行一系列的估算处理。主要靠分解和类推。基本估算方法分为三类:自顶向下的估算方法,自底向上的估计法。差别估计法。 自顶向下的估算方法(先估算总成本/工作量)的主要思想是从项目的整体出发。进行类推。估算人员根据以前已完成项目所消耗的总成本(或总工作量),推算将要开发的软件的总成本(或总工作量)。然后按比例将它分配到各开发任务单元中去,再来检验它是否能满足要求。
自底向上的估计法的主要思想是把待开发的软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发的总工作量。
差别估计法综合了上述两种方法的优点。其主要思想是把待开发的软件项目与过去已完成的软件项目进行类比。从其开发的各个子任务中区分出类似的部分和不同的部分。
●黑盒测试中常用的等价类划分方法是先把程序的(26)域划分成若干区间,然后从每个区间中选取少数代表性数据当作测试用例。在使用等价类划分方法时,通常会涉及到两种等价类:(27)。因果图方法是根据(28)之间的因果关系来设计测试用例的。在实际应用中,对修改后的程序重新测试称为(29)。
(26)A.判断条件
B.输出
C.结构
D.输入
(27)A.有效等价类和无效等价类
B.输入等价类和输出等价类
C.判断等价类和测试等价类
D.数据等价类和结构等价类
(28)A.主程序与子程序
B.设计与实现
C.条件与结果
D.输入与输出
(29)A.强度测试
B.验收测试
C.回归测试
D.系统测试
答案:(26)D (27)A (28)D (29)C
解析:黑盒测试中常用的等价类划分方法是先把程序的输入域划分成若干区间,然后从每个区间中选取少数代表性数据当作测试用例(由于数量太大,穷举测试一般情况下不可能实现)。在使用等价类划分方法时,通常会涉及刘两种等价类:有效等价类和无效等价类。顾名思义,有效等价类就是对程序的规格说明是有意义的合理的输入数据集;无效等价类就是对程序规格说明书不合理或无效的输入数据集。我们在设计测试用例时,要兼顾这两种情况。同时要注意一个测试用例只能覆盖一个无效等价类。这样便于错误定位,防止一个错误表征掩盖了另一个错误。因果图方法含义:仅仅将值输入,是不断验证单个数据的情况。有时候。我们需要将各个数据联系在一起考虑,从而引申出多种组合。这时候有些单个数据完好的功能就可能出现错误。回归测试是指对修改后的程序重新测试。
● 下列关于对象消息的观点,不正确的是(30)。
(30)A.键盘、鼠标等设备有变化时,就会产生消息
B.应用程序对象能向操作系统发送消息
C.应用程序对象之间不可以相互发送消息
D.发送与接收消息的对象通信机制与传统的子程序调用机制不同
答案:(30)C
解析:发送、接收消息是对象间通信的手段,对象之间可以互相发送消息。
● 面向对象技术中,对一组对象的共同特性进行抽象便得到类,类和类之间的泛化关系是指(31),聚合关系是指(32),(33)是对象的特性的表现。
(31)A.一般和具体
B.整体和部分
C.重载关系
D.多态关系
(32)A.组装关系
B.合成关系
C.封装关系
D.继承关系
(33)A.隐蔽信息
B.操作和属性相分离
C.信息开发性
D.能抽象出现实世界
答案:(31)B (32)A (33)D
解析:在实际生活中。有许多东西都具有共同的特征。例如。狗和猫都是动物。对象也可以具有共同的特征。您可以使用它们所属类之间的泛化关系来阐明这些共同特征。通过将共同特征抽取到它们所属的类中,可以在将来更容易地变更和维护系统。泛化关系是一般元素和具体元素之间的一种分类关系。具体元素与一般元素完全一致。但包含一些额外的信息。在允许使用一般元素的场合。可以使用具体元素的实例。聚合关系用于对模型元素之间的组装关系进行建模。有许多组成关系的示例:图书馆包括大量的书籍。公司部门由雇员组成,计算机由许多设备组成。如果对此进行建模。那么聚合关系体(部门)与其组成部分(雇员)之间存在聚合关系关联关系。
●CMM提供了一个框架,将软件过程改进的进化步骤组织成5个成熟度等级。除第1级外,每一级都包含了实现这一级目标的若干关键过程域,每一个关键过程域又包含若干(34)。
关键实践
B.软件过程性能
C.软件过程能力
D.软件过程
答案:(34)A
解析:关键实践(Key Practices):是指关键过程域中的一些主要实践活动。每个关键过程域最终由关键实践所组成,通过实现这些关键实践达到关键过程域的目标。一般情况下。关键实践描述了该“做什么”,但没有规定“如何”去达到这些目标。
●在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,(35)是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
A.业务需求
B.功能要求
C.非功能需求
D.用户需求
答案:(35)C
解析:软件需求包括三个不同的层次-业务需求、用户需求和功能需求(也包括非功能需求)。作为功能需求的补充。软件需求规格说明还应包括非功能需求。它描述了系统展现给用户的行为和执行的操作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节,性能要求;设计或实现的约束条件及质量属性。所谓约束是指对开发人员在软件产品设计和构造上的限制。质量属性是通过多种角度对产品的特点进行描述。从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。
●(36)意味着一个操作在不同的类中可以有不同的实现方式。
A.多态性
B.多继承
C.类的复用
D.封装
答案:(36)A
解析:多态性是指用一个名字定义不同的函数,这函数执行不同但又类似的操作,从而实现“一个接口,多种方法”。多态性的实现与静态联编、动态联编有关。静态联编支持的多态性称为编译时的多态性,也称静态多态性。它是通过函数重载和运算符重载实现的。动态联编支持的多态性称为运行时的多态性。也称动态多态性。它是通过继承和虚函数实现的。
●在面向对象的系统中,系统责任的良好分配原则是(37)。
(37)A.在类之间均匀分配
B.集中分配在少数控制类中
C.根据交互图的消息进行分配
D.根据个人喜好进行分配
答案:(37)B
解析:在面向对象的系统中,根据交互图的消息进行分配便可以对系统责任进行良好的分配。
●软件配置项是软件配置管理的对象,即软件工程过程中产生的(38)。
(38)A.接口
B.软件环境
C.信息项
D.版本
答案:(38)C
解析:Pressman对于配置项(Software Configuration Item,SCI)给出了一个比较简单的定义:“软件过程的输出信息可以分为三个主要类别:(1)计算机程序(源代码和可执行程序),(2)描述计算机程序的文档(针对技术开发者和用户)。以及(3)数据(包含在程序内部或外部)。这些项包含了所有在软件过程中产生的信息,总称为软件配置项。”
●软件测试计划开始于需求分析阶段,完成于(39)阶段。
(39)A.需求分析
B.软件设计
C.软件实现
D.软件测试
答案:(39)C
解析:软件测试计划开始于需求分析阶段,在软件实现阶段完成。
● 图形常用作软件开发过程中的描述工具。DFD就是面向(40)分析方法的描述工具。在一套分层DFD中,若某一张图中有N个加工(process),则这张图允许有(41)张子图。在一张DFD图中,任意两个加工之问(42)。在画分层DFD时,应注意保持(43)之间的平衡。DFD中从系统的输入流到系统的输出流的一连串连续变换形成一种信息流,这种信息流可分为(44)两大类。
供选择的答案: (40)A.数据结构
B.数据流
C.对象
D.构件(component)
(41)A.O~N
B.0
C.1~N
D.1
(42)A.有且仅有一条数据流
B.至少有一条数据流
C.可以有0或多条名字互不相同的数据流
D.可以有0或多条数据流,但允许其中有若干条名字相同的数据流
(43)A.同一子图的所有直接父图
B.同一父图的所有子图
C.不同父图的所有子图
D.父图与子图
(44)A.事务流和事件流
B.变换流和事务流
C.控制流和变换流
D.事件流和控制流
答案:(40)B (41)A (42)C (43)A (44)B
解析:数据流程图(Data Flow Diagram)是面向数据流分析方法的描述工具。它面对的是系统的信息流程。把信息流看作一个组织或系统运作的线索,简明扼要地勾画出全局,基本元素是外部实体,以箭头表示信息在它们之间的流动状况。在一套分层DFD中,如果某一张图中有N个加工(process)。则这张图允许有0~N张子图,任意两个加工之间可以有0或多条名字互不相同的数据流。在画分层DFD时,应注意保持父图与子图之间的平衡。DFD中从系统的输入流到系统的输出流的一连串连续变换形成变换流和事务流。
● 软件设计要综合考虑软件的可靠性,易维护性,可扩充性,可移植性等。其中理解、改正、改进软件的难易度称为软件的易维护性。通常影响软件易维护性的因素有易理解性、(45)和易测试性。在软件的开发过程中往往采取各种措施来提高软件的易维护性。如采用(46)有助于提高软件的易理解性;(47)有助于提高软件的(45)。在软件质量特性中,(48)是指在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性;(49)是指防止对程序及数据的非授权访问的能力。
(45)A.易恢复性
B.易使用性
C.易替换性
D.易修改性
(46)A.增强健壮性
B.信息隐蔽原则
C.良好的编程风格
D.高效的算法
(47)A.改进算法
B.信息隐蔽原则
C.增强健壮性
D.身份认证
(48)A.准确性
B.正确性
C.可靠性
D.易使用性
(49)A.安全性
B.适应性
C.灵活性
D.容错性
答案:(45)D (46)C (47)B (48)C (49)A
解析:软件的易维护性是指理解、改正、改进软件的难易度。通常影响软件易维护性的因素有易理解性、易修改性和易测试性。采用良好的编程风格有助于提高软件的易理解性;采用信息隐蔽原则有助于提高软件的易修改性。在软件质量特性中。可靠性是指在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性;安全性是指防止对程序及数据的非授权访问的能力。
● (50)工具是指用来辅助软件开发、运行、维护、管理、支持等过程中的活动的开发工具软件。
(50)A.CAD
B.CASE
C.CAM
D.CAI
答案:50(B)
解析:CAD是计算机辅助设计、CAl是计算机辅助教学、CAM是计算机辅助制造,只有CASE是计算机辅助软件工程。
● 常见的集成软件开发环境(IDE)通常由工具集和环境集成机制组成。这种环境的特点是(51)。环境集成机制主要有数据集成机制、控制集成机制和界面集成机制。数据集成机制为环境中的工具提供统一的(52);控制集成机制为(53)提供支持。界面集成机制使得环境中的所有工具具有(54)。
(51)A.可剪裁性和开放性
B.不可剪裁性和开放性
C.可剪裁性和封闭性
D.不可剪裁性和封闭性
(52)A.数据类型
B.数据接口规范
C.数据模式
D.数据仓库
(53)A.各工具之间的同步开发
B.使各工具具有统一的控制结构
C.使各工具具有统一的控制接口
D.各工具之间的通信、切换、调度和协同工作
(54)A.相同的图标和图标的含义
B.同一个界面
C.统一的界面风格和操作方式
D.相同个数的窗口和菜单
答案:5l(A) 52(B) 53(D) 54(C)
解析:集成软件开发环境(IDE)是把一组相关的工具集成在环境中,提供数据集成、控制集成和界面集成等机制。其中,数据集成环境:提供统一的数据模式和数据接口规范,需要相互协同的工具通过这种统一的规范交换数据。数据集成可由共享文件、共享数据结构或共享信息库等不同的层次;控制集成机制:支持各工具或各开发活动之间的通信、切换、调度和协同工作,并且支持软件开发过程的描述、执行和转接;通常消息传送的方式实现控制的集成。界面集成机制使这些工具具有统一的界面风格。从而为软件开发、维护、管理等过程的各项活动提供连续的、一致的全方位支持。集成型软件开发环境由工具集和环境集成机制组成,这种环境应该具有开放性和可剪裁性。
. ●不同的软件开发模型会对软件开发产生不同的影响。演进模型是在快速开发一个(55)基础上,逐步演化最终的软件。
(55)A.伪代码
B.框架
C.原型
D.主程序
答案:55(C)
解析:演化模型是在快速开发一个原型的基础上,逐步演化成最终的软件。
●螺旋模型是常见的软件开发模型,它综合了(56)的优点,并增加了(57)。
(56)A.原型和喷泉模型
B.瀑布模型和喷泉模型
C.演化模型和喷泉模型
D.瀑布模型和演化模型
(57)A.风险分析
B.进度控制
C.版本控制
D.质量评价
答案:56(D) 57(A)
解析:螺旋模型综合了瀑布模型和演化模型的优点并增加了风险分析。它在每个阶段开始前都进行风险的评估。阶段内按照瀑布模型进行开发。并且前一阶段的结束是后一阶段的开始,这就结合了演化模型的优点。
增量模型与喷泉模型具有一定的相似性,但是喷泉模型描述的是面向(58)的开发过程,反映了该开发过程的(59)特征。
(58)A.数据流
B.数据结构
C.对象
D.构件(component)
(59)A.无迭代和有问隙
B.无迭代和无间隙
C.迭代和有间隙
D.迭代和无间隙
答案:58(C) 59(D)
解析:喷泉模型具有更多的增量和迭代性质。生存期的各个阶段可以相互重叠和多次反复。而且在项目的整个生存期中还可以嵌入子生存期。
●在面向对象技术中的通用多态指的是(60)多态和(61)多态,特定多态指的是过载多态和(62)多态。
(60)~(61)A.参数
B.过载
C.包含
D.重置
(62)A.参数
B.隐含
C.强制
D.包含
答案:(60)A(61)C (62)C
解析:参数多态指的是参数不同而方法名相同的一些方法,它们之间依靠参数区分。包含多态最常见的例子就是子类化,即一个类是另一个类的子类。强制多态是通过语义操作把一个变元的类型加以变换。以符合某个函数对类型的要求。
●在表示多个数据流与加工之间关系的符号中,下列符号分别表示(63)和(64)。
(63)A.若A,则((B或c或D)或(B与C与D))
B.若A或B或C,则D
C.若A与B与c,则D
D.若D,则(A或B或c)但非(B与c)
(64)A.若A,则((B或c)或(B与C))
B.若A或B,则c
C.若A与B,则c
D.若A,则(B或c)但非(B与C)
答案:(63)C (64)A
解析:本题考查了数据流图的知识。符号*表示数据流同时出现,符号0表示相邻数据流只取其一。
● 详细设计是软件系统结构设计的重要组成部分,以下选项中属于详细设计的是(65)。(65)A.把软件划分成模块
B.确定模块之间的调用关系
C.确定各个模块的功能
D.设计每个模块的伪代码
答案:(65)D
解析:前三项都是概要设计的内容。
●测试的目的是寻找错误的原因并改正之。如果一个软件是给许多客户使用的,大多数软件厂商要使用几种测试过程来发现那些可能只有最终用户才能发现的错误。(66)测试是由一个用户在开发者的场所来进行的。(67)测试是由软件的最终用户在一个或多个用户实际使用环境下来进行的。
(66)~(67)A.alpha
B.beta
C.gamma
D.delta
答案:(66)A (67)B
解析:alpha测试是由一个用户在开发者的场所来进行的,软件在开发者对用户“指导”下进行测试,开发者负责记录错误和使用中出现的问题。beta测试是由软件的最终用户在一个或多个用户实际使用环境下来进行的,开发者通常不在现场。
● 软件危机主要表现在两方面:一力面是无法满足日益增长的对软件的需求;另一方面是难以满足对已有的软件系统的维护需要。(68)是造成软件危机的主要原因。
①软件本质属性②用户不会使用③硬件不稳定
④对软件的错误看法⑤缺乏好的管理方法和手段⑥开发效率低
(68)A.①⑤⑥
B.①②④
C.③⑤⑥
D.②⑤⑥
答案:(68)A
解析:造成软件危机的原因有两种复杂性,一种是非根本复杂性,一种是根本复杂性。非根本复杂性来自不适合于应用软件的范型、方法学和工具。根本复杂性是软件危机的真正原因,其原因来自于这一事实:软件本质上是复杂的。没有哪种方法学或者工具可以消除这一复杂性。
●原型化(Prototyping)方法所具有的特征是(69)。与结构化力‘法相比,原型化方法更需要(70)。衡量原型开发人员能力的重要标准是(71)。
(69)A.提供严格定义的文档
B.制定详细的需求
C.精确项目管理
D.加强用户参与和决策
(70)A.较长的开发时问
B.完整的生命周期
C.熟练的开发人员
D.明确的需求定义
(71)A.需求获取速度
B.灵活使用开发T具
C.协调组织能力
D.编程技巧
答案:(69)D (70)B (71)D
解析:原型化方法的基本思想是根据用户给出的基本需求。通过快速实现构造出一个小型的、可执行的模型,用户在计算机上实际运行这个用户界面原型,在试用过程中提出意见或建议,然后开发者再对原型进行改进。如此周而复始,逐步弥补不足之处,从而提高了最终产品的质量。它是一种自外向内的设计过程。衡量原型开发人员能力的重要标准不是开发技巧或组织能力,而是能否快速获取需求。
● 软件能力成熟度模型CMM(Capability Maturity Model)是组织进行软件过程改善和软件过程评估的一个有效的指导框架。它描述和分析了软件过程能力的发展与改进的程度,确立了一个软件过程成熟程度的分级标准。在初始级,软件过程定义几乎处于无章法可循的状态,软件产品的成功往往依赖于个人的努力和机遇。在(72),已建立了基本的项目管理过程,可对成本、进度和功毙特性进行跟踪。在已定义级,用于软件管理与工程两方面的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。在(73),对软件过程和产品质量有详细的度量标准。在(74),通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地对过程进行改进。
(72)A.成本级
B.功能级
C.管理级
D.可重复复级
(73)A.标准级
B.已管理级
C.可再复级
D.优化级
(74)A.过程级
B.管理级
C.优化级
D.分析级
答案:(72)D (73)B (74)C
解析:软件能力成熟度模型被国际软件界公认为是软件工程学的一项重大成果。它既可用来科学地评价软件开发单位的软件能力成熟度等级,也可用来帮助软件开发单位进行自检,了解自己的强项和弱项,从而不断完善单位的软件开发过程,确保软件质量,提高软件开发效率。它共分五级,依次是初始级、可重复级、已定义级、已管理级、优化级。
● 系统中模块的(75)指如果模块内出现异常情况,并且它的影响限制在模块内部,则错误弓I起的副作用就会被最小化。
(75)A.可分解性
B.保护性
C.可理解性
D.连续性
答案:(75)B
解析:Meyer定义了合理模块的五个标准:可分解性、保护性、可理解性、连续性、可组装性。模块可分解性是指如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。模块保护性是指如果模块内出现异常情况,并且它的影响限制在模块内部,则错误引起的副作用就会被最小化。模块可理解性是指如果一个模块可以作为一个独立的单位(不用参考其他模块)被理解,那么它就易于构造和修改。模块连续性是指在程序中进行小的修改的能力以及使这些修改在仅仅一个或很少的几个模块中发生对应修改下的反应,则修改引起的副作用就会被最小化。模块可组装性是指如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不是一切从头开始的模块化解决方案。
● 下面关于面向对象方法中消息的叙述中,正确的是(76)。
(76)A.键盘、鼠标、通信端口、网络等设备一旦发生变化,就会产生消息
B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息
C.应用程序之间不能相互发送消息
D.发送与接收消息的通信机制与传统的子程序调用机制相同
答案:(76)A
解析:消息是对象间互相联系的手段,消息刺激接收对象产生某种行为,通过操作的执行来完成相应行为。操作系统不断向应用程序发送消息,应用程序也能向操作系统发送消息。应用程序之间能相互发送消息。发送与接收消息的通信机制与传统的子程序调用机制不同。
●面向对象技术中,对象是由(77)、属性和方法(或操作)组成的。
(77)A.标识
B.规则
C.封装
D.消息
答案:(77)A
解析:对象有三种成份:标识、属性和方法(或操作)。每个对象都有自己的属性值,表示该对象的状态。对象中的属性只能够通过该对象所提供的操作来存取或修改。操作也称为方法或服务,它规定了对象的行为,表示对象所提供的服务。
◆C++语言将类的成员封装在类体之中,使之具有一定的存取规则,这些规则规定了存取类的成员的权利,其中,对于用private说明的成员,它(78)。
(78)A.既能被该类的成员函数访问,又能被外界直接访问
B.不能被该类的成员函数访问,只能被外界直接访问
c.只能被该类的成员函数访问,外界不能直接访问
D.既不能被该类的成员函数访问,也不能被外界直接访问
答案:(78)C
解析:按照被访问权限其成员可以分成public(公用的)、private(私用的)、protected(保护的)。其中public修饰的成员。外界可以直接访问。对于private修饰的成员只能被该类的成员函数访问,外界不能直接访问。
● 软件开发的螺旋模型比瀑布模型和演化模型增加了(79)。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对(80)进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个(81)。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。
(79)A.版本管理
B.可行性分析
C.风险分析
D.系统集成
(80)A.工程
B.风险
C.计划
D.系统
(81)A.概念项目
B.原型项目
C.改进项目
D.风险项目
答案:(79)C (80)B (81)A
解析:软件开发的螺旋模型综合了瀑布模型和演化模型的优点。还增加了风险分析,每转一圈都要对风险进行识别和分析,螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了。新产品的演化沿着螺旋线进行若干次迭代。一直运转到软件生命期结束。
● 以下规则中不符合程序模块优化原则的是(82)。如果一个模块调用下层模块时传递一个数据结构,则这种耦合属于(83)。
(82)A.通过模块的合并和分解,降低模块的耦合度,提高模块的内聚性
B.提高上层模块的扇出,减少模块调用的层次
C.将模块的作用范围限制在模块的控制范围之内
D.降低模块之间接口的复杂性,避免“病态连接”
(83)A.控制耦合
B.直接耦合
C.简单耦合
D.标记耦合
答案:(82)B (83)D
解析:(1)关于程序模块优化的启发式规则有若干条:评估程序结构的“第一次迭代”以降低耦合并提高内聚;试图用高扇出使结构最小化;当深度增加时争取提高扇入;将模块的影晌限制在模块的控制范围内;评估模块接口以降低复杂度和冗余并提高一致性:定义功能可以预测的模块。但要避免过分限制的模块;力争“受控入口”模块,避免“病态连接”;根据设计约束和可移植性需求。对软件进行打包。答案A、C、D都符合上述准则,若要减少模块调用的层次即当深度增加时,应该争取提高扇入,所以答案8不符合原则。(2)一个数据结构的一部分借助于模块接口被传递是标记耦合。两个模块之间的耦合方式有七种:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合.公共藕合、内容耦合。
●软件设计包括四个既独立又相互联系的活动,分别为体系结构设计、(84)、(85)和过程设计。
(84)A.文档设计
B.程序设计
C.实用性设计
D.接口设计
(85)A.用户手册设计
B.语言设计
C.数据设计
D.文档设计
答案:(84)D (85)C
解析:设计模型可以表示成金字塔,这种形状的象征意义是重要的。金字塔是极为稳固的物体,它具有宽大的基础和低的重心。象金字塔一样,我们希望构造坚固的软件设计。我们通过用数据设计建立宽广的基础。用体系结构和接口设计建立坚固的中部。以及应用过程设计构造尖锐的顶部,从而创建出不会被修改之风轻易“吹倒”的设计模型。
● 系统论认为系统具有多元性、相关性以及整体性,系统是“相互作用的多个元素的复合体”,其中系统思想的核心是(86)。
(86)A.动态性
B.多元性
C.相关性
D.整体性
答案:(86)D
解析:系统思想的核心是整体性。
●SEl提出的CMM模型将软件过程的成熟度分为5个等级,以下选项中,属于可管理级的特征是(87)。
(87)A.建立了企业级的管理制度
B.建立了项目级的管理制度
C.软件过程中活动的生产率和质量是可度量的
D.工作无序,项目进行过程中经常放弃当初的计划
答案:(87)C
解析:美国卡内基一梅隆大学SEl的CMM模型提供了衡量一个公司软件工程实践的整体有效性的方法,且建立了五级的过程成熟度级别。第一级:初始级,第二级:可重复级,第三级:定义级,第四级:管理级,第五级:优化级。第四级管理级是指软件过程和产品质量的详细度量数据被收集,通过这些度量数据,软件过程和产品能够被定量地理解和控制。此级包含了第三级的所有特征。根据各选项应选择答案C。
●在面向对象技术中,类属可看作是一种(88)。一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与(89)的那些部分,而用变元来表示与(90)的那些部分。 (88)A.强制多态
B.过载多态
C.参数多态
D.包含多态
(89)A.具体变量无关
B.具体类型相关
C.具体变量相关
D.具体类型无关
(90)A.具体变量无关
B.具体类型相关
C.具体变量相关
D.具体类型无关
答案:(88)C (89)B (90)D
解析:在面向对象技术中。类属是一种参数多态机制。对象在收到消息后要做出响应,不同的对象收到同一消息可产生完全不同的结果,这一现象称为多态。多态有多种不同形式。其中参数多态和包含多态成为通用多态。过载多态和强制多态成为特定多态。参数多态应用比较广泛,被称为最纯的多态。类属类(generic class)仅描述了适用于一组类型的通用样板。是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与具体内容无关的那些部分。而用变元来表示与具体类型相关的那些部分。由于其中所处理的对象的数据类型尚未确定,因而程序员不可用类属类直接创建对象实例,即一个类属类并不是一种真正的类类型。
●以下选项中不属于Charette提出的在软件工程的环境中考虑风险三个概念的是(91)。项目风险关系着项目计划的成败,(92)关系着软件的生存能力。在进行软件工程风险分析时,项目管理人员要进行四种风险评估活动,这四种活动是(93)以及确定风险估计的正确性。
(91)A.关心未来
B.关心变化
C.关心技术
D.关心选择
(92)A.资金风险
B.技术风险
C.商业风险
D.预算风险
(93)A.建立表示风险概率的尺度,描述风险引起的后果,估计风险影响的大小
B.建立表示风险概率的尺度,描述风险引起的后果,确定产生风险的原因
C.确定产生风险的原因,描述风险引起的后果,估计风险影响的大小
D.建立表示风险概率的尺度,确定产生风险的原因,估计风险影响的大小
答案:(91)C (92)C(93)A
解析:P Robert Charette在他关于风险分析和驾驭的书中对风险的概念给出了如下的定义:”首先。风险关系到来来发生的事情。今天和昨天积极考虑已经过晚,因为我们今天收获的是以前的活动播下的种子。问题是,能否通过改变今天的活动为我们自身的明天创造一个完全不同的充满希望的美好前景。其次。风险会发生变化。就象爱好、意见、动作或地点会变化一样……。第三。风险导致选择。而选择本身将带来不确定性。因此,风险就象死亡那样。是一个其生命很少确定性的东西。”当在软件工程的环境中考虑风险时。Charette的这3个概念就成为讨论的基础。首先是关心未来一一风险是否会导致软件项目失败?其次是关心变化一一在用户需求、开发技术、目标机器、以及所有其他与项目及时工作和全面完成有关的实体中会发生什么样的变化?最后,必须解决选择问题——应采用什么方法和工具。应配备多少人力,在质量上强调到什么程度才满足要求?
项目风险是指潜在的预算、进度、人力(工作人员及组织)、资源、客户、及需求等方面的问题以及它们对软件项目的影晌。技术风险威胁到要开发软件的质量及交付时间。商业风险威胁到要开发软件的生存能力。商业风险常常会危害项目或产品。五个主要的商业风险是:(1)市场风险;(2)策略风险;(3)建造了一个销售部门不知道如何去卖的产品;(4)管理风险;(5)预算风险。
在进行软件工程风险分析时。项目管理人员要进行四种风险评估活动。这四种活动是建立表示风险概率的尺度。描述风险引起的后果,估计风险影响的大小,标注风险预测的整体精确度,以免产生误解。
● 软件的互操作性的含义是(94)。
(94)A.软件的可移植性
B.人机界面的可交互性
C.多用户之间的可交互性
D.连接一个系统和另一个系统所需的工作量答案:(94)D
解析:互操作性是指不同的计算机系统、网络、操作系统和应用程序一起工作并共享信息的能力。
● 面向对象的测试可分为四个层次,由高到低分别是(95)。
(95)A.类层—模板层一系统层一算法层
B.系统层一模板层一类层一算法层
C.算法层一模板层一类层一系统层
D.类层一系统层一模板层一算法层
答案:(95)B
解析:各层含义是:系统层,测试面向对象系统;模板层,测试对象集群;类层,测试单个对象类;算法层,测试与对象美联的单个操作。
◆原型法有其适用场合,有些情况并不适合使用,以下选项中不能使用快速原型法的情况是(96)。
(96)A.系统的使用范围变化很大
B.系统的设计方案难以确定
C.用户的数据资源缺乏组织和管理
D.用户的需求模糊不清
答案:(96)C
解析:原型法的主要优点在于它是一种支持用户的方法,使得用户在系统生存周期的设计阶段起到积极的作用;它能减少系统开发的风险,特别是在大型项目的开发中,由于对项目需求的分析难以一次完成,应用原型法效果更为明显。但是不适合用户的数据资源缺乏组织和管理的情况。
●最适合用交互式计算机软件解决的问题是(97)。
(97)A.非结构化决策问题
B.结构化决策问题
C.半结构化决策问题
D.确定性问题
答案:(97)C
解析:在各单位管理决策中所面临的问题,往往是目标含糊不清,多个目标相互冲突,方案的比较和选择没有固定规则或程序可循,所需信息不全或比较模糊的问题,这类决策问题,称为半结构化决策问题。处理半结构化决策问题,就意味着决策过程不能完全用一种算法、程序模糊型概略说明。不能完全依靠计算机系统。它需人机的交互作用。
● (98)将软件组织的过程能力分为五个成熟度级别,每一个级别定义了一组过程能力目标,并描述了要达到这些目标应该具备的实践活动。
(98)A.TSP
B.PSP
C.CMM
D.SSE-CMM
答案:(98)C
解析:CMM是能力成熟度模型(capability Maturity Model)的缩写。是一种用于评价软件承包能力并帮助其改善软件质量的方法。侧重于软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级。二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。CMM是由美国卡内基梅隆大学软件工程研究所1987年研制成功的。是目前国际上最流行最实用的软件生产过程标准和软件企业成熟度等级认证标准。目前,我国已有软件企业通过了CMM标准认证。
●从软件生存周期阶段划分的角度,与瀑布模型最相适应的软件开发方法是(99)。
(99)A.构件化方法
B.结构化方法
C.面向对象方法
D.快速原型方法
答案:(99)B
解析:结构化开发方法的生存周期划分与瀑布模型相对应。因此是与其最相适应的软件开发方法。
● 下述任务中,软件工程需求分析阶段不需要完成的是(100)。
(100)A.分析软件系统的数据要求
B.确定软件系统的性能要求
C.确定软件系统的功能需求
D.确定软件系统的运行平台 答案:(100)D
解析:软件工程需求分析阶段的工作主要有:分析软件系统的数据要求;确定软件系统的功能需求和非功能需求:确定系统的逻辑模型:修正项目的开发计划等。
●软件设计可分为概要设计和详细设计。软件设计的主要任务是设计软件的结构,过程和模块,其中软件结构设计的主要任务是要确定(101)。
(101)A.模块问的相似性
B.模块问的操作细节
C.模块问的组成关系
D.模块的具体功能
答案:(101)C
解析:软件设计可分为概要设计和详细设计。概要设计的任务是确定整个软件系统的结构,划分各模块,确定模块的功能、接口以及模块间的调用关系。设计软件系统结构的主要目的是确定模块间的组成关系。
●系统测试是将软件系统与硬件、外设和网络等其他因素结合,对整个软件系统进行测试。系统测试不包括(102)。
(102)A.安全测试
B.可靠性测试
C.安装测试
D.路径测试
答案:(102)D
解析:系统测试是针对整个产品的全面测试,既包含各模块的验证性测试(验证前两个阶段测试的正确性)和功能性(产品提交个用户的功能)测试,又包括对整个产品的健壮性、安全性、可维护性及各种性能参数的测试。路径测试是白盒测试的内容。不属于系统测试。
● (103)将网络方法用于项目管理工作计划安排的评审和检查。
(103)A.Gantt图
B.PERT网图
C.因果分析图
D.流程图 答案:(103)B
解析:PERT。即Program Evaluation Review Technique,称之为“计划评审技术”,是l958年在安排和控制北极星导弹过程中,由美国海军特别项目办公室倡导发展起来的一种管理手段。它的基本原理是:用网络来表示生产和工作的进度,计算各项活动(也称作业或工序)的有关时间参数,使管理者对全局有一个比较完整清晰的了解,并通过网络分析制定日程计划,以求得完工期、资源和成本的优化方案。在PERT中。用一条有向边表示一项活动,有向边的权数即为此活动要消耗的时间和资源,节点表示事件,即有向边的始点和终点分别表示活动的开始和结束,活动的开始和结束均表示了流程的状态。每项活动所需要的时间用三点估计法来估测,即由非常熟悉该活动的人员估计三个值;最乐观时间、最可能时间、最悲观时间。需要这三个时间估算值作为活动的不确定的度量标准,并代表人们对非标准的开发性方案中大部分活动的全部认识。根据这三个时间值可以期望时间值(TE)、方差(σ2)和标准差(盯)。需要用最大的期望时间值来完成的活动和事件的序列叫关键路线。关键路线的识别将有利于管理人员对整个流程的控制和优化。PERT网络除了用于基于时间的关键路线分析外,扩展的计划评审技术还用于时间费用、时间一人力的权衡和优化。PERT网主要用于生产和工艺流程。
● 结构化分析方法中,数据字典是关于数据的信息集合。其中对加工的描述是数据字典的组成内容之一,常用的加工描述方法(104)。
(104)A.有结构化语言、判定树和判定表
B.有结构化语言和判定树
C.只有结构化语言
D.有判定树和判定表
答案:(104)C
解析:数据字典是关于数据的信息集合。也就是对数据流图中包含的所有元素的定义的集合。它由对下列四类元素的定义组成:(1)数据流(2)数据流分量(数据元素)(3)数据存储(4)处理(加工)。常用的加工描述方法有结构化语言、判定树和判定表。
● CMM能力成熟度模型将软件过程的成熟度分为5个等级。使用定量分析来不断地改进和管理软件过程是在(105)。
(105)A.优化级
B.管理级
C.定义级
D.可重复级
答案:(105)A
解析:CMM是能力成熟度模型(capability Maturity Model)的缩写,是一种用于评价软件承包能力并帮助其改善软件质量的方法,侧重于软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级。四级为已管理级,五级为优化级。在初始级,企业一般不具备稳定的软件开发与维护的环境。常常在遇到问题的时候。就放弃原定的计划而只专注于编程与测试。可重复级Repeatable Level在这一级,建立了管理软件项目的政策以及为贯彻执行这些政策而定的措施。基于过往的项目的经验来计划与管理新的项目。定义级Defined Level在这一级,有关软件工程与管理工程的一个特定的、面对整个企业的软件开发与维护的过程的文件将被制订出来。同时。这些过程是集成到一个协调的整体。这就称为企业的标准软件过程。第四级:管理级Managed Level在这~级,企业对产品与过程建立起定量的质量目标。同时在过程中加入规定得很清楚的连续的度量。作为企业的度量方案。要对所有项目的重要的过程活动进行生产率和质量的度量。软件产品因此具有可预期的高质量。第五级:优化级Optimizing Level在这个等级。整个企业将会把重点放在对过程进行不断的优化。企业会采取主动去找出过程的弱点与长处,以达到预防缺陷的目标。同时,分析有关过程的有效性的资料,做出对新技术的成本与收益的分析。以及提出对过程进行修改的建议。
● 面向数据流的设计方法中,数据流图中的数据流一般可划分为(106)。 (106)A.数据流和事务流
B.变换流和数据流
C.变换流和事务流
D.控制流和事务流
答案:(106)C
解析:面向数据流的设计方法是一种概要设计技术,根据需求阶段对数据流的分析设计软件的总体结构。数据流的类型有变换流,其特点是数据进入系统,以顺序的方式经过输入一变换一输出。事务流,其特点:数据进入系统,到达事务中心,根据数据计算结果从若干动作路径中选择一条路径离开事务中心。
● UML的各种图中,(107)用于接口、类和协作的行为建模,并强调对象行为的事件顺序:可以采用(108)对逻辑数据库模式建模;(109)用于系统的功能建模,并强调对象问的控制流。
(107)A.协作图
B.对象图
C.序列网
D.状态图
(108)A.用例图
B.类图
C.活动图
D.构件图
(109)A.状态图
B.用例图
C.活动图
D.类图
答案:(107)D (108)B (109)C
解析:状态图显示一个由状态、转换、事件和活动组成的状态机。用状态图显示系统的动态视图。状态图对接口、类或协作的行为建模是非常重要的。状态图强调一个对象按事件次序发生的行为。类图是显示一组类、接口、协作以及它们之间关系的图。类图用于对系统的静态设计视图建模。活动图显示从活动到活动的流。活动匿对系统的功能建模是非常重要的。活动图强调对象之间的控制流。
●通过(110)机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现,这句话指的是重置。
(110)A.静态绑定
B.动态绑定
C.类型匹配
D.对象引用
答案:(11O)B
解析:重置(overriding)的基本思想是通过动态绑定机制的支持,使得子类在继承父类界面定义的前提下。用适合于自己要求的实现去置换父类中的相应实现。
●OMT定义了三种模型来描述系统。(111)可以用数据流图来表示;(112)可以用状态图来表示;(113)为上述两种模型提供了基本的框架。
(111)A.对象模型
B.功能模型
C.动态模型
D.类模型
(112)A.对象模型
B.功能模型
C.动态模型
D.类模型
(113)A.对象模型
B.功能模型
C.动态模型
D.类模型
答案:(111)B (112)C (113)A
解析:OMT是一种通过模型来思考问题的方法。这些模型都是围绕着真实世界的概念建立的。0MT方法提供了一组面向对象的概念及图形符号。然后利用这些概念及符号来分析需求、设计系统、实现。它适应于整个软件的开发过程。OMT方法是一种思考问题的方法。而不仅仅是一种编程技术。OMT的方法是从三个相关但体现系统不同方面的角度去对一个系统进行建模,得到的三种模型分别是对象模型、动态模型和功能模型。每一种模型描述系统的一个方面。对象模型代表了系统静态的结构。动态模型代表了系统随时间变化的、行为的、控制的方面。功能模型代表了系统的功能的方面。这三种模型不是完全独立的。每一种模型都包含对其它模型的引用。系统也不是各独立部分的组合。
●动态规划策略的最优性原理,其含义是(114)。
(114)A.当前所做出的决策不会影响后面的决策
B.原问题的最优解包含其子问题的最优解
C.问题可以找到最优解,但利用贪心法不能找到最优解
D.每次决策必须是当前看来最优的决策才可以找到最优解
答案:(114)B
解析:动态规划是对最优化问题的一种新的算法设计方法。由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的没计法对不同的问题。有各具特色的表示方式。动态规划策略设计算法利用问题的最靛子结构性质,以自底向上的方式递归地从子问题的最优解逐步构造出整个问题的最优解。