ARTICLE · 1244658
软件工程课后习题答案
软件工程课后习题答案
第一章 软件工程概述 课后习题与答案
一、 单项选择题
1. 关于引起软件危机的原因,下列选项中,错误的是【 】。 • A. 软件难以维护 • B. 软件开发的成本难以控制 • C. 软件的实现缺乏好的算法 • D. 没有评测软件产品质量的标准 • 正确答案:C • 解析:软件危机的主要原因包括软件开发缺乏计划性、软件需求不够充分、缺乏过程规范、成本和进度难以控制、没有评测质量的标准和方法以及软件难以维护等。缺乏算法并非引起软件危机的原因。 2. 下列关于软件与硬件比较的叙述中,错误的是【 】。 • A. 软件产品的成本容易控制,而硬件的成本难以控制 • B. 软件开发与硬件生产同样可以采用工程化方法进行管理 • C. 软件的进度比硬件的进度控制要困难 • D. 对软件和硬件产品都需要进行质量确认 • 正确答案:A • 解析:软件与硬件相比,软件的开发成本比硬件的制造成本更难控制。因此 A 选项表述错误。 3. 因为程序运行环境、用户使用程序的习惯等因素可能对程序产生新的需求,导致程序需要变更,这种变更被称为【 】。 • A. 软件开发 • B. 软件复用 • C. 软件演进 • D. 软件调试 • 正确答案:C • 解析:软件演进是指在开发和使用过程中,因政策、规则、环境或用户使用习惯变更产生新需求,从而对程序进行修改和完善的循环往复过程。 4. 软件开发的过程需要严格按照先进行需求分析,再进行系统设计,根据设计方案进行编码的软件过程模型是【 】。 • A. 瀑布模型 • B. 原型模型 • C. 螺旋模型 • D. 统一过程模型 • 正确答案:A • 解析:瀑布模型将软件过程划分为需求定义、系统和软件设计、实现与单元测试、集成与系统测试、运行与维护等阶段,严格按照线性顺序顺序推进。
二、 简答题
1. 什么是软件?什么是软件危机?什么是软件工程?什么是软件过程? • 参考答案: • 软件:在软件工程领域,软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及其相关文档的完整集合。 • 软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 • 软件工程:是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科,基本思想是按工程化的原则和方法组织软件开发。 • 软件过程:是为了获得软件产品,在软件工具的支持下由软件工程师遵循一定步骤完成的一系列软件工程活动。 2. 软件需求分为哪几个阶段? • 参考答案:软件需求分析的过程可分为以下 4 个阶段:① 可行性研究;② 分析用户需求;③ 描述需求;④ 需求有效性验证。 3. 瀑布模型将软件开发分为哪几个阶段?瀑布模型有什么缺点? • 参考答案: • 划分阶段:需求定义、系统和软件设计、实现与单元测试、集成与系统测试、运行与维护。 • 缺点:① 实际的项目很少遵守瀑布模型提出的线性顺序;② 客户通常难以早期清楚完整地描述所有需求;③ 只有在项目接近尾声时才能得到可执行程序;④ 在评审可执行程序之前无法检测到重大错误;⑤ 适应频繁需求变更的能力较差。 4. 原型模型的基本思想是什么? • 参考答案:在软件产品的某个版本试用之前,先建立一个能够反映用户主要需要、可运行的软件原型,让用户体验未来的系统,以引导用户提出更具体、明确的需求。然后通过与用户的沟通反复改进原型,最终实现完全符合用户需求的软件系统。 5. 统一过程模型把软件开发分为哪几个阶段? • 参考答案:统一过程模型(UP)把软件开发划分为 5 个工作阶段:① 起始阶段;② 细化阶段;③ 构建阶段;④ 转换阶段;⑤ 生产阶段。 6. 在 Scrum 模型中如何定义冲刺?每日冲刺会议的 15 min 内,开发团队成员需要回答哪 3 个问题? • 参考答案: • 冲刺(Sprint)定义:Scrum 模型将项目分解为一系列称为“冲刺”的增量型开发周期(通常为 2~4 周),旨在固定时间盒内完成特定的增量任务。 • 每日 Scrum 立会需要回答的 3 个问题: 1. 自上次团队立会后做了什么? 2. 遇到了什么困难? 3. 下次例会前计划做什么? 7. 请你举出 3 个适合采用敏捷开发的软件项目的实例。 • 参考答案: • 实例 1:移动健身类 App(如健身追踪应用),需要快速上线核心功能并根据用户反馈频繁迭代更新。 • 实例 2:初创公司的轻量级电商小程序,需求变更快、开发周期短,需要快速推出 MVP(最小可行产品)占领市场。 • 实例 3:企业内部协同办公看板系统,团队规模较小且沟通紧密,需要高频交付可运行模块。
第二章 结构化软件开发方法 课后习题与答案
一、 单项选择题
1. 需求分析的任务是【 】。 • A. 确定客户需要目标系统实现的功能,并提供需求规格说明书 • B. 确定客户需要目标系统实现达到怎样的性能,并提供需求规格说明书 • C. 确定客户需要目标系统提供什么样的界面,并提供需求规格说明书 • D. 确定目标系统的功能和非功能需求,并提供需求规格说明书 • 答案:D • 解析:需求分析的任务在于弄清用户对软件系统的确切要求(包含功能和非功能需求),并以需求规格说明书(SRS)的形式表达出来。 2. 关于需求分析的步骤,下列选项中正确的是【 】。 • A. 先建立系统的业务模型,再建立系统的逻辑模型 • B. 先建立系统的逻辑模型,再建立系统的业务模型 • C. 对业务系统模型进行完善后,再建立系统的逻辑模型 • D. 先对系统的逻辑模型进行完善,再建立业务系统的模型 • 答案:A • 解析:需求分析的步骤依次为:调查获得当前系统的具体/业务模型 抽象出当前系统的逻辑模型 建立目标系统的逻辑模型 完善补充需求说明 复审。 3. 需求规格说明书中,用于对数据进行描述的工具是【 】。 • A. 数据流图 B. 数据结构图 C. 数据字典 D. 数据加工图 • 答案:C • 解析:数据字典(DD)是用于对数据流图中的所有数据项、数据流及数据存储进行精确定义的工具。 4. 下列关于模块独立性的叙述,正确的是【 】。 • A. 模块间的耦合性仅取决于模块间接口的复杂性 • B. 模块之间的连接越松散,耦合性就越高 • C. 模块之间的耦合性越高,模块的独立性就越强 • D. 模块的独立性越强,系统的可维护性越高 • 答案:D • 解析:模块独立性越强(高内聚、低耦合),模块间影响越小,修改和维护越容易,系统的可维护性越高。 5. 下列关于 SC 的叙述,正确的是【 】。 • A. SC 通常用于描述模块的内部结构 • B. SC 用于描述软件系统的模块结构 • C. SC 由输入模块构成 • D. SC 由输入和输出模块构成 • 答案:B • 解析:结构图(SC, Structured Chart)用于在概要设计阶段描述软件体系结构的模块分布及模块间的调用关系。 6. 一个完整的模块应当包括【 】。 • A. 执行规定部分和输入部分 • B. 输入部分、执行规定部分和输出部分 • C. 执行规定部分和出错处理部分 • D. 执行规定部分、出错处理部分及返回值 • 答案:D • 解析:一个完整的模块结构上应包含执行规定功能部分、出错处理部分及向调用者返回的标志/返回值。 7. 下列图表,可用于详细设计的是【 】。 • A. SC B. N-S 图 C. 数据流图 D. 判定树 • 答案:B • 解析:N-S 图(盒图)是详细设计中用于表达模块内部过程和控制结构的逻辑表达工具。 8. 在程序流程图中,用于表示预定义处理的图标是【 】。 • A. 双边框矩形(带双竖线的矩形) B. 平行四边形 C. 菱形 D. 矩形 • 答案:A • 解析:双边框矩形代表预定义处理(既定处理/子程序),平行四边形代表数据输入/输出,菱形代表判定,矩形代表普通处理。
二、 简答题
1. 软件需求分析的任务是什么?需求分析的步骤是什么? • 答案: • 任务:弄清用户对目标软件系统的确切要求,并以《需求规格说明书》(SRS)的形式表达出来。 • 步骤:① 获得当前系统的具体模型(业务模型);② 抽象出当前系统的逻辑模型;③ 建立目标系统的逻辑模型;④ 对目标系统进行完善和补充,写出完整的需求说明;⑤ 对需求说明进行复审。 2. 需求规格说明书包括哪些内容?有哪些图、表可用于描述需求? • 答案: • 内容:引言(目标与范围)、数据描述、功能描述、性能描述、质量保证。 • 图表:数据流图(DFD)、数据字典(DD)、结构化语言、判定表、判定树、数据结构图。 3. 需求分析工具由哪几部分组成? • 答案:需求描述语言、需求描述数据库、处理和分析系统。 4. 软件设计的内容是什么?软件设计分为哪两个步骤? • 答案: • 内容:数据设计、体系结构设计、过程设计。 • 步骤:概要设计(总体设计)和详细设计。 5. 软件系统结构设计的内容有哪些? • 答案:制定设计规范、软件体系结构总体设计、处理方式设计、数据结构设计、可靠性设计、编写概要设计文档、概要设计评审。 6. 软件的数据结构设计包括哪些内容? • 答案:确定输入/输出文件的详细数据结构;确定逻辑数据结构及其操作;确定逻辑数据结构向物理数据结构的映射;确定外部接口与控制表结构;数据保护性设计(防卫性、一致性、冗余性设计)。 7. 软件详细设计要完成哪些工作? • 答案:为每个模块确定算法与过程性描述;确定每个模块的数据结构;确定模块接口细节(用户界面、内部/外部接口);设计测试用例集。 8. 什么是模块?什么是模块的独立性? • 答案: • 模块:把用一个名字就可调用的一段程序称为模块。 • 模块独立性:指软件系统中每个模块只完成独立的子功能,并且与系统中其他模块的联系尽可能少。用内聚和耦合来度量,要求高内聚、低耦合。 9. 可以从哪些方面改善系统的初始模块结构? • 答案:① 模块功能的完善化(包括出错处理与返回标志);② 消除重复功能,改善软件结构;③ 设计功能可预测的模块;④ 模块的作用范围应在控制范围之内;⑤ 降低模块的扇出,提高扇入;⑥ 模块的大小要适中。 10. 在详细设计阶段,设计人员需要完成哪些任务?- 答案:为每个模块确定算法与过程描述(选用程序流程图、N-S 图、PAD 或伪代码等);确定模块内的数据结构;确定接口细节;设计单元测试用例。
三、 应用题
1. 银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款,则系统记录存款人姓名、地址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并打印出存款单供给储户;如果是取款而且存款留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。请用数据流图描绘本系统的功能。 • 解答: • 外部实体:储户、业务员。 • 数据存储:储户账目文件/存款记录文件。 • 主要加工(处理): 1. 校验密码/处理请求:对取款请求核对密码,验证合法性。 2. 更新存款记录:记录新存款或更新取款后的账目记录。 3. 计算利息并打印单据:计算利息金额,输出存款单或利息清单。 • 主要数据流:存/取款单、存款信息、密码校验结果、存款单/利息清单。 2. 画出下列伪代码程序的程序流程图和盒图(N-S 图)。 STARTIF P THEN WHILE Q DO f END DOELSE BLOCK g n END BLOCKEND IFSTOP• 解答: • 程序流程图绘制步骤: 1. 从 START入口进入判断判定框P。2. 若 P为真(T):进入循环判定框Q;若Q为真,执行处理框f并循环回Q;若Q为假(F),跳出循环到达STOP。3. 若 P为假(F):进入分支,顺序执行处理框g和处理框n,然后到达STOP。• 盒图(N-S 图)结构说明: 1. 最外层为一个 IF P的分支大方盒,左侧分支为P(真),右侧分支为NOT P(假)。2. 在左侧 P分支盒内,画一个WHILE Q的循环盒,循环体内部为处理框f。3. 在右侧 NOT P分支盒内,上下顺序堆叠两个处理框,上面为g,下面为n。
第三章 面向对象的软件开发方法 课后习题与答案
一、 单项选择题
1. 下列关于对象与类的关系的描述中,正确的是【 】。 • A. 对象是类的一个实例 • B. 对象是类中的操作 • C. 对象是类的封装 • D. 对象是类中的属性 • 正确答案:A • 解析:类是产生对象的模板,对象是类的一个具体实例。 2. 下列关于用例图的叙述中,正确的是【 】。 • A. 用例图用于描述系统的业务 • B. 用例图用于表示系统中类的构成 • C. 用例图用于描述系统的功能 • D. 用例图用于表示系统的状态变化 • 正确答案:C • 解析:用例图从外部用户的角度显示系统与参与者(Actor)之间的交互,用于描述系统的外部功能。 3. 下列选项中,用于显示对象间处理过程分布的图是【 】。 • A. 协作图(通信图) • B. 部署图 • C. 时序图 • D. 状态图 • 正确答案:A • 解析:协作图显示对象之间的结构关系以及对象间传递的消息,强调对象的空间分布与处理过程的分布。 4. 基于用例实现的面向对象的建模需要完成的任务不包括【 】。 • A. 了解系统的业务流程,建立活动图模型 • B. 从用户与系统交互的角度,确定目标系统功能,建立用例模型 • C. 基于用例,通过时序图描述系统内各对象之间的交互关系 • D. 了解系统的部署需求,建立部署模型 • 正确答案:D • 解析:建立部署模型属于面向对象设计(OOD)阶段的任务,不属于需求分析阶段基于用例实现的建模任务。 5. 在需求分析阶段表示目标系统与其他外部系统的关系的模型是【 】。 • A. 系统的静态模型 • B. 上下文模型 • C. 系统的组件模型 • D. MVC 模型 • 正确答案:B • 解析:上下文模型(系统边界模型)用于定义目标系统与周围外部实体/外部系统之间的边界和交互关系。 6. 下列选项中,适合作为类的属性的是【 】。 • A. 学生 • B. 计算机 • C. 服装 • D. 手机型号 • 正确答案:D • 解析:“学生”、“计算机”、“服装”均包含独立的属性和行为,适合定义为类/对象;而“手机型号”是描述手机特性的数据值,适合作为属性。 7. 下列选项中,适合作为类或对象的是【 】。 • A. 员工 • B. 员工姓名 • C. 员工所属部门 • D. 员工身份证号 • 正确答案:A • 解析:“员工”是现实世界中具有独立状态和行为的实体对象/概念,而“姓名”、“部门”、“身份证号”均为员工类的属性。 8. 下列模型能被自动转换为程序代码的是【 】。 • A. 包图 • B. 组件图(构件图) • C. 类图 • D. 部署图 • 正确答案:C • 解析:UML 建模工具(如 Rose、Enterprise Architect)可以根据类图中的类名、属性、方法及类间关系自动生成面向对象编程语言(如 Java、C++)的框架代码。 9. 时序图中不包括【 】。 • A. 对象 • B. 生命线 • C. 对象的属性 • D. 活动棒 • 正确答案:C • 解析:时序图包含 4 个基本要素:对象、生命线(虚线)、活动棒(长矩形)和消息连线;不包含对象的内部具体属性。 10. 表达类之间一般性与特殊性关系的是【 】。
- A. 泛化关系 - B. 聚合关系 - C. 关联关系 - D. 部分与整体的关系 - **正确答案:A** - **解析**:泛化关系(继承/实现)表达类与类之间“一般与特殊”或“父类与子类”的关系。11. 下列关于 MVC 模式的叙述中,正确的是【 】。- A. MVC 用视图、数据、操作三个部分组织程序- B. MVC 模型将系统分为界面层、业务逻辑层和数据访问层- C. MVC 将应用程序划分为视图、控制器、模型三个核心部件- D. MVC 应用程序被分成用户界面、计算程序、输出程序三个核心部分- 正确答案:C- 解析:MVC 是一种设计典范,将应用程序划分为视图(View)、控制器(Controller)和模型(Model)三个核心组件。
二、 简答题
1. 说明统一建模语言(UML)的用途和适用范围。 • 参考答案: • 用途:UML 是一种可视化的通用建模语言,用于对软件系统进行描述、可视化处理、构造和建立文档。 • 适用范围:适用于各种软件开发方法(特别是面向对象方法)、软件生命周期的各个阶段(需求分析、架构设计、详细设计、实现与测试),并支持不同的应用领域。 2. 在面向对象的分析中,主要使用哪 5 种类型的 UML 图? • 参考答案:活动图、用例图、时序图、类图、状态图。 3. 基于用例实现的面向对象的建模由哪几个步骤组成? • 参考答案:① 建立系统上下文模型;② 绘制业务活动图;③ 识别参与者与用例,建立用例图;④ 识别分析类(实体类、边界类、控制类),建立类图;⑤ 绘制时序图描述对象间的动态交互;⑥ 建立状态图描述复杂对象的生命周期与状态变迁。 4. 总结在面向对象分析过程中进行类图建模的基本步骤。 • 参考答案:① 识别候选类(通过名词抽取法抽取实体、角色、事件等);② 筛选候选类(剔除冗余类、无关类、模糊类、纯属性类及实现细节);③ 识别类的属性与操作(定义私有/公有可见性及操作参数);④ 识别类间的关系(关联、泛化/继承、聚合、组合、依赖及多重性)。 5. 时序图的任务是什么?时序图中包含哪些要素? • 参考答案: • 任务:按时间顺序表达多个对象之间通过传递消息进行沟通与协作的动态交互过程。 • 要素:对象(包含角色与类实例)、生命线(垂直虚线)、活动棒(窄长矩形)、消息(简单消息、同步消息、异步消息、返回消息)。 6. 状态图的作用是什么?如何识别状态的空间? • 参考答案: • 作用:描述一个特定对象在其生命周期内响应事件时的状态转变以及触发的动作。 • 识别状态空间:分析对象在业务生命周期中的关键阶段,结合对象的关键数据属性值的取值组合与边界条件来划分互斥的状态集合。 7. 面向对象设计需要完成哪些工作?面向对象设计的基本步骤是什么? • 参考答案: • 完成工作:数据/类设计(分析类转化为设计类)、体系结构设计(包图/子系统划分)、接口设计(UI 及系统接口)、构件级设计(组件图/部署图)。 • 基本步骤:① 建立系统物理体系结构;② 为各接口建模;③ 详细设计系统构件与设计类。
三、 应用题
1. 杂货店库存管理自动化系统的 OOA 建模: • 题目要求:用非正式分析法分析杂货店问题,确定对象及继承关系,建立分析类模型。 • 参考答案: • 识别继承关系:基类为“终端(Terminal)”,子类包括“销售终端(POS_Terminal)”、“退货终端(Return_Terminal)”、“发货终端(Ship_Terminal)”和“损耗折让终端(Loss_Terminal)”。 • 分析类模型设计: • 实体类: 商品(Product)、库存记录(Inventory)、销售交易(SaleTransaction)、退货记录(ReturnRecord)、损耗记录(LossRecord)。• 边界类: 终端界面(TerminalUI)。• 控制类: 库存管理控制器(InventoryController)。2. 牙科诊所预约管理系统的分析类模型: • 题目要求:建立牙科诊所预约管理系统的分析类模型。 • 参考答案: • 识别系统角色与类: • 参与者/角色: 接待员、助手、保健员、病人。• 实体类: 病人(Patient)(属性:病历号、姓名、电话)、预约记录(Appointment)(属性:约定时间、诊治状态、是否完成)、工作安排表(Schedule)。• 边界类: 预约管理界面(AppointmentUI)、查询打印界面(ReportUI)。• 控制类: 预约控制器(AppointmentController)(包含冲突检测、计算排期、取消预约等逻辑)。3. 公共图书馆自动化系统的面向对象分析与设计: • 题目要求:用面向对象方法分析设计公共图书馆自动化系统。 • 参考答案: • 用例建模: • 参与者: 读者、图书管理员。• 核心用例: 借书(需扫描借书卡与图书条形码)、还书(仅扫描图书条形码)、检索图书(按作者/书名/关键词)。• 类图设计: • 实体类: 读者(Reader)、借书卡(BorrowCard)、图书(Book)、借阅记录(BorrowRecord)。• 边界类: 借还书工作站界面(WorkstationUI)、图书检索界面(SearchUI)。• 控制类: 借还书控制器(BorrowController)、检索控制器(SearchController)。
第四章 移动应用的设计与测试 课后习题与答案
一、 单项选择题
1. 下列选项中,移动应用不同于传统应用程序的特点是【 】。 • A. 应用与网络相关 • B. 需要良好的用户界面 • C. 需要采用工程化方法进行应用开发 • D. 移动应用需要支持更多样化的人机交互方式 • 正确答案:D • 解析:传统应用与移动应用都需要良好的界面、工程化方法与网络支持;而移动应用的独特特点在于需要支持更加多样化的人机交互方式(如触摸屏、手势、语音、人脸识别及各类传感器交互)。 2. 关于开发移动应用技术的叙述中,正确的是【 】。 • A. 由于移动设备资源有限,因此开发移动应用适合采用机器级语言 • B. 由于移动设备硬件的多样性,因此应该在移动硬件上直接开发移动应用 • C. 针对不同平台的移动应用需要在不同的环境下分开开发 • D. 移动应用的规模较小,因此其开发适合采用瀑布模型 • 正确答案:C • 解析:目前移动设备平台(如 Android、iOS)及应用接口标准多样,针对不同平台的移动应用通常需要在各自特定的开发环境与框架下分别进行开发。 3. 下列选项中,正确的移动应用开发的 5 个迭代阶段是【 】。 • A. 可行性分析、需求分析、设计、测试、维护 • B. 需求分析、设计、编码、测试、维护 • C. 需求分析、设计、编码、稳固、部署 • D. 需求分析、设计、开发、稳固、部署 • 正确答案:D • 解析:教材 p.131 规定移动应用开发的 5 个主要迭代阶段依次为:需求分析阶段、设计阶段、开发阶段、稳固阶段、部署阶段。 4. 下列选项中,用于描述用户界面的模型是【 】。 • A. 任务模型 • B. 内容模型 • C. 接口模型 • D. 设计模型 • 正确答案:A • 解析:用于移动应用界面设计的 3 种模型为平台模型、表示模型、任务模型。其中任务模型是用户满足其任务目标所需执行任务的结构化表示,用于描述界面交互任务。 5. 移动计算环境的层次按照由强控制到弱控制的顺序,3 个层次依次为【 】。 • A. 软件即服务层、平台即服务层、基础设施即服务层 • B. 基础设施即服务层、平台即服务层、软件即服务层 • C. 平台即服务层、软件即服务层、基础设施即服务层 • D. 软件即服务层、基础设施即服务层、平台即服务层 • 正确答案:B • 解析:教材图 4-2“云计算体系结构的层次图”明确标出,控制力由强控制(底层)到弱控制(顶层)依次为:基础设施即服务层(IaaS) 平台即服务层(PaaS) 软件即服务层(SaaS)。 6. 下列选项中,WebApp 界面设计中的美学设计不需要关注的是【 】。 • A. 用户界面的功能 • B. 用户界面的内容 • C. 用户界面的布局 • D. 用户界面的响应时间 • 正确答案:D • 解析:“美学设计”关注页面的视觉呈现、留白、内容与导航布局;“响应时间”属于性能或时效性质量属性,不属于美学设计范畴。 7. 导航语义单元是【 】。 • A. 一个导航页面 • B. 一组关于导航信息的集合 • C. 一组导航选项 • D. 信息和相关的导航结构的集合 • 正确答案:D • 解析:导航语义单元(NSU)由一组导航元素组成,描述了特定角色/用例在内容或 WebApp 功能之间移动的导航需求,即信息和相关导航结构的集合。 8. 关于手势测试,下列叙述正确的是【 】。 • A. 手势测试对于所有的移动设备都是必需的 • B. 通过自动化工具来进行手势测试是效率较高的方法 • C. 手势测试需要考虑移动设备屏幕大小的差异 • D. 手势测试的结果不会影响移动可访问性 • 正确答案:C • 解析:屏幕大小和分辨率会影响屏幕上对象的位置与触控精准度,因此手势测试必须考虑移动设备屏幕大小的差异。
二、 简答题
1. 移动应用有哪些特征? • 参考答案:① 强调用户体验:用户更关心地理位置、随身携带带来的自由与个性化体验,良好体验比技术质量更重要;② 需求及环境的复杂性:面临屏幕尺寸多样、间歇性网络中断、电池寿命限制、传感器交互及多平台兼容等约束;③ 技术难度更高:需要解决多元化软硬件平台、多种开发框架/语言、各平台应用商店标准不一及短周期开发压力。 2. 列举一些移动应用开发需要解决的技术问题。 • 参考答案:① 多元化的硬件和软件平台;② 多种开发框架和程序设计语言(Android, iOS, Flutter 等);③ 多种具有不同规则和工具的应用商店;④ 开发周期短、市场竞争激烈;⑤ 屏幕显示尺寸限制及传感器/设备交互复杂性;⑥ 环境有效利用(物理位置与网络服务结合);⑦ 电源/电池管理限制(背光、存储、无线通信耗电);⑧ 安全保密性、隐私模式与策略;⑨ 计算与存储限制(需依靠编程技巧降低耗能);⑩ 依赖外部服务(云存储/Web 服务);⑪ 测试的复杂性(模拟器与实机差异、网络波动)。 3. 哪些因素会影响移动设备电池的待机时间? • 参考答案:背光显示屏亮度、存储器读写、无线网络连接(Wi-Fi/蜂窝移动网络数据传输)、硬件外设与传感器(GPS/蓝牙/摄像头)的使用频率,以及 CPU/处理器高负荷运行等。 4. 移动应用的设计包括哪些内容? • 参考答案:包含总体体系结构设计、导航设计、界面设计(交互设计/布局)以及内容设计。 5. 移动应用提供的处理功能完成哪些任务? • 参考答案:① 执行本地化的处理(动态生成内容和导航能力);② 提供适用于应用的业务领域计算或数据处理能力;③ 提供高级的数据库查询和访问;④ 建立与外部协作系统的接口数据交互。 6. 移动应用的导航测试要测试哪些内容? • 参考答案:① 确保允许 WebApp/App 用户游历的机制(如链接、按钮、菜单)都是功能性的;② 确认每个导航语义单元(NSU)能够被合适的用户类获得与访问;③ 检验导航路径是否正确,有无死链接或无法返回的情况。 7. 为了移动安全性,可采取的技术有哪些? • 参考答案:防火墙技术、身份鉴定(认证)技术、数据加密技术、授权控制技术,以及安全传输协议(如 HTTPS/SSL/TLS)和访问控制策略。 8. 导致移动应用性能降低的原因有哪些? • 参考答案:服务器端资源缺乏/响应慢、网络带宽不足或网络延迟高、数据库容量/查询效率不佳、操作系统与硬件性能限制、App 程序代码效率低下(内存泄漏、过度占用 CPU/电池资源)。 9. 负载测试和压力测试的任务分别是什么? • 参考答案: • 负载测试:在多种预期的不同负载条件(如不同并发用户数、交易量)下测试系统和服务器的响应性能与稳定性。 • 压力测试:在极限或过载运行条件下(将负载增加到强度极限)测试系统的耐受能力、恢复能力与防崩溃机制。
三、 应用题
题目:某网上药店的移动 App,主要为满足老年人的购药需求而设计。药店可提供典型功能,而且为每位客户维护数据库,以便提供药物信息,并且向用户提供可能的药物间潜在的副作用的警告。针对这一移动 App,用户界面的设计应该注意哪些问题?可用性测试应该测试的内容是什么?
参考答案:
1. 用户界面设计应该注意的问题: • 充分考虑老年人群体的特殊生理与认知特征(可访问性与易用性):① 视觉设计:字体应适度放大,对比度要高,图标清晰醒目,避免使用难以辨认的深暗配色;② 交互设计:触控区域(按钮、链接)面积要足够大,避免使用过于复杂的手势(如多指旋转缩放),采用简单的单击与滑动;③ 内容与警示提示:语言表达简单直白、避免专业术语,药品副作用警告必须以显著的醒目颜色(如红色警示框)与图标突出显示;④ 防错与撤销机制:提供二次确认框(如“确认购买此药吗?”),防止老年人误触,并提供清晰的“撤销”或“返回”按钮;⑤ 输入辅助:提供语音输入或大字输入法支持,降低文字输入难度。 2. 可用性测试应该测试的内容: • 针对老年目标用户在真实购药场景下的完成度与满意度进行测试:① 可理解性测试:测试老年用户能否直观理解界面上的文字、图标及药物副作用警告信息;② 任务完成效率与成功率:测试用户能否顺利完成搜索药品、查看副作用警告、下单购药等核心任务,记录完成时间和出错率;③ 易学性测试:评估首次使用的老年用户在无他人指导下能否快速学会基本购药操作;④ 可访问性(障碍适应性)测试:测试受视力衰退、手部震颤或听力下降影响的用户能否正常与 App 进行交互;⑤ 满意度评估:通过问卷或访谈收集老年用户对界面布局、字体大小、安全感和整体使用体验的反馈。
第五章 软件测试 课后习题与答案
一、 单项选择题
1. 下列选项中,不会采用白盒法进行软件测试的测试阶段是【 】。 • A. 单元测试 • B. 组装测试 • C. 系统测试 • D. 模块测试 • 正确答案:C • 解析:系统测试将软件作为系统的一个元素,在实际运行环境下进行,主要采用黑盒测试验证功能与性能;而单元测试(模块测试)与组装测试阶段均会结合白盒法检查逻辑路径。 2. 关于驱动模块的叙述,下列选项中正确的是【 】。 • A. 驱动模块用于代替被测模块的子模块 • B. 驱动模块用于代替被测模块的调用模块 • C. 仅在单元测试阶段需要编写驱动模块 • D. 仅在组装测试阶段需要编写驱动模块 • 正确答案:B • 解析:驱动模块相当于被测模块的调用程序,用于接收测试数据传给被测模块并输出实际结果。用于代替被测模块调用的子模块的是桩模块。 3. 对求整数绝对值的函数进行黑盒测试所设计的测试用例中,应将输入数据划分为等价类的个数为【 】。 • A. 1 • B. 2 • C. 3 • D. 4 • 正确答案:C • 解析:求绝对值函数的输入域为整数,分为正整数、负整数、零 3 个有效等价类。 4. 对求整数绝对值的函数进行判定覆盖测试,至少需要设计的测试用例个数为【 】。 • A. 2 • B. 3 • C. 4 • D. 5 • 正确答案:A • 解析:求绝对值函数的内部逻辑判定为 a >= 0(分支包含“真”与“假”两条路径),判定覆盖要求每个判定的真假分支至少执行一次,因此至少需要 2 个测试用例。5. 下列选项中,软件测试对象一般不包括【 】。 • A. 源程序 • B. 可执行程序 • C. 概要设计说明书 • D. 详细设计说明书 • 正确答案:B • 解析:软件测试的对象包括需求分析说明书、概要设计和详细设计的规格说明以及源程序。 6. 关于软件测试的原则,下列说法正确的是【 】。 • A. 软件测试应该尽可能由程序开发者自己完成 • B. 在编码阶段不需要进行软件测试 • C. 软件测试的目标是保证程序没有错误 • D. 测试用例需要作为测试文档的一部分予以保留 • 正确答案:D • 解析:测试用例、测试计划及测试结果作为重要的测试文档需要妥善保存以备日后维护与回归测试使用。程序员应避免检查自己的程序(A 错),测试应尽早且不断进行(B 错),软件测试的目标是发现错误而非保证无错(C 错)。 7. 下列选项中,单元测试阶段进行的重要路径测试不需要测试的内容包括【 】。 • A. 程序的时间性能是否符合要求 • B. 程序的输入参数的类型是否正确 • C. 是否存在因运算精度不够导致的错误 • D. 是否存在循环边界值引起的错误 • 正确答案:A • 解析:单元测试中的路径测试主要针对计算错误、比较错误与控制流等逻辑错误;程序的时间性能测试属于性能测试或系统测试阶段的范畴。 8. 下列方法中,不适合用于调试复杂的大程序的方法是【 】。 • A. 白盒法 • B. 回溯法 • C. 黑盒法 • D. 归纳法 • 正确答案:B • 解析:回溯法需要从发现错误表现的位置出发沿着控制流反向反推源程序代码,适合小程序;对于复杂的大程序,由于回溯路径过多而极难实施。 9. 关于测试用例的设计,下列叙述正确的是【 】。 • A. 测试用例中的输入数据必须是合法数据 • B. 测试用例必须由程序员通过分析程序结构生成 • C. 测试用例中应该包含该程序运行的预期结果 • D. 测试用例应该覆盖所有的输入/输出组合 • 正确答案:C • 解析:测试用例应当包括测试输入数据和与之对应的预期输出结果。测试用例还应包含合理的和不合理的输入条件(A 错)。 10. 某计算机系统的整数字长为 32 位,若一个软件系统有两个整数型输入数据,一个整数型输出数据,则该系统采用穷举测试需要运行的测试用例数量为【 】。- A. 个- B. 个- C. 个- D. 个- 正确答案:C- 解析:每个 32 位整数输入有 种可能,两个整数输入的组合数量为 个。
二、 简答题
1. 软件测试的目的是什么? • 参考答案:软件测试的目的在于发现错误。一个好的、成功的测试是能发现至今未被发现的错误的测试。软件测试追求的目标是以最少的时间和人力找出软件中潜在的尽可能多的各种错误和缺陷。 2. 什么是黑盒测试?什么是白盒测试? • 参考答案: • 黑盒测试(功能测试):把被测程序看成一个黑盒,不考虑程序的内部结构与代码,仅以程序的外部功能为依据来设计测试用例。 • 白盒测试(结构测试):把程序看成透明的盒,在了解程序内部结构与逻辑的前提下,通过检查程序的逻辑路径来设计测试用例。 3. 组装测试的方式有哪几种? • 参考答案:组装测试(集成测试)的方式包括:① 一次性组装测试方式(非增量式);② 自顶向下的组装测试方式(增量式);③ 自底向上的组装测试方式(增量式);④ 混合组装测试方式。 4. 系统测试在什么环境下进行? • 参考答案:系统测试是将通过确认测试的软件作为计算机系统的一个元素,与硬件、外设、支持软件、数据和人员等结合,在实际运行环境下进行的测试。 5. 确认测试阶段需要完成哪些工作? • 参考答案:确认测试阶段需要完成的工作包括:① 选择测试人员;② 构造测试用例;③ 实际运行测试(有效性测试);④ 软件配置复审;⑤ 验收测试与安装测试;⑥ 专家鉴定及交付。 6. 软件测试是否能保证软件没有错误? • 参考答案:不能。软件测试只能说明程序中存在错误,而不能证明程序中没有错误。由于软件输入的组合极其庞大,穷举测试在实际中是无法实现的,因此无论测试多么充分,都不能保证软件完全没有错误。 7. 软件的静态分析工具有哪些功能?动态测试工具有哪些功能? • 参考答案: • 静态分析工具的功能:扫描程序正文,检查变量定义与引用一致性、模块接口一致性、逻辑错误段以及违反编程规范的错误,并生成交叉引用表与分析报告。 • 动态测试工具的功能:包含测试覆盖监视程序(监视并统计语句/分支/路径覆盖率)、动态断言处理程序(实时检验断言条件是否成立)、符号执行程序(用符号代替数值验证逻辑)以及测试结果分析程序(分析性能与资源利用率)。
三、 应用题
1. 请为下列 C 语言程序设计语句覆盖测试和路径覆盖测试的测试用例。 #include <stdio.h>int main() { int A, B, X; X = 0; scanf("%d%d%d", &A, &B); if (A > 1 && B == 0) { X = X * 100; } if (A == 2 || B == 2) { X = X + 1; } printf("X = %d\n", X); return 0;}• 参考答案: • 逻辑分支与路径分析: • 第一个判定 : (A > 1 && B == 0)• 第二个判定 : (A == 2 || B == 2)• 程序共有 4 条可能的执行路径: • 路径 : 为真, 为真 • 路径 : 为真, 为假 • 路径 : 为假, 为真 • 路径 : 为假, 为假 • (1)语句覆盖测试用例(使程序中每条可执行语句至少执行一次): • 测试输入: A = 2, B = 0• 执行过程: 初始为 ;判定 为真,执行 X = X * 100();判定 为真(A==2成立),执行X = X + 1()。• 预期输出: X = 1(覆盖路径 ,程序中所有可执行语句均被覆盖)。• (2)路径覆盖测试用例(覆盖程序中所有 4 条可能的逻辑路径): 1. 路径 :测试输入 A = 2, B = 0预期输出X = 12. 路径 :测试输入 A = 3, B = 0预期输出X = 03. 路径 :测试输入 A = 1, B = 2预期输出X = 14. 路径 :测试输入 A = 3, B = 3预期输出X = 02. 设计一个求整数绝对值的函数并给出用于对其进行黑盒测试的等价类。 • 参考答案: • (1)求整数绝对值函数设计(C 语言): int my_abs(int num) { if (num < 0) { return -num; } else { return num; }}• (2)黑盒测试等价类划分与测试用例: • 有效等价类:① 正整数:测试用例输入 6预期输出6;② 零:测试用例输入0预期输出0;③ 负整数:测试用例输入-6预期输出6。• 无效等价类:④ 非整数/非法数据:测试用例输入字母 'a'或浮点数3.14预期系统提示输入错误或拒绝处理。
第六章 软件维护 课后习题与答案
一、 单项选择题
1. 软件维护的 4 种类型中,工作量占比最大的是【 】。 • A. 改正性维护 • B. 适应性维护 • C. 完善性维护 • D. 预防性维护 • 正确答案:C • 解析:完善性维护是为了满足用户提出的新功能与性能要求、扩充功能、增强性能而进行的维护,占整个维护工作的 50% 以上。 2. 为了使软件适应外部环境(新硬件/操作系统/数据环境)的变化而修改软件的过程被称为【 】。 • A. 改正性维护 • B. 适应性维护 • C. 完善性维护 • D. 预防性维护 • 正确答案:B • 解析:适应性维护是指为了使软件适应外部环境或数据环境的变化而修改软件的过程。 3. 下列选项中,不属于软件维护期间对程序进行修改的 3 个步骤的是【 】。 • A. 分析理解程序 • B. 修改程序 • C. 重新验证程序 • D. 重新进行需求分析 • 正确答案:D • 解析:软件维护期间对程序进行修改的 3 个步骤依次为:① 分析理解程序;② 修改程序;③ 重新验证程序。 4. 因为修改程序中的数据结构导致与程序设计不匹配而引发的错误,属于【 】。 • A. 修改代码的副作用 • B. 数据的副作用 • C. 文档的副作用 • D. 逻辑的副作用 • 正确答案:B • 解析:数据的副作用是指修改数据结构或数据信息导致与程序设计不匹配而引起的错误(如重新定义变量、改变数组大小等)。 5. 用于估算程序修改难度的公式 中, 代表的是【 】。 • A. 要修改模块的平均复杂度 • B. 程序中各个模块的平均复杂度 • C. 系统的总代码行数 • D. 维护消耗的总工作量 • 正确答案:B • 解析:在公式 中, 是要修改模块的平均复杂度, 是程序中各个模块的平均复杂度;若 ,说明修改难度极大。
二、 简答题
1. 什么是软件维护?引起软件维护的原因有哪些? • 参考答案: • 软件维护的定义:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。 • 引起软件维护的原因:① 用户在使用软件的过程中发现了软件测试阶段未发现的隐蔽错误;② 软件在使用过程中外部环境发生变化(如更换操作系统、硬件更新、数据环境变化);③ 用户在使用软件的过程中产生了新的功能与性能需求。 2. 软件维护分为哪几类?各类维护的主要任务是什么? • 参考答案: • ① 改正性维护:诊断和改正软件交付使用后暴露的隐蔽错误; • ② 适应性维护:使软件适应外部环境(新硬件、新操作系统、新数据库)的变化而修改软件; • ③ 完善性维护:满足用户提出的新功能、新性能要求,扩充功能和增强性能; • ④ 预防性维护:提高软件的可维护性与可靠性,为以后进一步改进软件打下良好基础。 3. 影响软件维护工作量的因素有哪些? • 参考答案:① 软件系统的规模(规模越大、功能越复杂,维护工作量越大);② 程序设计语言(强功能的高级语言代码量少、可读性高,维护工作量小);③ 系统年龄(老系统结构混乱、文档缺失,维护代价高);④ 数据库技术的应用(能有效管理和存储数据,减少维护工作量);⑤ 先进的软件开发技术(如面向对象技术、软件复用技术)。 4. 软件维护的过程包括哪些主要步骤? • 参考答案:① 确认维护要求(接收并评估维护申请报告);② 确认维护类型(判断为改正性、适应性还是完善性维护);③ 评价错误严重性与优先级;④ 进行问题分析并制定修改计划;\ ⑤ 实施程序修改(分析理解程序 修改代码 重新验证程序);⑥ 软件复审与交付。 5. 程序修改的 3 种副作用分别是什么? • 参考答案: • ① 修改代码的副作用:删除或修改子程序、标号、变量,改变控制流或时序,容易在程序其他地方引入新逻辑错误; • ② 数据的副作用:修改数据结构、重新定义变量或数组大小,导致与程序逻辑设计不匹配而报错; • ③ 文档的副作用:修改了程序代码与逻辑,但未同步更新技术文档,导致文档与源程序实际状态不一致。 6. 什么是软件的可维护性?衡量软件可维护性的 7 个指标是什么? • 参考答案: • 软件可维护性的定义:纠正软件系统中出现的错误和缺陷,以及为满足新的要求而进行软件修改的容易程度。 • 7 个衡量指标:可理解性、可靠性、可测试性、可修改性、可移植性、效率、可使用性。 7. 提高软件可维护性的方法有哪些? • 参考答案:① 建立模块化结构(高内聚、低耦合,局部化修改副作用);② 编制高质量的程序文档(保证文档与代码高度一致);③ 进行严格的软件审查(设计阶段、编码阶段与验收阶段审查);④ 选择易维护的程序设计语言(结构化、支持数据抽象的高级语言);⑤ 采用先进的开发技术与工具(如面向对象方法、数据库技术及软件复用);⑥ 加强配置管理与维护档案记录。
第七章 软件项目管理 课后习题与答案
一、 单项选择题
1. 软件项目管理的对象 4P 指的是【 】。 • A. 人员、产品、过程、项目 • B. 人员、平台、程序、项目 • C. 计划、产品、过程、项目 • D. 人员、产品、过程、价格 • 正确答案:A • 解析:软件项目管理的对象 4P 指代 People(人员)、Product(产品)、Process(过程)、Project(项目)。 2. 下列选项中,属于软件产品直接度量指标的是【 】。 • A. 功能点(FP) • B. 代码行数(LOC) • C. 软件可维护性 • D. 软件可靠性 • 正确答案:B • 解析:直接度量是对软件开发过程或产出进行的物理量度,如源代码行数(LOC)、人月数、运行速度等;而功能点(FP)、可维护性等属于间接度量。 3. 下列选项中,属于面向功能度量指标的是【 】。 • A. KLOC • B. 缺陷密度 • C. 功能点(FP) • D. 主机运行时间 • 正确答案:C • 解析:面向功能的度量以功能点(FP)为基础,通过计算外部输入、外部输出、外部查询、内部逻辑文件和外部接口文件等组件来度量。 4. 评价风险的三元组 中, 代表的是【 】。 • A. 风险的类型 • B. 风险发生的概率 • C. 风险产生的影响 • D. 风险的优先级 • 正确答案:B • 解析:三元组中 代表风险事件/类型, 代表风险发生的概率(Likelihood/Probability), 代表风险产生的影响/后果(Impact)。 5. 任务网络图中,耗时最长的路径被称为【 】。 • A. 关键路径 • B. 主要路径 • C. 核心路径 • D. 冗余路径 • 正确答案:A • 解析:任务网络图中耗时最长的路径称为关键路径(CPM),它决定了项目的最早完成时间。
二、 简答题
1. 软件项目管理的对象 4P 分别指什么? • 参考答案:① 人员(People):项目的组织者与实施者,是项目成功的关键因子;② 产品(Product):待开发的软件产品及其相关文档与约束条件;③ 过程(Process):软件开发生命周期所采取的框架活动与工程方法;④ 项目(Project):为实现预定产品目标而进行的一系列计划、管理与控制活动。 2. 参与软件项目的 5 类相关人员有哪些? • 参考答案:① 高级管理者:决定项目相关的商业议题;② 项目(技术)管理者:规划、组织和控制开发人员的工作;③ 开发人员:提供开发软件或工程化产品所需的专业技能;④ 客户:指定待开发软件的需求及相关规范;⑤ 最终用户:直接与交付使用的软件进行交互。 3. 软件项目的直接度量与间接度量有什么区别?各举出两个实例。 • 参考答案: • 区别:直接度量是对软件开发过程或产出直接进行的物理量度;间接度量是通过直接度量值推算出来的质量、性能或生产率属性。 • 实例: • 直接度量实例:源代码行数(LOC)、花费的开发工作量(人月)、测试发现的缺陷数; • 间接度量实例:功能点(FP)、缺陷密度(缺陷数/KLOC)、软件可维护性。 4. 简述风险估算的 4 种活动。 • 参考答案:① 建立风险参照标准;② 确定风险发生的概率;③ 评估风险带来的后果;④ 确定风险的整体影响估算。 5. 简述软件开发成本估算的三种常用方法。 • 参考答案:① 自顶向下估算:从总体项目规模和成本出发,按层级分解到各子系统或模块;② 自底向上估算:先估算最底层的独立任务/构件所需成本,再逐层累加汇总;③ 差别估算:将待开发项目与相似的历史已完成项目对比,估算差异部分的成本。 6. 什么是关键路径(CPM)?关键路径有什么特点? • 参考答案: • 关键路径定义:任务网络图(CPM/PERT)中耗时最长的路径。 • 特点:决定了整个项目的最早完成时间;关键路径上的每一个任务都没有浮动时间(即总时差均为 0),关键路径上任何任务的延误都会导致整个项目的完工日期延误。
三、 应用题
题目:某软件开发项目预计代码行数为 20 KLOC(2 万行代码),共投入 5 个人开发,耗时 4 个月完成(共计 20 个人月)。项目总开发成本为 20 万元人民币,测试阶段共发现 10 个缺陷。请计算:(1) 该项目的软件生产率(以 KLOC/人月 表示);(2) 该项目的每行代码成本(以 元/LOC 表示);(3) 该项目的缺陷密度(以 缺陷数/KLOC 表示)。
参考解答:
1. 软件生产率计算: 2. 每行代码成本计算: 3. 缺陷密度计算:















































































