软件工程复习题
第一章
1. 选择题
(1) 下列说法中正确的是( )。
A. 20 世纪 50 年代提出了软件工程的概念
B. 20 世纪 60 年代提出了软件工程的概念
C. 20 世纪 70 年代出现了客户机 / 服务器技术
D. 20 世纪 80 年代软件工程学科达到成熟
答案:B
(2) 产生软件危机的主要原因是( )。
A. 软件工具落后
B. 软件生产能力不足
C. 实施严格的版本控制
D. 软件本身的特点及开发方法不满足
答案:D
(3) 软件工程的三要素是( )。
A. 技术、方法和工具
B. 方法、对象和类
C. 方法、工具和过程
D. 过程、模型和方法
答案:C
(4) 在下列选项中,( )不属于软件工程学科所要研究的基本内容。
A. 软件工程材料
B. 软件工程方法
C. 软件工程原理
D. 软件工程过程
答案:A
2. 判断题
(1) 软件就是程序,编写软件就是编写程序。
答案:×
(2) 软件危机的主要表现是软件需求增加,软件价格上升。
答案:×
(3) 软件工程学科出现的主要原因是软件危机出现。
答案:√
(4) 软件工程工具的作用是为了延长软件产品的寿命。
答案:×
第二章
1. 选择题
(1) 增量模型本质上是一种( )。
A. 线性顺序模型
B. 整体开发模型
C. 非整体开发模型
D. 螺旋模型的准则
答案:C
(2) 软件过程是( )。
A. 特定的开发模型
B. 一种软件求解的计算逻辑
C. 软件开发活动的集合
D. 软件生命周期模型
答案:C
(3) 软件生命周期模型不包括( )。
A. 瀑布模型
B. 用例模型
C. 增量模型
D. 螺旋模型
答案:B
(4) 包含风险分析的软件过程模型是( )。
A. 螺旋模型
B. 瀑布模型
C. 增量模型
D. 喷泉模型
答案:A
(5) 软件工程中描述生命周期的瀑布模型一般包括需求分析、设计、编码、( )、维护等几个阶段。
A. 产品发布
B. 版本更新
C. 可行性分析
D. 测试
答案:D
(6) 软件开发的瀑布模型中,一般认为可能占用开发人员最多的阶段是( )。
A. 分析阶段
B. 设计阶段
C. 编码阶段
D. 测试阶段
答案:C
(7) 螺旋模型综合了( )的优点,并增加了风险分析。
A. 增量模型和喷泉模型
B. 瀑布模型和快速原型模型
C. 瀑布模型和喷泉模型
D. 快速原型模型和喷泉模型
答案:B
2. 判断题
(1) 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
答案:×
(2) 螺旋模型在瀑布模型和增量模型的基础上增加了风险分析。
答案:×
(3) 软件工程通过迭代设计为中心,关键是编写程序。
答案:×
(4) 模型编程属于增量模型。
答案:×
第四章
1. 选择题
(1) 在需求分析之前有必要进行( )工作。
A. 程序设计
B. 可行性研究
C. E - R 分析
D. 行为建模
答案:B
(2) 需求分析是一个( ),它应该贯穿于系统的整个生命周期中,而不是仅仅属于软件生命周期早期的一项工作。
A. 概念
B. 工具
C. 方法
D. 过程
答案:D
(3) 软件需求规格说明书的内容不应该包括( )。
A. 对重要的描述
B. 对算法的详细过程描述
C. 对数据的要求
D. 软件的性能
答案:B
(4) 软件需求分析阶段的工作可以分为以下 5 个方面:对问题的识别、分析、综合、编写需求分析文档以及( )。
A. 总结
B. 阶段性报告
C. 需求分析评审
D. 以上答案都不正确
答案:C
(5) 进行需求分析可使用多种工具,但( )是不适用的。
A. 数据流程图
B. PAD
C. 状态转换图
D. 数据字典
答案:B
(6) 结构化分析方法的基本思想是( )。
A. 自底向上、逐步分解
B. 自顶向下、逐步分解
C. 自底向上、逐步抽象
D. 自顶向下、逐步抽象
答案:B
(7) 在 E - R 图中,包含以下基本要素( )。
A. 数据、对象、实体
B. 控制、关系、对象
C. 实体、关系、控制
D. 实体、属性、关系
答案:D
2. 判断题
(1) 用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。
答案:√
(2) 需求分析是开发方的工作,用户的参与度不大。
答案:×
(3) 需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性研究的依据。
答案:×
(4) 需求分析的主要目的是制订软件开发的具体方案。
答案:×
(5) 需求规格说明书描述了系统每个功能的具体实现。
答案:×
(6) 非功能性需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
答案:√
(7) 需求分析阶段的成果主要是需求规格说明书,但该成果与软件设计、编码、测试以及维护关系不大。
答案:×
(8) 分层的 DFD 可以用于可行性研究阶段,描述系统的物理结构。
答案:×
(9) 信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是 E - R 图。
答案:√
(10) 在需求分析阶段主要采用图形工具来描述的原因是图形的信息量大,便于描述规模大的软件系统。
答案:×
(11) 设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能。
答案:√
第五章
1. 选择题
(1) 面向数据流的软件设计方法可将( )映射成软件结构。
A. 控制结构
B. 模块
C. 数据流
D. 事务流
答案:C
(2) 模块的独立性是由内聚性和耦合性来度量的,其中内聚性表示的是( )。
A. 模块间的联系程度
B. 信息隐藏程度
C. 模块的功能强度
D. 接口的复杂程度
答案:C
(3) Jackson 方法根据( )来导出程序结构。
A. 数据流图
B. 数据间的控制结构
C. 数据结构
D. IPO 图
答案:C
(4) 为了提高模块的独立性,模块之间最好是( )。
A. 公共耦合
B. 控制耦合
C. 数据耦合
D. 特征耦合
答案:C
(5) 在面向数据流的软件设计方法中,一般将数据流分为( )。
A. 数据流和控制流
B. 变换流和控制流
C. 事务流和控制流
D. 变换流和事务流
答案:D
(6) 总体设计(概要设计)不包括( )。
A. 体系结构设计
B. 接口设计
C. 数据设计
D. 数据结构设计
答案:D
(7) 一个模块把一个数值作为参数传递给另一个模块,这两个模块之间的耦合是( )。
A. 公共耦合
B. 数据耦合
C. 控制耦合
D. 内容耦合
答案:B
(8) 划分模块时,一个模块的( )。
A. 作用范围应在其作用范围内
B. 控制范围应在其作用范围内
C. 作用范围和控制范围不同
D. 作用范围和控制范围不受任何限制
答案:A
(9) 详细设计的任务是定义每个模块的( )。
A. 外部特征
B. 内部特征
C. 算法和数据格式
D. 功能和输入输出数据
答案:C
(10) 下面不是结构化方法的基本原理的是( )。
A. 自底向上功能分解
B. 数据抽象
C. 功能抽象
D. 模块化
答案:A
2. 判断题
(1) 判定表的优点是容易转换为计算机实现,缺点是不能描述组合条件。
答案:×
(2) 面向数据结构的设计方法一般都包括下列任务:确定数据结构特征;用顺序型、选择型和循环型3种基本形式表示数据。
答案:√
(3) 模块独立性要求高耦合、低内聚。
答案:×
(4) 软件设计说明书是软件概要设计的主要成果。
答案:×
(5) 软件设计中设计评审和设计本身一样重要,其主要作用是避免后期付出高昂的代价。
答案:√
(6) 划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。
答案:×
(7) 结构化设计方法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应。
答案:×
(8) 所有的数据流图都可以看作变换型数据流图。
答案:×
(9) 数据耦合是高耦合。
答案:×
(10) 文件一般用于长期存储,数据库一般用于临时存储。
答案:×
第六章
1. 选择题
(1) 面向对象技术中,对象是类的实例。类有 3 种成分:( )、属性和方法(或操作)。
A. 标识
B. 继承
C. 封装
D. 消息
答案:A
(2) 汽车有一个发动机,那么汽车与发动机之间的关系是( )关系。
A. 组装
B. 整体 - 部分
C. 分类
D. 一般 - 具体
答案:B
(3) ( )是把对象的属性与操作结合在一起,构成一个独立的对象,其内部信息对外界是隐藏的,外界只能通过有限的接口与对象发生联系。
A. 多态
B. 继承
C. 消息
D. 封装
答案:D
(4) 关联是建立( )之间关系的一种手段。
A. 操作
B. 类
C. 功能
D. 属性
答案:B
(5) 面向对象软件技术的许多强有力的功能和突出的优点都来源于把类组织成一个层次结构的系统。一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是( ),一个子类可以获得其父类的全部描述(数据和操作)。
A. 兼容性
B. 继承性
C. 复用性
D. 多态性
答案:B
(6) 所有的对象都可以成为各种对象类,每个对象类都定义了一组( )。
A. 说明
B. 类型
C. 过程
D. 方法
答案:D
(7) UML 是软件开发中的一个重要工具,它主要应用于( )。
A. 基于螺旋模型的结构化方法
B. 基于需求动态定义的原型化方法
C. 基于数据的数据流开发方法
D. 基于对象的面向对象的方法
答案:D
(8) ( )是从用户使用系统的角度来描述系统功能的图形表达方法。
A. 类图
B. 活动图
C. 用例图
D. 状态图
答案:C
(9) ( )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
A. 类图
B. 顺序图
C. 状态图
D. 协作图
答案:B
2. 判断题
(1) UML 是一种建模语言,是一种标准的表示,是一种方法。
答案:×
(2) 类图用来表示系统中类与类之间的关系,它是对系统动态结构的描述。
答案:×
(3) 在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。
答案:×
(4) 顺序图用于描述对象是如何交互的且将重点放在消息序列上。
答案:√
(5) 继承性是父类与子类之间共享数据结构和消息的机制,这是类之间的一种关系。
答案:×
(6) 多态性增强了软件的灵活性和复用性,允许用更为明确、易懂的方式去建立通用软件,多态性和继承性相结合使软件具有更广泛的复用性和可扩充性。
答案:√
(7) 类封装比对象封装更具体、更细致。
答案:×
(8) 用例之间有扩展、使用、组合等几种关系。
答案:×
(9) 活动图显示动作及其结果,着重描述操作实现中所完成的工作,以及用例实例或类中的活动。
答案:×
(10) UML 支持面向对象的主要概念,并与具体的开发过程相关。
答案:×
(11) 部署图用于描述系统硬件的物理拓扑结构以及在此结构上执行的软件
答案:√
第七章
1. 选择题
(1) 面向对象模型主要由以下哪些模型组成?( )
A. 对象模型、动态模型、功能模型
B. 对象模型、数据模型、功能模型
C. 数据模型、动态模型、功能模型
D. 对象模型、动态模型、数据模型
答案:A
(2) 面向对象分析的首要工作是建立( )。
A. 系统的动态模型
B. 系统的功能模型
C. 基本的 E - R 图
D. 问题的对象模型
答案:D
(3) 面向对象分析阶段建立的 3 个模型中,核心的模型是( )模型。
A. 功能
B. 动态
C. 对象
D. 分析
答案:C
(4) 面向对象的动态模型中,每张状态图表示( )的动态行为。
A. 某一个类
B. 有关联的若干个类
C. 一系列事件
D. 一系列状态
答案:A
(5) 在考察系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图;另一个是( )。
A. 顺序图
B. 状态图
C. 系统结构图
D. 数据流图
答案:B
(6) 对象模型的描述工具是( )。
A. 状态图
B. 数据流图
C. 结构图
D. 类图
答案:D
(7) 功能模型中所有的( )往往形成一个层次结构,在这个层次结构中一个数据流图的过程可以由下一层数据流图进行进一步的说明。
A. 事件追踪图
B. 物理模型图
C. 状态转换图
D. 数据流图
答案:D
(8) 在面向对象软件开发方法中,类与类之间主要有( )结构关系。
A. 继承和聚合
B. 一般和特殊
C. 聚合和消息传递
D. 继承和方法调用
答案:A
(9) 下面正确的说法是( )。
A. 对象表示客观中存在的实物
B. 类是对象的实例
C. 类是具有相同属性和操作的对象的集合
D. 对象也就是类
答案:C
2. 判断题
(1) 模型是对现实的简化,建模是为了更好地理解所开发的系统。
答案:√
(2) 在面向对象的需求分析方法中,建立动态模型是最主要的任务。
答案:×
(3) 面向对象分析阶段建立的 3 个模型中,核心的模型是功能模型。
答案:×
(4) 对象模型的描述工具是状态图。
答案:×
(5) 两个对象之间的关联关系只能有一个。
答案:×
第八章
1. 选择题
(1) 面向对象设计阶段的主要任务是系统设计和( )。
A. 结构化设计
B. 数据设计
C. 面向对象程序设计
D. 对象设计
答案:D
(2) ( )是表达系统类及其相互联系的图示,它是面向对象设计的核心,是建立状态图、协作图和其他图的基础。
A. 部署图
B. 类图
C. 组件图
D. 配置图
答案:B
(3) 下面所列的性质中,( )不属于面向对象设计的特性。
A. 继承性
B. 实用性
C. 封装性
D. 可视化
答案:D
(4) 下列是面向对象设计方法中有关对象的叙述,其中( )是正确的。
A. 对象在内存中没有它的存储区
B. 对象的属性集合是它的特征表示
C. 对象的定义与程序中类型的概念相当
D. 对象之间不能相互通信
答案:B
(5) 面向对象设计中,基于父类创建的子类具有父类的所有特性(属性和方法),这一特点称为类的( )。
A. 多态性
B. 封装性
C. 继承性
D. 复用性
答案:C
(6) 下列哪项不是面向对象设计的启发规则?( )
A. 设计结果应该清晰易懂
B. 类等级深度应该适当
C. 尽量添加设计的变动
D. 使用简单的协议
答案:C
(7) 下面哪项不是系统分解的好处?( )
A. 降低设计的难度
B. 有利于软件开发人员分工协作
C. 有利于维护人员理解并维护系统
D. 有利于增加系统依赖性
答案:D
(8) 不属于任务管理子系统的是( )。
A. 人机交互所需输入
B. 任务的定义
C. 任务的通信
D. 硬件分配
答案:A
(9) 以下哪个是人机交互子系统设计的原因?( )
A. 系统与外界的接口是容易变动的
B. 系统的服务容易变动
C. 鉴别、定界、追踪和评估变动产生的影响
D. 强调人如何命令系统
答案:D
(10) 在软件系统中,由于需求的变化,一些对象的实现可能会发生变化。为了应对这种 "易变对象" 的变化,人们提出了( )。
A. 工厂模式
B. 外观模式
C. 观察者模式
D. 以上都不是
答案:A
第十章
1. 选择题
(1) 软件测试的目的是( )。
A. 证明软件是正确的
B. 发现软件的错误
C. 找出软件中的所有错误
D. 评价软件的质量
答案:B
(2) 白盒测试法又称为逻辑覆盖法,主要用于( )。
A. 确认测试
B. 系统测试
C. α 测试
D. 单元测试
答案:D
(3) 在软件工程中,白盒测试方法可用于测试程序的内部结构,此方法将程序作为( )。
A. 循环的集合
B. 路径的集合
C. 目标的集合
D. 地址的集合
答案:B
(4) 成功的测试是指运行测试用例后( )。
A. 发现了程序错误
B. 未发现程序错误
C. 证明程序正确
D. 改正了程序错误
答案:A
(5) 白盒测试是根据程序的( )来设计测试用例的方法。
A. 输出数据
B. 内部逻辑
C. 功能
D. 输入数据
答案:B
(6) 在软件测试中,逻辑覆盖法属于( )。
A. 黑盒测试方法
B. 白盒测试方法
C. 灰盒测试方法
D. 软件验收方法
答案:B
(7) 黑盒测试是从( )角度进行的测试,白盒测试是从()角度进行的测试。
A. 开发人员、管理人员
B. 用户、开发人员
C. 用户、管理人员
D. 开发人员、用户
答案:B
(8) 软件测试用例主要由输入数据和( )两部分组成。
A. 测试计划
B. 测试规则
C. 以往测试记录分析
D. 预期输出结果
答案:D
(9) 使用白盒测试方法时,确定测试数据应根据( )和指定的覆盖标准。
A. 程序的内部逻辑
B. 程序的复杂程度
C. 程序的难易程度
D. 程序的功能
答案:A
(10) 黑盒测试方法根据( )设计测试用例。
A. 程序的调用规则
B. 软件要完成的功能
C. 模块间的逻辑关系
D. 程序的数据结构
答案:B
(11) 集成测试的主要方法有两个:一个是( );另一个是()。
A. 白盒测试方法、黑盒测试方法
B. 等价类划分法、边界值分析法
C. 增量式测试方法、非增量式测试方法
D. 因果图法、错误推测法
答案:C
(12) 软件测试的目的是尽可能发现软件中的错误,通常( )是代码编写阶段可进行的测试,它是整个测试工作的基础。
A. 集成测试
B. 系统测试
C. 验收测试
D. 单元测试
答案:D
(13) 单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是( )。
A. 系统功能
B. 局部数据结构
C. 重要的执行路径
D. 错误处理
答案:A
(14) 软件维护的副作用,是指( )。
A. 运行时误操作
B. 隐含的错误
C. 因修改软件而造成的错误
D. 开发时的错误
答案:C
(15) 影响软件可维护性的主要因素不包括( )。
A. 可修改性
B. 可测试性
C. 可用性
D. 可理解性
答案:C
2. 判断题
(1) 软件测试是对软件需求规格说明、软件设计和编码的最全面也是最后的审查。
答案:×
(2) 如果通过软件测试没有发现错误,则说明软件是正确的。
答案:×
(3) 白盒测试无须考虑模块内部的执行过程和程序结构,只需了解模块的功能即可。
答案:×
(4) 软件测试的目的是尽可能多地发现软件中存在的错误,并将它作为纠错的依据。
答案:√
(5) 测试用例由输入数据和预期的输出结果两部分组成。
答案:√
(6) 白盒测试是结构测试,主要以程序的内部逻辑为基础设计测试用例。
答案:√
(7) 软件测试的目的是证明软件是正确的。
答案:×
(8) 单元测试通常应该先进行 "人工走查",再以白盒测试为主,辅以黑盒测试进行动态测试。
答案:√
(9) 白盒测试是一种静态测试方法,主要用于模块测试。
答案:×
(10) 在等价类划分法中,为了提高测试效率,一个测试用例可以覆盖多个无效等价类。
答案:×
(11) 功能测试是系统测试的主要内容,用于检查系统的功能、性能是否与需求规格说明相同。
答案:√
(12) 适应性维护是在软件使用过程中,用户对软件提出新的功能和性能要求,为了满足这些新的要求而对软件进行修改,使之在功能和性能上得到完善和增强的活动。
答案:×
第十一章
1. 选择题
(1) ( )的作用是为有效地、定量地进行管理,把握软件工程过程的实际情况和它所产生的产品质量。
A. 估算
B. 度量
C. 风险分析
D. 进度安排
答案:B
(2) LOC 和 FP 是两种估算技术,但两者有许多共同的特征,只是 LOC 和 FP 技术对于分解所需要的( )不同。
A. 详细程度
B. 分解要求
C. 使用方法
D. 改进过程
答案:A
(3) 项目团队原来有 6 个成员,现在又增加了 6 个成员,这样沟通渠道增加了多少?( )
A. 4.4 倍
B. 2 倍
C. 6 倍
D. 6 条
答案:A
(4) 下列哪项不是风险管理的过程?( )
A. 风险规划
B. 风险识别
C. 风险评估
D. 风险收集
答案:D
(5) 按照软件配置管理的原始指导思想,受控制的对象应是( )。
A. 软件过程
B. 软件项目
C. 软件配置项
D. 软件元素
答案:C
(6) 下面( )不是人们常用的评价软件质量的 4 个因素之一。
A. 可理解性
B. 可靠性
C. 可维护性
D. 易用性
答案:D
(7) 软件文档是软件工程实施的重要成分,它不仅是软件开发各阶段的重要依据,而且影响软件的( )。
A. 可用性
B. 可维护性
C. 可扩展性
D. 可移植性
答案:B
(8) CMM 表示( )。
A. 软件过程能力成熟度模型
B. 软件配置管理
C. 软件质量认证
D. 软件复用
答案:A
简答题
一、请简述软件工程的基本原则(p16)
- 分阶段的生命周期计划管理:将软件生命周期划分为明确阶段(如需求、设计、编码等),制定各阶段目标与进度计划,确保开发有序推进。
- 坚持进行阶段评审:各阶段结束时严格评审成果,及时发现问题,避免缺陷传递至后续阶段。
- 实行严格的产品控制:通过变更控制流程管理软件修改,确保产品完整性与一致性,防止随意变更导致混乱。
- 采用现代程序设计技术:运用结构化、面向对象等技术与方法,提升软件质量与开发效率。
- 结果应能清楚地审查:各阶段成果(文档、代码等)需定义清晰、规范,便于检查与评估。
- 开发小组的人员应少而精:组建规模适度、技能全面的团队,减少沟通成本,提升协作效率。
- 不断的总结经验并学习新的技术:持续总结经验,优化开发过程,引入新技术与最佳实践。
二、请简述软件工程研究的内容(p16)
- 软件开发方法与过程:研究结构化、面向对象等开发方法,以及瀑布模型、敏捷开发等过程模型,规范开发流程。
- 软件需求工程:涵盖需求获取、分析、规格说明与验证,将用户需求转化为可验证的文档。
- 软件设计与构造:包括架构设计、模块划分、编码实现等,将需求转化为可运行的软件系统。
- 软件质量保障:通过测试、质量度量等手段,确保软件满足功能、性能等质量要求。
- 软件维护与演化:处理改正性、适应性、完善性维护及软件升级,适应环境与需求变化。
- 支撑体系:包括开发工具(如 IDE、建模工具)、项目管理方法及标准规范,为开发提供支持。
三、请对比瀑布模型、快速原型模型、增量模型和螺旋模型(p35)
- 瀑布模型:线性顺序开发,阶段明确,文档规范,适用于需求明确稳定、技术成熟的大型项目,优点是便于管理控制,缺点是灵活性差、需求变更成本高。
- 快速原型模型:先快速构建原型获取用户反馈,再完善至最终产品,适用于需求不明确或需快速验证概念的项目,优点是能快速获取反馈,缺点是原型质量可能不高、复杂系统构建维护难。
- 增量模型:将软件分为多个增量逐步开发交付,适用于部分需求明确、希望尽早看到部分功能的项目,优点是可分阶段验证反馈、灵活性较好,缺点是架构设计要求高、管理不善易失控。
- 螺旋模型:结合瀑布和原型模型,强调风险评估,通过多轮螺旋周期迭代开发,适用于规模大、风险高、需求复杂的项目,优点是强风险控制,缺点是成本高、周期长、依赖专业风险分析能力。
四、可行性研究的任务有哪些(p51)
1.战略可行性研究
2.操作可行性研究
3.计划可行性研究
4.社会可行性研究
5.技术可行性研究
6.市场可行性研究
7.经济可行性研究
8.风险可行性研究
五、如何理解结构化分析方法的基本思想(p72)
结构化分析是面向数据流的需求分析方法,通过自顶向下逐层分解控制问题复杂度:利用数据流图(DFD) 展示数据流动与处理过程,结合数据词典(DD) 定义数据元素与逻辑,将现实问题映射为抽象的逻辑模型,适用于数据处理领域需求分析。
六、结构化设计的优点(p108)
- 降低复杂度:将系统分解为独立模块,清晰结构,便于理解与开发。
- 提高可维护性:模块独立性使修改局限于局部,降低维护成本。
- 增强可读性:遵循规范设计,模块功能与接口清晰,提升代码与文档可读性。
- 便于分工合作:模块划分明确,团队成员可按专长分工,提升协作效率。
- 支持软件复用:通用模块可重复使用,减少重复开发,提高效率。
- 利于系统扩展:新增功能时只需添加或修改模块,不影响整体架构。
七、什么是面向对象方法?面向对象方法特点有哪些?(p130)
面向对象方法:
面向对象方法是一种以对象为基本单元的软件开发方法,将现实世界中的事物抽象为包含数据(属性) 和操作(方法) 的对象,通过对象间的消息传递实现交互协作。其核心是基于对象模型模拟客观世界,利用封装、继承、多态等机制构建系统,使软件开发过程与问题域的逻辑结构直接对应。
面向对象方法的特点:
- 封装性:对象隐藏内部细节,仅通过接口对外提供服务;
- 继承性:子类复用父类特性,支持代码重用和功能扩展;
- 多态性:相同操作对不同对象产生不同行为;
- 抽象性:提取对象共性形成类,忽略非本质细节;
- 模块性:对象作为独立模块,低耦合高内聚;
- 易维护性:封装和继承降低修改成本,便于功能迭代;
- 与现实世界匹配:直接以问题域事物为模型,减少建模认知偏差。
八、UML 的作用和优点有哪些?(p130)
作用:
UML 是一种通用的可视化建模语言,可用于描述、可视化、构造和文档化软件密集型系统的各种构件,使系统建模过程标准化、统一化、规范化。
优点:
- 统一标准,跨领域适用:作为 OMG 标准建模语言,被业界广泛支持,可用于软件、硬件、业务流程等多领域建模。
- 可视化表达,语义精确:通过图形符号(如类图、时序图)直观呈现系统结构与交互逻辑,避免文本描述的歧义。
- 独立于开发过程与方法:不绑定特定开发模型(如瀑布 / 敏捷)或方法论(结构化 / 面向对象),适配性强。
- 易学习掌握:核心图形语法简洁,配合建模工具(如 StarUML)可快速上手,降低学习成本。
- 与编程语言深度集成:支持模型与代码双向转换(如类图生成 Java 代码框架),提升开发效率。
九、比较结构化设计方法和面向对象设计方法(p193)
- 结构化设计方法
以功能为中心,将系统分解为独立模块,按流程组织模块间的数据交互,强调自顶向下的设计逻辑。核心是通过模块化实现功能解耦,适合业务流程固定的场景,但模块间耦合度高,修改易引发连锁反应,复用性较低。
- 面向对象设计方法
以对象为核心,将系统抽象为包含数据与行为的实体,通过封装、继承、多态实现代码复用。对象间通过消息传递协作,可灵活扩展(如新增子类不影响原有逻辑),适合复杂业务场景,但需要较强的抽象能力,设计复杂度较高。
十、白盒测试和黑盒测试(p258)
- 白盒测试:
基于代码内部结构(如逻辑、分支、路径)进行测试,需了解代码细节,目标是验证逻辑正确性(如分支覆盖、循环测试),常用于单元测试。 - 黑盒测试:
基于软件外部功能(如需求规格)进行测试,无需了解代码,目标是验证功能是否符合需求(如输入输出正确性),常用于集成测试、系统测试。
大题题型
- 判定表判定树(p66 - 67)
- E - R 图(p63,p73)
- 用例图(p115 - 116)
- 程序流程图(p98)
- 状态转换图(p123)
评论区