第6章 · 知识精要

开发方法

章节概述

本章系统介绍软件开发方法学,涵盖软件生命周期八阶段、瀑布模型/演化模型/螺旋模型/增量模型/构件组装模型、统一过程(UP)、敏捷方法(XP/FDD/Scrum/水晶方法)、软件重用与构件技术、基于架构的软件设计(ABSD)以及形式化方法。重点掌握各开发模型的优缺点对比和适用场景。

知识结构框架

核心概念定义

软件开发模型对比

模型核心特点优点缺点适用场景
瀑布模型阶段化文档驱动,V 模型强调测试阶段清晰,文档完整需求偏差放大,难适应变化,重载需求明确稳定
演化模型多次瀑布迭代渐进深化需迭代管理需求逐步明确
螺旋模型每周期含风险分析支持需求动态变化,降低风险需丰富风险评估经验,成本高庞大复杂高风险系统
增量模型增量发布完整版本提前集成测试,快速初始版本增量需均匀分配架构成熟低风险
构件组装搭积木式开发扩展容易,可重用,并行开发设计要求高,学习成本构件库成熟

统一过程(UP)

UP 是一个迭代的二维开发模型,以架构为中心。

未经裁减的 UP 是重载过程,不属于敏捷方法;可根据问题裁减适应各种规模。

XP 四大价值观与十二最佳实践

四大价值观:沟通、简单、反馈、勇气(底层蕴含"尊重")。

十二最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周 40 小时、现场客户、编码标准。

Scrum 框架

FDD 核心过程

  1. 开发整体对象模型
  2. 构造特征列表
  3. 计划特征开发
  4. 特征设计
  5. 特征构建

特色实践:类的个体所有、审查。

水晶方法(Crystal Clear)七大体系特征

经常交付、反思改进、渗透式交流、个人安全、焦点、与专家用户方便联系、自动测试+配置管理+经常集成的技术环境。适合 6 人以下小团队。

ABSD(基于架构的软件设计)

架构驱动方法,三个基础:功能分解、通过选择架构风格实现质量和业务需求、软件模板的使用。ABSDM 六子过程:架构需求 → 设计 → 文档化 → 复审 → 实现 → 演化。

形式化方法

采用严格数学方法,使用形式化规约语言精确定义软件系统。包含形式化描述(解决"做什么")和形式化验证(验证是否满足规约)。适用于高可靠性关键应用(如巴黎地铁 14 号线)。

关键公式与模型

软件生命周期八阶段(GB8566-88)
可行性研究与计划 → 需求分析 → 概要设计 → 详细设计 → 实现 → 集成测试 → 确认测试 → 使用和维护
确认测试 = 验证软件是否同需求一致;维护贯穿整个使用过程
UP 二维模型
横轴(时间):初始 → 细化 → 构建 → 交付(4 阶段,4 里程碑)
纵轴(工作流):业务建模·需求·分析设计·实施·测试·部署 | 配置变更管理·项目管理·环境
初始→目标里程碑;细化→架构里程碑;构建→能力里程碑;交付→发布里程碑
ABSDM 六子过程
架构需求 → 架构设计 → 架构文档化 → 架构复审 → 架构实现 → 架构演化
设计、文档化、复审为迭代过程;演化含七步(需求变动归类→计划→修改构件→更新交互→组装测试→技术评审→产生新架构)

SVG 图表参考

考试要点
  • 瀑布模型特点与缺点(文档驱动、需求偏差放大、难适应变化)
  • 螺旋模型核心:风险分析,适用于高风险大型系统
  • 增量模型两种策略:增量发布与原型法
  • UP 四阶段、四里程碑、九工作流;UP 是重载过程非敏捷
  • XP 四大价值观与十二最佳实践
  • Scrum 五活动(Sprint 计划/每日 Scrum/Sprint 评审/回顾/待办事项梳理)
  • FDD 五核心过程与类的个体所有特色
  • ABSD 三个基础与 ABSDM 六子过程
  • 构件标准(CORBA/EJB/COM-DCOM)