CS335 第二课 软件过程 QA 复习提纲
CS335 L2 软件过程 QA 复习提纲
1. 通用过程模型与基本活动
问: 通用过程模型处理基本活动的三种主要方式是什么?
答:
- 瀑布模型: 将活动视为独立的顺序阶段。
- 增量开发: 交织进行活动,分批次增加功能。
- 集成与配置: 侧重于重用现有组件进行组装。
问: 软件过程的四个基本活动是什么?
答: 软件规格说明、软件开发、软件验证、软件演化。
2. 瀑布模型 (Waterfall Model)
问: 什么是瀑布模型?它的主要特点是什么?
答: 它是第一个被发布的软件开发过程模型,源自传统工程。特点是:计划驱动,阶段划分清晰,按顺序执行(原则上一个阶段完成后才能开始下一个阶段)。
问: 瀑布模型包含哪些主要阶段?
答: 需求分析与定义、系统与软件设计、实现与单元测试、集成与系统测试、运行与维护。
问: 请简述瀑布模型每个阶段的主要任务。
答:
- 需求分析与定义: 收集和分析需求与约束,确定可行性,编写规格说明。
- 系统与软件设计: 分配需求给软硬件,建立系统架构。
- 实现与单元测试: 编写代码,测试单个程序单元。
- 集成与系统测试: 组合单元,测试整个系统。
- 运行与维护: 部署系统,进行错误修复、更新和功能增强。
问: 瀑布模型适用于哪些类型的项目?
答: 嵌入式系统(硬件接口固定)、关键系统(需要严格的安全分析和完整文档)、大型系统(多方协作,需清晰接口定义)。
问: 瀑布模型的主要缺点或局限性是什么?
答: 难以有效应对项目过程中的需求变更。
3. V模型 (V-Model)
问: 什么是V模型?它强调了什么?
答: V模型是瀑布模型的一种变体,它强调了测试活动与开发活动之间的对应关系,突出了在每个开发阶段都进行验证和确认。
问: V模型的优点和缺点是什么?
答:
- 优点: 结构清晰,易于管理;强调全程的验证和确认;同等重视开发和测试。
- 缺点: 不适合需求易变的项目;不建议用于大型复杂的面向对象项目。
4. 增量开发 (Incremental Development)
问: 什么是增量开发?它是如何工作的?
答: 增量开发是一种将软件分批次(增量)开发的过程。从一个核心子集开始,每个增量都在前一个版本的基础上添加新功能,直到整个系统完成。开发和测试以较小的片段进行。
问: 增量开发有哪些优点?
答: 降低变更成本;能及早获得用户反馈;可以较早交付部分可用的产品。
问: 增量开发有哪些缺点?
答: 过程进展可能不直观(需要定期交付物);系统结构可能随着增量增加而退化(需要重构);频繁变更增加管理负担。
问: 增量开发可能不适合哪类项目?
答: 可能不适合大型、复杂且生命周期长的软件系统项目。
5. 重构 (Refactoring)
问: 什么是重构?
答: 重构是对软件内部结构进行修改,以使其更易于理解和修改,同时不改变其外部可观察行为。
问: 为什么要进行重构?
答: 为了改善代码结构,使其更容易添加新功能或进行维护。
问: 在进行重构之前,重要的是什么?
答: 确保有一套可靠的测试用例。
6. 螺旋模型 (Spiral Model)
问: 螺旋模型的核心思想是什么?
答: 它是一个风险驱动的过程模型,通过迭代的方式进行,每个循环都包含目标设定、风险评估与解决、开发与测试、以及规划下一轮活动。
问: 螺旋模型的每个循环通常包含哪四个主要活动象限?
答: 确定目标;评估与解决风险;开发与验证;规划下一阶段。
7. 相关术语
问: 请定义原型 (Prototype)。
答: 系统某个功能子集的临时实现,用于获取用户反馈和验证,之后通常会被丢弃。
问: 请定义概念验证 (Proof-of-Concept)。
答: 用于证明架构中某个高风险想法的可行性并暴露问题的临时代码,目的达到后通常会被丢弃。
问: 请定义骨架系统 (Skeleton System)。它有时被称作什么?
答: 实现了系统主要架构但功能极简的系统,它会被保留并作为后续开发的基础。有时被称为“演化原型 (evolutionary prototype)”。
8. 集成与配置 (Integration and Configuration / Reuse-Oriented)
问: 什么是集成与配置(面向重用)的开发过程?
答: 它是一种侧重于重用现有软件资产(如类库、服务、组件、应用系统)来构建新系统的开发方法。
问: 该过程依赖于什么?
答: 依赖于一个可重用的软件组件库和一个用于组合这些组件的集成框架。
问: 面向重用的开发过程包含哪些主要阶段?
答: 需求规格说明、软件发现与评估、需求细化、应用系统配置、组件适配与集成。
问: 面向重用的开发过程有哪些优点和缺点?
答:
- 优点: 减少开发量、成本和风险;利用成熟组件;可能更快交付。
- 缺点: 可能需要在需求上妥协;对组件的后续演进控制力有限;可能存在版本兼容性问题。
9. 软件模型选择
问: 是否存在一个适用于所有项目的“万能”软件过程模型?
答: 不存在。
问: 选择正确软件过程模型的依据是什么?
答: 取决于客户和法规要求、软件使用环境以及软件本身的类型。
10. Rational Unified Process (RUP)
问: 什么是Rational Unified Process (RUP)? 它的目标是什么?
答: RUP是一种规范的软件工程过程框架,旨在通过明确定义的角色、活动、工件和工作流,在可预测的进度和预算内,生产出满足用户需求的高质量软件。
问: RUP包含哪四个主要的顺序阶段?
答: 初始阶段 (Inception)、精化阶段 (Elaboration)、构建阶段 (Construction)、移交阶段 (Transition)。
问: RUP的初始阶段 (Inception) 的主要目标是什么?
答: 建立项目的共同愿景和基本范围,构想产品、愿景和商业案例,识别关键风险,准备环境,但不是定义所有需求或制定详细计划。
问: RUP的精化阶段 (Elaboration) 的主要目标是什么?
答: 构建并测试核心架构,解决高风险问题,发现并稳定大部分需求,为项目制定更可靠的计划和估算。产出生产质量的代码和设计。
问: RUP的构建阶段 (Construction) 主要做什么?
答: 进行大部分的系统设计、实现和测试,开发和集成系统功能,最终产出准备交付给用户的部分可工作系统。
问: RUP的移交阶段 (Transition) 主要做什么?最终系统应达到什么状态?
答: 将系统部署到生产环境,进行用户培训、支持和问题修复。最终系统应文档齐全、运行正确,并在其目标运行环境中稳定运行。
问: RUP的阶段和迭代 (Iteration) 是什么关系?
答: RUP是迭代式的。每个顺序阶段(初始、精化、构建、移交)都可能包含一次或多次迭代。
浙公网安备 33010602011771号