章节概述
本章系统介绍软件开发方法学,涵盖软件生命周期八阶段、瀑布模型/演化模型/螺旋模型/增量模型/构件组装模型、统一过程(UP)、敏捷方法(XP/FDD/Scrum/水晶方法)、软件重用与构件技术、基于架构的软件设计(ABSD)以及形式化方法。重点掌握各开发模型的优缺点对比和适用场景。
知识结构框架
- 6.1 软件生命周期(GB8566-88 八阶段)
- 可行性研究与计划 → 需求分析 → 概要设计 → 详细设计 → 实现 → 集成测试 → 确认测试 → 使用和维护
- 6.2 软件开发模型
- 6.2.1 瀑布模型(含 V 模型)
- 6.2.2 演化模型
- 6.2.3 螺旋模型(风险分析驱动)
- 6.2.4 增量模型(增量发布/原型法)
- 6.2.5 构件组装模型
- 6.3 统一过程(UP)(二维模型:4 阶段×9 工作流,4 里程碑)
- 6.4 敏捷方法
- 6.4.1 极限编程(XP)——四大价值观+十二最佳实践
- 6.4.2 特征驱动开发(FDD)——5 核心过程+6 角色
- 6.4.3 Scrum——5 活动+5 价值观
- 6.4.4 水晶方法(Crystal Clear 七大特征)
- 6.4.5 其他敏捷方法(开放式源码/ASD)
- 6.5 软件重用(源代码/架构/框架/建模/构件/服务重用)
- 6.6 基于架构的软件设计(ABSD)
- 6.6.1 ABSD 方法与生命周期
- 6.6.2 基于架构的软件开发模型(ABSDM 六子过程)
- 6.7 形式化方法(形式化描述+形式化验证)
核心概念定义
软件开发模型对比
| 模型 | 核心特点 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 瀑布模型 | 阶段化文档驱动,V 模型强调测试 | 阶段清晰,文档完整 | 需求偏差放大,难适应变化,重载 | 需求明确稳定 |
| 演化模型 | 多次瀑布迭代 | 渐进深化 | 需迭代管理 | 需求逐步明确 |
| 螺旋模型 | 每周期含风险分析 | 支持需求动态变化,降低风险 | 需丰富风险评估经验,成本高 | 庞大复杂高风险系统 |
| 增量模型 | 增量发布完整版本 | 提前集成测试,快速初始版本 | 增量需均匀分配 | 架构成熟低风险 |
| 构件组装 | 搭积木式开发 | 扩展容易,可重用,并行开发 | 设计要求高,学习成本 | 构件库成熟 |
统一过程(UP)
UP 是一个迭代的二维开发模型,以架构为中心。
- 横轴四阶段:初始 → 细化 → 构建 → 交付
- 纵轴九工作流:业务建模、需求、分析设计、实施、测试、部署(工程活动);配置与变更管理、项目管理、环境(管理活动)
- 四里程碑:目标里程碑 → 架构里程碑 → 能力里程碑 → 发布里程碑
未经裁减的 UP 是重载过程,不属于敏捷方法;可根据问题裁减适应各种规模。
XP 四大价值观与十二最佳实践
四大价值观:沟通、简单、反馈、勇气(底层蕴含"尊重")。
十二最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周 40 小时、现场客户、编码标准。
Scrum 框架
- Sprint:2~4 周迭代周期
- 五个活动:产品待办事项列表梳理、Sprint 计划会议、每日 Scrum(15 分钟)、Sprint 评审会议、Sprint 回顾会议
- 三大角色:产品负责人、ScrumMaster、开发团队
- 五个价值观:承诺、专注、开放、尊重、勇气
- 产出:Sprint Backlog → 潜在可交付的产品增量
FDD 核心过程
- 开发整体对象模型
- 构造特征列表
- 计划特征开发
- 特征设计
- 特征构建
特色实践:类的个体所有、审查。
水晶方法(Crystal Clear)七大体系特征
经常交付、反思改进、渗透式交流、个人安全、焦点、与专家用户方便联系、自动测试+配置管理+经常集成的技术环境。适合 6 人以下小团队。
ABSD(基于架构的软件设计)
架构驱动方法,三个基础:功能分解、通过选择架构风格实现质量和业务需求、软件模板的使用。ABSDM 六子过程:架构需求 → 设计 → 文档化 → 复审 → 实现 → 演化。
形式化方法
采用严格数学方法,使用形式化规约语言精确定义软件系统。包含形式化描述(解决"做什么")和形式化验证(验证是否满足规约)。适用于高可靠性关键应用(如巴黎地铁 14 号线)。
关键公式与模型
软件生命周期八阶段(GB8566-88)
可行性研究与计划 → 需求分析 → 概要设计 → 详细设计 → 实现 → 集成测试 → 确认测试 → 使用和维护
确认测试 = 验证软件是否同需求一致;维护贯穿整个使用过程
可行性研究与计划 → 需求分析 → 概要设计 → 详细设计 → 实现 → 集成测试 → 确认测试 → 使用和维护
确认测试 = 验证软件是否同需求一致;维护贯穿整个使用过程
UP 二维模型
横轴(时间):初始 → 细化 → 构建 → 交付(4 阶段,4 里程碑)
纵轴(工作流):业务建模·需求·分析设计·实施·测试·部署 | 配置变更管理·项目管理·环境
初始→目标里程碑;细化→架构里程碑;构建→能力里程碑;交付→发布里程碑
横轴(时间):初始 → 细化 → 构建 → 交付(4 阶段,4 里程碑)
纵轴(工作流):业务建模·需求·分析设计·实施·测试·部署 | 配置变更管理·项目管理·环境
初始→目标里程碑;细化→架构里程碑;构建→能力里程碑;交付→发布里程碑
ABSDM 六子过程
架构需求 → 架构设计 → 架构文档化 → 架构复审 → 架构实现 → 架构演化
设计、文档化、复审为迭代过程;演化含七步(需求变动归类→计划→修改构件→更新交互→组装测试→技术评审→产生新架构)
架构需求 → 架构设计 → 架构文档化 → 架构复审 → 架构实现 → 架构演化
设计、文档化、复审为迭代过程;演化含七步(需求变动归类→计划→修改构件→更新交互→组装测试→技术评审→产生新架构)
SVG 图表参考
- 图6-1 瀑布模型
考试要点
- 瀑布模型特点与缺点(文档驱动、需求偏差放大、难适应变化)
- 螺旋模型核心:风险分析,适用于高风险大型系统
- 增量模型两种策略:增量发布与原型法
- UP 四阶段、四里程碑、九工作流;UP 是重载过程非敏捷
- XP 四大价值观与十二最佳实践
- Scrum 五活动(Sprint 计划/每日 Scrum/Sprint 评审/回顾/待办事项梳理)
- FDD 五核心过程与类的个体所有特色
- ABSD 三个基础与 ABSDM 六子过程
- 构件标准(CORBA/EJB/COM-DCOM)