1. CMM/CMMI 能力成熟度模型

CMM - 能力成熟度模型

CMM(Capability Maturity Model)是软件过程能力成熟度模型,用于评估软件组织的开发能力。

CMMI - 能力成熟度模型集成

CMMI(Capability Maturity Model Integration)是CMM的升级版,集成了多个领域的成熟度模型。


2. 软件过程模型

瀑布模型(Waterfall Model)

瀑布模型是经典的软件开发生命周期模型,将软件开发过程分为固定的阶段,按顺序执行:

  • 需求分析
  • 系统设计
  • 编码实现
  • 测试验证
  • 运行维护

特点

  • 阶段明确,文档驱动
  • 前一阶段完成后才能进入下一阶段
  • 适用于需求明确、变更少的项目

V模型(了解)

V模型是瀑布模型的变种,强调测试与开发的对应关系:

开发阶段 测试阶段
需求分析 系统测试
概要设计 集成测试
详细设计 单元测试
编码实现

演化模型(Evolutionary Model)

演化模型通过逐步完善的方式进行软件开发,每次迭代都产生一个可运行的版本。

增量模型(Incremental Model)

增量模型将软件系统分解为多个增量构件,分批次开发交付。

原型模型(Prototype Model)

原型模型通过快速构建原型来明确用户需求:

  • 适用场景:用户需求不清、需求经常变化的情况
  • 特点:快速构建、用户反馈、逐步完善
  • 适用范围:系统规模不是很大也不太复杂时

螺旋模型(Spiral Model)

螺旋模型将瀑布模型演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。

特点

  • 强调风险评估
  • 每轮迭代都包含计划、风险分析、工程、评估四个阶段
  • 适用于大型、高风险项目

喷泉模型(Water Fountain Model)

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合面向对象的开发方法。

特点

  • 支持软件重用
  • 支持多项开发活动集成
  • 具有迭代性无间隙性

敏捷开发模型(Agile Development)

敏捷开发强调快速响应变化、持续交付价值:

  • 核心思想:个体和互动高于流程和工具;工作的软件高于详尽的文档;客户合作高于合同谈判;响应变化高于遵循计划
  • 常见方法:Scrum、XP(极限编程)、Kanban等

统一过程(UP)模型

统一过程(Unified Process)是一种用例驱动的、以架构为中心的、迭代和增量的软件开发过程。


3. 各模型对比总结

模型 特点 适用场景
瀑布模型 阶段清晰、顺序执行 需求明确、变更少
V模型 开发与测试对应 强调质量保障
原型模型 快速构建原型 需求不清、变化频繁
螺旋模型 强调风险分析 大型、高风险项目
喷泉模型 面向对象、迭代无间隙 面向对象开发
增量模型 分批次交付 需求可分解
敏捷开发 快速响应变化 需求变化快
统一过程 用例驱动、架构中心 大型项目