7.11 章节回顾
本章回顾的目的不是再把目录念一遍,而是把容易混淆的概念重新压到一张“阶段地图”上。系统开发题的干扰项常来自相邻阶段和相似术语:概要设计/详细设计、功能性/易用性/可维护性、改正性/预防性/完善性/适应性,都是典型例子。
一张阶段地图
| 生命周期位置 | 本章概念 | 必会判断 |
|---|---|---|
| 软件工程基础 | 生命周期、软件过程、CMM/CMMI | 软件工程不是只写代码,过程可以改进 |
| 开发方法 | 结构化、面向对象、面向服务 | 方法不同,建模和组织系统的方式不同 |
| 开发模型 | 瀑布、V、原型、螺旋、增量、喷泉、UP、敏捷 | 重点看需求是否稳定、风险是否高、是否分批交付 |
| 需求分析 | 需求分类、需求规格、DFD、数据字典 | 回答“系统要做什么” |
| 系统设计 | 概要设计、详细设计、模块独立、界面、架构 | 回答“系统如何组织和实现” |
| 软件测试 | 黑盒、白盒、测试阶段、McCabe | 判断方法、覆盖准则和复杂度 |
| 维护质量 | 维护类型、文档分类、质量属性 | 分类题和配对题为主 |
开发模型复盘
| 如果题干说 | 优先想到 |
|---|---|
| 需求稳定、阶段顺序、文档驱动 | 瀑布模型 |
| 开发与测试阶段对应 | V 模型 |
| 需求不清,要先给用户看样品 | 原型模型 |
| 大型复杂项目,强调风险分析 | 螺旋模型 |
| 分批交付、每批有可运行功能 | 增量模型 |
| 面向对象,阶段可重叠迭代 | 喷泉模型 |
| 用例驱动、架构为中心、迭代增量 | 统一过程 |
| 快速反馈、小步迭代、拥抱变化 | 敏捷方法 |
瀑布和敏捷是一组典型技术迭代对比:瀑布适合需求稳定、强文档和强阶段控制;当互联网和业务系统需求变化越来越快,瀑布的反馈周期长、变更成本高,就容易被敏捷、小步迭代、持续反馈的方式替代。但敏捷不是“不要计划”,而是把计划做得更短、更可调整。
需求与设计复盘
需求阶段最重要的是分类和建模。功能需求描述系统要提供什么功能;非功能需求描述性能、可靠性、安全、易用性等质量要求;设计约束限制实现方式,例如必须使用某平台或遵循某标准。
| 易混点 | 区分方式 |
|---|---|
| 功能需求 vs 非功能需求 | 前者是“做什么功能”,后者是“做得多快、多安全、多可靠” |
| 用户需求 vs 系统需求 | 前者偏用户语言,后者偏开发可实现的详细规格 |
| DFD vs 数据字典 | DFD 画数据如何流动,数据字典解释数据项含义 |
| 判定表 vs 判定树 | 都用于多条件决策,判定表适合组合完整列举,判定树适合树状路径表达 |
设计阶段要抓概要和详细的边界。概要设计负责系统结构、模块划分、接口、数据库总体设计;详细设计负责模块内部算法、数据结构和过程细节。
模块设计复盘
模块设计的中心目标是模块独立性:高内聚、低耦合。
| 原则 | 含义 | 考试识别 |
|---|---|---|
| 高内聚 | 模块内部元素围绕同一职责 | 一个模块只做一类清晰工作 |
| 低耦合 | 模块之间依赖少、接口简单 | 修改一个模块不牵连大片系统 |
| 信息隐藏 | 隐藏内部实现,只暴露必要接口 | 外部不依赖内部细节 |
| 单入口单出口 | 控制结构清晰 | 便于理解、测试和维护 |
内聚从弱到强、耦合从强到弱的排序类题要单独记;但理解上只要抓住“内部越专一越好,外部依赖越少越好”。
测试复盘
| 类别 | 方法/概念 | 识别关键词 |
|---|---|---|
| 黑盒测试 | 等价类、边界值、错误推测、因果图 | 不看代码,只看输入输出和需求 |
| 白盒测试 | 语句、判定、条件、路径覆盖 | 看程序内部逻辑 |
| 测试阶段 | 单元、集成、系统、验收 | 范围从模块到用户交付 |
| 集成测试 | 桩模块、驱动模块 | 自顶向下用桩,自底向上用驱动 |
| McCabe | 节点边数、区域数、判定节点数 |
白盒测试是字幕反复强调的重点。判定覆盖看整个判断的真/假结果,条件覆盖看每个基本条件的真/假取值;二者不能随便互相推出。McCabe 既可能单独考计算,也可能和白盒覆盖结合考。
维护、文档与质量复盘
| 主题 | 必背边界 |
|---|---|
| 改正性维护 | 修复已经发现的错误 |
| 预防性维护 | 在错误发生前消除隐患 |
| 完善性维护 | 增加功能或改善性能 |
| 适应性维护 | 适应外部环境变化 |
| 产品/用户文档 | 用户阅读,帮助使用 |
| 管理文档 | 管理人员阅读,控制进度、职责、变更 |
| 开发文档 | 开发人员阅读,支持需求、设计、测试、维护 |
| 质量模型 | 功能性、可靠性、易用性、效率、可维护性、可移植性 |
质量模型最适合做配对练习:安全保密性属于功能性,时间特性属于效率,易分析性属于可维护性,易安装性属于可移植性。
错题复盘模板
题干关键词:
生命周期阶段:
对应概念:
为什么不是其他选项:
我混淆的点:
下次识别规则:例如题干出现“模块之间接口”,生命周期阶段是测试里的集成测试;对应概念是接口和协作检查;不是单元测试,因为单元测试看模块内部;下次看到“接口、组装、桩、驱动”就先想集成测试。
例题
本章收束
第 7 章的学习重心是“阶段感”。开发模型看项目如何组织,需求分析看系统要做什么,系统设计看如何组织实现,软件测试看如何发现缺陷,软件维护看交付后如何持续演进,质量模型看好软件的评价维度。把概念放回这条链路,题目就会清楚很多。