大叔自由人

软考 / 架构师 / 第6章

开发方法

章节概述

本章系统介绍软件开发方法学,涵盖软件生命周期八阶段、瀑布模型/演化模型/螺旋模型/增量模型/构件组装模型、统一过程(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 核心过程

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

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

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

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

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

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

形式化方法

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

关键公式与模型

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