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模型 | 开发与测试对应 | 强调质量保障 |
| 原型模型 | 快速构建原型 | 需求不清、变化频繁 |
| 螺旋模型 | 强调风险分析 | 大型、高风险项目 |
| 喷泉模型 | 面向对象、迭代无间隙 | 面向对象开发 |
| 增量模型 | 分批次交付 | 需求可分解 |
| 敏捷开发 | 快速响应变化 | 需求变化快 |
| 统一过程 | 用例驱动、架构中心 | 大型项目 |
评论