开发模型
敏捷过程的开发方法
极限编程 XP (Extreme Programming)
- 特点:结对编程、测试驱动开发(TDD)、持续集成
- 记忆:“极限 → 程序员双人跳”(结对编程)
水晶法 Crystal
在每个不同的系统都需要一套不同的策略、约定和方法论
- 特点:强调团队沟通、根据项目规模和关键性选择不同“颜色”方法
- 记忆:“水晶多颜色”
并列争球法 Scrum
- 特点:迭代周期称为 冲刺 Sprint(常见 30 天左右),强调每日站会、产品待办列表(Backlog)
- 记忆:“Scrum → 冲刺”(就像球场比赛的冲锋)
自适应软件开发 ASD (Adaptive Software Development)
- 特点:迭代过程 = 推测 → 协作 → 学习
- 记忆:**“ASD → 三步走”
📊 软件开发模型对比表(完整版)
模型 | 核心思想 | 适用场景 | 优点 | 缺点 |
---|---|---|---|---|
瀑布模型 | 阶段顺序执行,需求必须前期确定 | 需求明确、变动小的项目 | 管理简单,结构清晰 | 缺乏灵活性,需求变更代价大 |
原型模型 | 先构建原型,获取用户反馈,再演化为最终系统 | 需求不明确,需要和用户反复确认 | 用户参与度高,快速发现问题 | 原型成本高,可能导致用户误解“原型=成品” |
演化模型 | 系统逐步演化,需求在迭代中完善 | 需求不完整、逐渐成型的系统 | 适应需求变化,用户参与多 | 版本管理复杂,成本可能上升 |
螺旋模型 | 迭代开发,每轮都包含风险分析和评估 | 大型复杂项目,高风险项目 | 强调风险控制,灵活 | 风险分析要求高,管理复杂 |
增量模型 | 系统功能拆分为增量,逐步交付 | 大型项目,需求部分明确 | 可早期交付部分功能,风险分散 | 架构必须支持增量,整体进度控制难 |
敏捷开发 | 短周期迭代,客户高度参与,快速响应变化 | 需求变化频繁的项目 | 灵活,用户满意度高 | 文档少,大型项目协调难 |
🧠 软件开发过程模型思维导图
1️⃣ 瀑布模型 (Waterfall)
- 关键特征:需求→设计→实现→测试→维护,阶段线性,不可逆
- 优点:结构清晰、文档完善、管理简单
- 缺点:需求变更代价极大,不适合需求不明项目
- 适用场景:需求明确且稳定,系统规模不大
2️⃣ 演化模型 (Evolutionary)
- 关键特征:原型 + 迭代,逐步演化出最终系统
- 优点:适应需求不确定,用户参与高
- 缺点:版本多,管理复杂,成本可能较高
- 适用场景:需求不完整,需要探索和验证
3️⃣ 螺旋模型 (Spiral)
- 关键特征:迭代开发 + 风险分析,每次迭代四步:计划 → 风险 → 开发 → 评审
- 优点:适合高风险、大型复杂系统
- 缺点:风险分析要求高,管理成本高
- 适用场景:高风险、大型复杂项目
4️⃣ 增量模型 (Incremental)
- 关键特征:系统功能拆分为多个增量,每个增量独立开发和交付
- 优点:可早期交付部分功能,用户可提前使用
- 缺点:架构必须支持增量开发,整体进度控制难
- 适用场景:大型项目,希望分阶段交付
5️⃣ 敏捷开发 (Agile)
- 关键特征:短周期迭代、客户高度参与、持续反馈、快速交付
- 优点:灵活,快速响应变化,强调团队沟通
- 缺点:文档不足,大项目协调难
- 适用场景:需求变化频繁、快速上线、互联网产品
6️⃣ 原型模型 (Prototype)
- 关键特征:先快速构建原型 → 用户体验反馈 → 逐步改进为最终系统
- 优点:帮助用户澄清需求,减少理解偏差
- 缺点:原型开发成本高,用户可能误以为原型就是成品
- 适用场景:需求不明确,需要和用户反复确认
📌 总结口诀
- 瀑布:一步到位,需求必须清。
- 演化:原型探索,边走边看。
- 螺旋:风险优先,逐步迭代。
- 增量:分块开发,逐步交付。
- 敏捷:快速迭代,客户驱动。
区别
演化模型:是传统软件工程里对“不完整需求”的解决方案 → “逐步完善系统”。
敏捷开发:是现代软件工程里对“需求频繁变化”的解决方案 → “快速响应客户”。