瀑布模型


传统的瀑布模型

Link to original

实际的瀑布模型

Link to original

特点

  1. 阶段间具有顺序性和和依赖性。
  2. 推迟实现的观点。
  3. 质量保证的观点:
    1. 每个阶段必须完成规定的文档。
    2. 每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。
  4. 文档驱动
    优点
  5. 原理简单,容易掌握。
  6. 各阶段间都有验证和确认,以便进行质量管理。
  7. 主要用于支持结构化方法。
    缺点
  8. 缺乏灵活性,不能适应用户需求的变化。
  9. 缺乏演化性,返回上一级的开发需要付出十分高昂的代价。
  10. 是线性的软件开发模型,回溯性很差。
    适用情况:需求明确、变更少的项目。

快速原型模型


快速原型模型

Link to original

特点

  1. 快速构建原型
  2. 用户参与使用反馈
  3. 反复迭代
    优点
  4. 增强了开发者与用户间的交流,有助于满足用户的真实需求。
  5. 用户可尽早得到有用的产品,及时发现问题,随时纠正错误。
  6. 减小技术、应用风险,降低开发费用,缩短开发时间。
    缺点
  7. 为了使原型尽快地工作,没有考虑软件的总体质量和长期的可维护性。
  8. 为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。
  9. 开发过程不便于管理。
    适用情况:需求不明确,创新性强的项目

增量模型


增量模型

Link to original

特点

  1. 软件被分解为多个增量构件,开发人员分批地逐步向用户提交产品。
    优点
  2. 分批次提交软件,方便用户及时了解软件进度,及早发现问题。
  3. 以构件为单位进行开发,开发人员可以逐步开发,降低软件开发风险。
  4. 开发顺序灵活,优先级最高的服务首先交付。
    缺点
  5. 没有整个软件系统的完整需求定义,会给总体设计带来麻烦。
  6. 在把每个新的增量构件集成到现有软件结构中时,必须不破坏原来已开发出的产品,具有无法集成的风险。
    适用情况:需求逐步明确、软件体系架构开放。

螺旋模型



特点

  1. 风险驱动
    优点
  2. 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。
  3. 减少了过多测试或测试不足。
  4. 维护和开发之间并没有本质区别。
    缺点
  5. 软件开发人员需要具有丰富的风险评估经验和专门知识,否则风险更大。
    适用情况:大型、高风险项目。

喷泉模型



特点

  1. 不同阶段的源泉相互重叠,两个活动之间存在交迭
  2. 保证了在各项开发活动之间的无缝过渡,在软件分析、设计和编码等各项开发活动之间并不存在明显的边界。
  3. 强调增量开发
  4. 对象驱动
    适用情况:面向对象的项目。

敏捷开发


微软过程