文章速览
- 一、概述
-
- [1.1.瀑布模型 Waterfall Model](#1.1.瀑布模型 Waterfall Model)
- [1.2.V模型 V-Model](#1.2.V模型 V-Model)
- [1.3.原型模型 Prototyping Model](#1.3.原型模型 Prototyping Model)
- [1.4.增量模型 Incremental Model](#1.4.增量模型 Incremental Model)
- [1.5.螺旋模型 Spiral Model](#1.5.螺旋模型 Spiral Model)
- [1.6.喷泉模型 Fountain Model](#1.6.喷泉模型 Fountain Model)
- [1.7.统一过程 RUP/Unified Process](#1.7.统一过程 RUP/Unified Process)
- [1.8.敏捷开发模型 Agile](#1.8.敏捷开发模型 Agile)
- [1.9.演化模型 Evolutionary Model](#1.9.演化模型 Evolutionary Model)
- [1.10.基于构件的开发模型 CBD/Component-Based Development](#1.10.基于构件的开发模型 CBD/Component-Based Development)
- 二、总结
欢迎各位同学、前辈提出宝贵的建议或是进行分享讨论
一、概述
1.1.瀑布模型 Waterfall Model
核心思想:线性顺序、阶段分明、文档驱动
1.需求分析------>主要产出 需求规格说明书(SRS)
2.系统涉及------>主要产出 概要设计、详细设计文档
3.编码实现------>主要产出 源代码
4.测试验证------>主要产出 测试报告
5.运行维护------>主要产出 维护文档
优点:结构清晰、阶段明确、文档完整、易于管理
缺点:灵活性差、需求变更成本高、用户参与晚、风险发现迟
适用场景:需求明确、技术成熟、合同型项目
1.2.V模型 V-Model
核心思想:开发与测试一 一对应,强调验证与确认(V&V)
【此处与百度百科有区别,来源于教材内容】
1.需求分析 <------> 验收测试
2.概要设计 <------> 系统测试
3.详细设计 <------> 集成测试
4.编码实现 <------> 单元测试
优点:测试贯穿始终、质量保证前置、缺陷发现早
缺点:仍是线性模型、灵活性不足
使用场景:对质量要求极高的系统(如医疗、航空、金融核心系统)
1.3.原型模型 Prototyping Model
核心思想:快速构建可运行原型,通过用户反馈明确需求
分类:
抛弃型原型:仅用于需求确认,最终丢弃
演化型原型:逐步完善,最终演化为产品
优点:需求明确快、用户参与度高、降低需求风险
缺点:可能忽视非功能需求、原型管理困难、容易陷入"不断修改"
适用场景:需求不明确、创新性项目、用户界面密集型系统
1.4.增量模型 Incremental Model
核心思想:将系统分解为多个增量,分批次交付
特点:
每个增量都是一个可交付的子集
增量之间可以并行或串行开发
第一个增量通常是核心 功能
优点:快速交付核心价值、降低整体风险、用户可早期使用
缺点:增量划分困难、接口设计复杂、整体架构要求高
适用场景:需求较明确但工期紧、可分模块交付的系统
1.5.螺旋模型 Spiral Model
核心思想:风险驱动,将瀑布模型、原型模型结合,迭代推进
四个象限(每圈循环):
1.制定计划:确定目标、方案、约束
2.风险分析:识别并分析风险,必要时构建原型
3.工程实施:开发、验证、测试
4.客户评估:评审成果,规划下一轮
优点:风险管控强、适合大型复杂项目、灵活度高
缺点:成本高、周期长、需要丰富的风险评估经验
适用场景:大型、复杂、高风险项目(如航天、国防系统)
1.6.喷泉模型 Fountain Model
核心思想:面向对象开发的迭代、无缝特性
特点:
各阶段重叠、反复迭代
以对象驱动,分析------>设计------>编码无明显界限
支持复用
优点:适应面向对象开发、支持迭代和复用
缺点:管理难度大,阶段界限模糊
适用场景:面向对象开发、需求变化频繁的系统
1.7.统一过程 RUP/Unified Process
核心思想:用例驱动、架构为中心、迭代增量
四个阶段:
1.初始阶段(Inception);目标 确定项目范围和可行性;关键里程碑 生命周期目标
2.细化阶段(Elaboration);目标 建立架构基线; 关键里程碑 生命周期架构
3.构造阶段(Construction);目标 开发剩余构件; 关键里程碑 初始运行能力
4.移交阶段(Transition);目标 交付给客户; 关键里程碑 产品发布
六大最佳实践:
1.迭代化开发
2.需求管理
3.基于构件的体系结构
4.可视化模型(UML)
5.持续的质量验证
6.变更管理
优点:成熟度高、文档规范、适合大型团队
缺点:重量级、配置复杂、敏捷性不足
1.8.敏捷开发模型 Agile
核心思想:以人为本、快速响应变化、持续交付价值
四大价值观(敏捷宣言):
1.个体和互动 高于 流程和工具
2.可工作的软件 高于 详尽的文档
3.客户合作 高于 合同谈判
4.响应变化 高于 遵循计划
十二原则(重点):
1.最高优先级:通过持续交付有价值的软件使客户满意
2.欢迎需求变化,即使在开发后期
3.频繁交付可工作的软件(数周至数月,越短越好)
4.业务人员与开发者必须每日协作
5.面对面交流时最高效的信息传递方式
6.可工作的软件是进度的首要度量标准
7.持续关注技术卓越和良好设计
8.简单化------尽最大可能减少不必要的工作
9.自组织团队能产出最好的结构、需求和设计
10.倡导可持续开发
11.以受激励的个体为核心构建项目,并提供所需的环境和支持
12.团队定起反思如何提升效率,并以此调整自己的行为
常见方法:
1.Scrum 核心特点:Sprint迭代、Produck Backlog、每日站会
2.XP(极限编程) 核心特点:结对编程、测试驱动开发(TDD)、持续集成
3。Kanban 核心特点:可视化工作流、限制在制品(WIP)
4.Lean 核心特点:消除浪费、价值流映射
优点:响应变化快、用户满意度高、团队士气好
缺点:文档薄弱、对人员素质要求高、不适合大型分布式团队
适用场景:需求变化快、互联网产品、创新型项目
1.9.演化模型 Evolutionary Model
核心思想:系统逐步演化、持续改进
与增量模型区别:
1.增量模型:需求总体明确,分块实现
2.演化模型:需求随时间演化,需要长期演化的系统
适用场景:需求长期不稳定、需求长期演化的系统
1.10.基于构件的开发模型 CBD/Component-Based Development
核心思想:复用已有构建,像搭积木一样组转系统
流程:
需求分析------>构建分析/获取------>构建适配------>构建组装------>集成测试------>部署
优点:开发效率高、质量有保障(成熟构建)、维护成本低
缺点:构建获取困难、适配成本高、架构设计要求高
适用场景:存在大量可复用构建的领域(如ERP、中间件)
二、总结
1.速记表

2.重点概念
2.1 模型选择原则
需求明确 ------> 瀑布/V模型
需求模糊 ------> 原型模型
大型高风险 ------> 螺旋模型
快速交付 ------> 增量/敏捷
质量优先 ------> V模型
面向对象 ------> 喷泉 / RUP
2.2易混淆概念
增量 vs演化:增量是 "分块交付",演化是"逐步进化"
抛弃型原型 vs演化型原型: 前者是用完即弃,后者演化为产品
RUP vs 敏捷:RUP是重量级、文档驱动;敏捷是轻量级、代码驱动
2.3 常用判断
瀑布模型 不适合 需求频繁变更的项目
螺旋模型 最适合 大型高风险项目
敏捷开发 不重视 文档 (是"可工作的软件高于详尽的文档",不是不要文档)
V模型中 详细设计 对应 集成测试; 概要设计 对应 系统测试