开发模型

敏捷过程的开发方法

极限编程 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)

  • 关键特征:先快速构建原型 → 用户体验反馈 → 逐步改进为最终系统
  • 优点:帮助用户澄清需求,减少理解偏差
  • 缺点:原型开发成本高,用户可能误以为原型就是成品
  • 适用场景:需求不明确,需要和用户反复确认

📌 总结口诀

  • 瀑布一步到位,需求必须清
  • 演化原型探索,边走边看
  • 螺旋风险优先,逐步迭代。
  • 增量:分块开发,逐步交付。
  • 敏捷:快速迭代,客户驱动

区别

演化模型:是传统软件工程里对“不完整需求”的解决方案 → “逐步完善系统”

敏捷开发:是现代软件工程里对“需求频繁变化”的解决方案 → “快速响应客户”