
软件工程课后习题(无答案)
软件工程课后习题(无答案)
第一章
选择题
(1) 下列说法中正确的是( )。
A. 20世纪50年代提出了软件工程的概念
B. 20世纪60年代提出了软件工程的概念
C. 20世纪70年代出现了客户机/服务器技术
D. 20世纪80年代软件工程学科达到成熟
(2) 产生软件危机的主要原因是( )。
A. 软件工具落后
B. 软件生产能力不足
C. 实施严格的版本控制
D. 软件本身的特点及开发方法不满足
(3) 软件工程的三要素是( )。
A. 技术、方法和工具
B. 方法、对象和类
C. 方法、工具和进程
D. 过程、模型和方法
(4) 在下列选项中,( )不属于软件工程学科所要研究的基本内容。
A. 软件工程材料
B. 软件工程方法
C. 软件工程原理
D. 软件工程过程
判断题
- 软件就是程序,编写软件就是编写程序。( )
- 软件危机的主要表现是软件需求增加,软件价格上升。( )
- 软件工程学科出现的主要原因是软件危机出现。( )
- 软件工程工具的作用是为了延长软件产品的寿命。( )
填空题
- 软件危机是指人们在____和____过程中遇到的一系列问题。
- 忽略软件开发前期的____是造成软件危机的一大原因。
- 开发出来的软件产品不能满足用户的需求,即产品的功能或特性与____并不符合。
- 软件工程分为工具层、方法层、过程层、____ 。
- 软件工程第一次提出在____ 举办的学术会议上。
第二章
选择题
(1)增量模型本质上是一种( )。
A. 线性顺序模型
B. 整体开发模型
C. 非整体开发模型
D. 螺旋模型
(2)软件过程是( )。
A. 特定的开发模型
B. 一种软件求解的计算逻辑
C. 软件开发活动的集合
D. 软件生命周期模型
(3)软件生命周期模型不包括( )。
A. 瀑布模型
B. 用例模型
C. 增量模型
D. 螺旋模型
(4) 包含风险分析的软件过程模型是( )。
A. 螺旋模型
B. 瀑布模型
C. 增量模型
D. 喷泉模型
(5) 软件工程中描述生命周期的瀑布模型一般包括需求分析、设计、编码、( )、维护等几个阶段。
A. 产品发布
B. 版本更新
C. 可行性分析
D. 测试
(6) 软件开发的瀑布模型中,一般认为可能占用开发人员最多的阶段是( )。
A. 分析阶段
B. 设计阶段
C. 编码阶段
D. 测试阶段
(7) 螺旋模型综合了( )的优点,并增加了风险分析。
A. 增量模型和喷泉模型
B. 瀑布模型和快速原型模型
C. 瀑布模型和喷泉模型
D. 快速原型模型和喷泉模型
判断题
(1) 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。( )
(2) 螺旋模型在瀑布模型和增量模型的基础上增加了风险分析。( )
(3) 软件工程过程应该以软件设计为中心,关键是编写程序。( )
(4) 极限编程属于增量模型。( )
填空题
(1) 螺旋模型是____模型和____模型的结合。
(2) 基于组件的开发模型充分体现了____的思想。
(3) 统一软件开发过程模型是基于____思想的软件开发模型。
(4) 喷泉模型是典型的____模型,具有较好的可移植性。
(5) 采用RUP,可以从初始开始不断____,可以多次执行各个工作流程。
第三章
选择题
(1)可行性研究也称为( )。
A. 技术可行性研究
B. 操作可行性研究
C. 经济可行性研究
D. 项目论证
(2)( )研究往往是系统开发过程中难度最大的工作,也是可行性研究的关键。
A. 技术可行性
B. 操作可行性
C. 经济可行性
D. 风险可行性
(3)研究软硬件资源的有效性是进行( )研究的一方面。
A. 技术可行性
B. 经济可行性
C. 社会可行性
D. 操作可行性
(4)软件开发计划是软件工程中的一种( )性文档。
A. 技术
B. 管理
C. 检索
D. 文献
判断题
(1)软件开发计划是软件工程中的一种技术性文档。( )
(2)可行性研究过程也称为项目论证过程。( )
(3)投资回收期越长,获得利润就越快,项目就越值得开发。( )
(4)代码行技术是成本估算技术的一种。( )
填空题
(1)可行性研究的结论有3种:、、____ 。
(2)经济可行性研究主要研究开发和运行需要的____ 和得到的____ 。
(3)计划可行性研究主要是估计项目完成所需要的____ 并评估项目预留的时间是否足够。
(4)可行性研究主要包括战略可行性、操作可行性、计划可行性、技术可行性、____ 、市场可行性、____ 。
(5)____ 研究是系统开发过程中难度最大的工作,也是可行性研究的关键。
(6)技术可行性研究主要关注待开发的系统的____ 、性能和限制条件。
(7)成本效益分析的第一步是估算开发成本、运行费用和新系统带来的____ 。
(8)任务分解技术最常用的方法是按____ 划分任务。
(9)____ 是软件生命周期中软件系统的累计经济效益与投资之差。
第四章
选择题
(1)在需求分析之前有必要进行( )工作。
A. 程序设计
B. 可行性研究
C. E-R分析
D. 行为建模
(2)需求分析是一个( ),它应该贯穿于系统的整个生命周期中,而不是仅仅属于软件生命周期早期的一项工作。
A. 概念
B. 工具
C. 方法
D. 过程
(3)软件需求规格说明书的内容不应该包括( )。
A. 对重要功能的描述
B. 对算法的详细过程描述
C. 对数据的要求
D. 软件的性能
(4)软件需求分析阶段的工作可以分为以下5个方面:对问题的识别、分析、综合、编写需求分析文档以及( )。
A. 总结
B. 阶段性报告
C. 需求分析评审
D. 以上答案都不正确
(5)进行需求分析可使用多种工具,但( )是不适用的。
A. 数据流图
B. PAD
C. 状态转换图
D. 数据字典
(6)结构化分析方法的基本思想是( )。
A. 自底向上、逐步分解
B. 自顶向下、逐步分解
C. 自底向上、逐步抽象
D. 自顶向下、逐步抽象
(7)在E-R图中,包含以下基本要素( )。
A. 数据、对象、实体
B. 控制、关系、对象
C. 实体、关系、控制
D. 实体、属性、关系
判断题
(1)用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。( )
(2)需求分析是开发方的工作,用户的参与度不大。( )
(3)需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性研究的依据。( )
(4)需求分析的主要目的是制订软件开发的具体方案。( )
(5)需求规格说明书描述了系统每个功能的具体实现。( )
(6)非功能性需求是从各个角度对系统的约束和限制,反映了应用软件系统质量和特性的额外要求。( )
(7)需求分析阶段的成果主要是需求规格说明书,但该成果与软件设计、编码、测试以及维护关系不大。( )
(8)分层的DFD可以用于可行性研究阶段,描述系统的物理结构。( )
(9)信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。( )
(10)在需求分析阶段主要采用图形工具来描述的原因是图形的信息量大,便于描述规模大的软件系统。( )
(11)设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需考虑怎样具体地实现这些功能。( )
填空题
(1)需求分析的步骤为____ 、分析建模、需求描述和____ 。
(2)需求可以分为两大类:____ 和____ 。
(3)需求管理是一种用于____ 、记录、组织和跟踪系统需求变更的系统化方法。
(4)功能分解方法将一个系统看成由若干功能____ 组成。
(5)面向对象的分析方法的关键是识别问题域内的____ 。
(6)数据流图主要分为____ 和____ 两种表示方法。
(7)状态转换图是一种描述系统对内部或外部事件响应的____ 模型。
(8)结构化分析方法通常强调____ 、逐层分解的方法。
(9)分析模型应该包括功能模型、____ 和行为模型。
(10)____ 数据流图是对顶层数据流图的细化。
第五章
选择题
(1)面向数据流的软件设计方法可将( )映射成软件结构。
A. 控制结构
B. 模块
C. 数据流
D. 事务流
(2)模块的独立性是由内聚性和耦合性来度量的,其中内聚性表示的是( )。
A. 模块间的联系程度
B. 信息隐藏程度
C. 模块的功能强度
D. 接口的复杂程度
(3)Jackson方法根据( )来导出程序结构。
A. 数据流图
B. 数据间的控制结构
C. 数据结构
D. IPO图
(4)为了提高模块的独立性,模块之间最好是( )。
A. 公共耦合
B. 控制耦合
C. 数据耦合
D. 特征耦合
(5)在面向数据流的软件设计方法中,一般将信息流分为( )。
A. 数据流和控制流
B. 变换流和控制流
C. 事务流和控制流
D. 变换流和事务流
(6)总体设计(概要设计)不包括( )。
A. 体系结构设计
B. 接口设计
C. 数据设计
D. 数据结构设计
(7)一个模块把一个数值作为参数传递给另一个模块,这两个模块之间的耦合是( )。
A. 公共耦合
B. 数据耦合
C. 控制耦合
D. 内容耦合
(8)划分模块时,一个模块的( )。
A. 作用范围应在其控制范围内
B. 控制范围应在其作用范围内
C. 作用范围和控制范围互不包含
D. 作用范围和控制范围不受任何限制
(9)详细设计的任务是定义每个模块的( )。
A. 外部特征
B. 内部特征
C. 算法和数据格式
D. 功能和输入输出数据
(10)下面不是结构化方法的基本原理的是( )。
A. 自底向上功能分解
B. 数据抽象
C. 功能抽象
D. 模块化
判断题
(1)判定表的优点是容易转换为计算机实现,缺点是不能描述组合条件。( )
(2)面向数据结构的设计方法一般都包括下列任务:确定数据结构特征;用顺序型、选择型和循环型3种基本形式表示数据。( )
(3)模块独立性要求高耦合、低内聚。( )
(4)软件设计说明书是软件概要设计的主要成果。( )
(5)软件设计中设计评审和设计本身一样重要,其主要作用是避免后期付出高昂的代价。( )
(6)划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。( )
(7)结构化设计方法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应。( )
(8)所有的数据流图都可以看作变换型数据流图。( )
(9)数据耦合是高耦合。( )
(10)文件一般用于长期存储,数据库一般用于临时存储。( )
填空题
(1)模块化的基本原则是高内聚、____ 。
(2)模块结构图之中如果两个模块之间有直线连接,表示它们之间存在____ 关系。
(3)变换型DFD由____ 、____ 、____ 组成。
(4)程序控制分为____ 、____ 、____ 3种基本结构。
(5)伪代码的优点是不仅可以作为____ 工具,还可以作为____ 工具。
(6)流程图是对过程、算法、____ 的一种图形表示。
(7)数据设计包括程序级的____ 设计、应用级的____ 设计两个方面。
第六章
选择题
(1)面向对象技术中,对象是类的实例。类有3种成分:( )、属性和方法(或操作)。
A. 标识
B. 继承
C. 封装
D. 消息
(2)汽车有一个发动机,那么汽车与发动机之间的关系是( )关系。
A. 组装
B. 整体-部分
C. 分类
D. 一般-具体
(3)( )是把对象的属性与操作结合在一起,构成一个独立的对象,其内部信息对外界是隐藏的,外界只能通过有限的接口与对象发生联系。
A. 多态
B. 继承
C. 消息
D. 封装
(4)关联是建立( )之间关系的一种手段。
A. 操作
B. 类
C. 功能
D. 属性
(5)面向对象软件技术的许多强有力的功能和突出的优点都来源于把类组织成一个层次结构的系统。一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是( ),一个子类可以获得其父类的全部描述(数据和操作)。
A. 兼容性
B. 继承性
C. 复用性
D. 多态性
(6)所有的对象都可以成为各种对象类,每个对象类都定义了一组( )。
A. 说明
B. 类型
C. 过程
D. 方法
(7)UML是软件开发中的一个重要工具,它主要应用于( )。
A. 基于螺旋模型的结构化方法
B. 基于需求动态定义的原型化方法
C. 基于数据的数据流开发方法
D. 基于对象的面向对象的方法
(8)( )是从用户使用系统的角度来描述系统功能的图形表达方法。
A. 类图
B. 活动图
C. 用例图
D. 状态图
(9)( )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
A. 类图
B. 顺序图
C. 状态图
D. 协作图
判断题
(1)UML是一种建模语言,是一种标准的表示,是一种方法。( )
(2)类图用来表示系统中类与类之间的关系,它是对系统动态结构的描述。( )
(3)在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。( )
(4)顺序图用于描述对象是如何交互的且将重点放在消息序列上。( )
(5)继承性是父类与子类之间共享数据结构和消息的机制,这是类之间的一种关系。( )
(6)多态性增强了软件的灵活性和复用性,允许用更为明确、易懂的方式去建立通用软件,多态性和继承性相结合使软件具有更广泛的复用性和可扩充性。( )
(7)类封装比对象封装更具体、更细致。( )
(8)用例之间有扩展、使用、组合等几种关系。( )
(9)活动图显示动作及其结果,着重描述操作实现中所完成的工作,以及用例实例或类中的活动。( )
(10)UML支持面向对象的主要概念,并与具体的开发过程相关。( )
(11)部署图用于描述系统硬件的物理拓扑结构以及在此结构上执行的软件。( )
填空题
(1)对象是客观实体的抽象表示,由____和____两部分组成。
(2)类是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的____。
(3)UML的静态建模机制包括____、类图、对象图、包图。
(4)在UML中,____把活动图中的活动划分为若干组,并将划分的组指定给对象,这些对象必须履行该组所包括的活动。
(5)____是用来反映若干个对象之间动态协作关系的一种交互图。它主要反映对象之间已发送消息的先后次序和对象之间的交互过程。
(6)____是从用户使用系统的角度来描述系统功能的图形表达方法。
(7)____就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。
(8)____是面向对象设计的核心,是建立状态图、协作图和其他图的基础。
第七章
选择题
(1)面向对象模型主要由以下哪些模型组成?( )
A. 对象模型、动态模型、功能模型
B. 对象模型、数据模型、功能模型
C. 数据模型、动态模型、功能模型
D. 对象模型、动态模型、数据模型
(2)面向对象分析的首要工作是建立( )。
A. 系统的动态模型
B. 系统的功能模型
C. 基本的E-R图
D. 问题的对象模型
(3)面向对象分析阶段建立的3个模型中,核心的模型是( )模型。
A. 对象
B. 动态
C. 功能
D. 分析
(4)面向对象的动态模型中,每张状态图表示( )的动态行为。
A. 某一个类
B. 有关联的若干个类
C. 一系列事件
D. 一系列状态
(5)在考察系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图;另一个是( )。
A. 顺序图
B. 状态图
C. 系统结构图
D. 数据流图
(6)对象模型的描述工具是( )。
A. 状态图
B. 数据流图
C. 结构图
D. 类图
(7)功能模型中所有的( )往往形成一个层次结构,在这个层次结构中一个数据流图的过程可以由下一层数据流图进行进一步的说明。
A. 事件追踪图
B. 物理模型图
C. 状态转换图
D. 数据流图
(8)在面向对象软件开发方法中,类与类之间主要有( )结构关系。
A. 继承和聚合
B. 一般和特殊
C. 聚合和消息传递
D. 继承和方法调用
(9)下面正确的说法是( )。
A. 对象表示客观中存在的实物
B. 类是对象的实例
C. 类是具有相同属性和操作的对象的集合
D. 对象也就是类
判断题
(1)模型是对现实的简化,建模是为了更好地理解所开发的系统。( )
(2)在面向对象的需求分析方法中,建立动态模型是最主要的任务。( )
(3)面向对象分析阶段建立的3个模型中,核心的模型是功能模型。( )
(4)对象模型的描述工具是状态图。( )
(5)两个对象之间的关联关系只能有一个。( )
填空题
(1)面向对象分析的首要工作是建立问题的____。
(2)大型系统的对象模型通常由5个层次构成,分别是____、、、、。
(3)数据流图中的处理对应于状态图中的____,数据流对应于类图的____。
(4)功能模型中包含两类数据存储,分别是____和____。
(5)对象或类之间的关系有____、、、、、____。
(6)对象模型由问题域中的____及其____组成。
(7)对象模型的描述工具是____。
第十章
选择题
(1)软件测试的目的是( )。
A. 证明软件是正确的
B. 发现软件的错误
C. 找出软件中的所有错误
D. 评价软件的质量
(2)白盒测试法又称为逻辑覆盖法,主要用于( )。
A. 确认测试
B. 系统测试
C. α测试
D. 单元测试
(3)在软件工程中,白盒测试方法可用于测试程序的内部结构,此方法将程序作为( )。
A. 循环的集合
B. 路径的集合
C. 目标的集合
D. 地址的集合
(4)成功的测试是指运行测试用例后( )。
A. 发现了程序错误
B. 未发现程序错误
C. 证明程序正确
D. 改正了程序错误
(5)白盒测试是根据程序的( )来设计测试用例的方法。
A. 输出数据
B. 内部逻辑
C. 功能
D. 输入数据
(6)在软件测试中,逻辑覆盖法属于( )。
A. 黑盒测试方法
B. 白盒测试方法
C. 灰盒测试方法
D. 软件验收方法
(7)黑盒测试是从( )角度进行的测试,白盒测试是从( )角度进行的测试。
A. 开发人员、管理人员
B. 用户、开发人员
C. 用户、管理人员
D. 开发人员、用户
(8)软件测试可能发现软件中的( ),但不能证明软件( )。
A. 所有错误、没有错误
B. 设计错误、没有错误
C. 逻辑错误、没有错误
D. 错误、没有错误
(9)使用白盒测试方法时,确定测试数据应根据( )和指定的覆盖标准。
A. 程序的内部逻辑
B. 程序的复杂度
C. 程序的难易程度
D. 程序的功能
(10)黑盒测试方法根据( )设计测试用例。
A. 程序的调用规则
B. 软件要完成的功能
C. 模块间的逻辑关系
D. 程序的数据结构
(11)集成测试的主要方法有两个:一个是( );另一个是( )。
A. 白盒测试方法、黑盒测试方法
B. 等价类划分法、边界值分析法
C. 增量式方法、非增量式测试方法
D. 因果图法、错误推测法
(12)软件测试的目的是尽可能发现软件中的错误,通常( )是代码编写阶段可进行的测试,它是整个测试工作的基础。
A. 集成测试
B. 系统测试
C. 验收测试
D. 单元测试
(13)单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是( )。
A. 系统功能
B. 局部数据结构
C. 重要的执行路径
D. 错误处理
(14)软件维护的副作用,是指( )。
A. 运行时误操作
B. 隐含的错误
C. 因修改软件而造成的错误
D. 开发时的错误
(15)影响软件可维护性的主要因素不包括( )。
A. 可修改性
B. 可测试性
C. 可用性
D. 可理解性
判断题
(1)软件测试是对软件需求规格说明、软件设计和编码的最全面也是最后的审查。( )
(2)如果通过软件测试没有发现错误,则说明软件是正确的。( )
(3)白盒测试无须考虑模块内部的执行过程和程序结构,只需了解模块的功能即可。( )
(4)软件测试的目的是尽可能多地发现软件中存在的错误,并将它作为纠错的依据。( )
(5)测试用例由输入数据和预期的输出结果两部分组成。( )
(6)白盒测试是结构测试,主要以程序的内部逻辑为基础设计测试用例。( )
(7)软件测试的目的是证明软件是正确的。( )
(8)单元测试通常应该先进行“人工走查”,再以白盒测试为主,辅以黑盒测试进行动态测试。( )
(9)白盒测试是一种静态测试方法,主要用于模块测试。( )
(10)在等价类划分法中,为了提高测试效率,一个测试用例可以覆盖多个无效等价类。( )
(11)功能测试是系统测试的主要内容,用于检查系统的功能、性能是否与需求规格说明相同。( )
(12)适应性维护是在软件使用过程中,用户对软件提出新的功能和性能要求,为了满足这些新的要求而对软件进行修改,使之在功能和性能上得到完善和增强的活动。( )
填空题
(1)在软件测试工作中,存在____,即约80%的错误会集中存在于约20%的代码中。
(2)软件测试模型是指软件测试全部____、活动或任务的结构框架。
(3)软件测试按照是否运行程序可分为____测试和____测试。
(4)通过描述每个经过用例的可能路径,可以确定不同的用例场景,这个流经路径要从用例开始到结束,遍历其中所有基本流和____。
(5)一般在软件测试过程中,既要用到黑盒测试,又要用到白盒测试。大的功能模块采用____,小的组件采用____。
(6)在确认测试的过程中仅使用____测试技术。
(7)在进行单元测试时,被测试的单元本身不是独立的程序,需要为其开发____模块和桩模块。
(8)集成测试一般由测试人员和____完成。
(9)____是系统测试中最基本的测试,它不管软件内部是如何实现的。
(10)系统测试中,____包含容错性测试和恢复测试。
(11)β测试由最终____实施,通常开发组织对其的管理很少或不管理。
(12)软件维护可分为纠错性维护、适应性维护、完善性维护、____4类。
(13)简单地说,软件部署就是将开发的软件拿给用户使用,给用户____环境(包括硬件、软件的安装以及环境变量的设置等),使开发的软件能被用户正常使用的过程。
(14)软件再工程是一类工程____,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。