本文大纲

《我的敏捷软件项目管理实践》

迭代模型

第二章 软件开发生命周期模型 / 传统模型

简介

迭代模型通过不断创建和改进原型或概念验证来逐步完善产品。每个新版本的原型都能带来相关方的新反馈和团队的新见解。接下来,团队会在下一轮迭代中重复一个或多个项目活动,并根据新的信息进行调整。这种循环有助于识别和减少项目的不确定性。

迭代生存期模型

图x.x 迭代生存期模型

适用场景

当项目复杂、需求频繁变化,或者不同相关方对最终产品有不同的看法时,迭代模型尤其有用。尽管这种方法可能需要更长的时间,因为它更注重学习和适应,而不是单纯追求交付速度,但其灵活性可以帮助更好地应对未知和变化。

迭代与原型的区别

实践中,迭代模型有时会被误认为是原型模型。实际上,两者有相似之处,但也有不同点:

  • 原型模型:主要用于需求阶段,快速构建部分系统,让用户或客户与之互动并提供反馈。这些反馈意见可以作为进一步修改系统的依据。通过逐步调整原型,开发人员可以更好地理解用户的真实需求。

    • 过程:
      1. 用户和开发人员共同制定初始需求和项目规划。
      2. 快速分析技术用于定义需求规格。
      3. 构建并演示原型系统,用户评估性能并指出问题。
      4. 用户和设计者一起解决问题,反复这一过程,直到用户满意。
      5. 基于最终满意的原型进行详细设计和实施。

原型模型的特点

优点
  1. 减少风险:通过快速构建原型,可以克服瀑布模型中需求不明确带来的风险。
  2. 用户参与:用户可以根据原型提出具体反馈,帮助开发人员更准确地理解需求。
  3. 改进需求:根据用户反馈调整需求规格,使系统更符合用户的期望。
  4. 降低假设和风险:通过不断的反馈和调整,减少项目中的不确定性和潜在风险。
缺点
  1. 快速构建压力:在需求定义之前,需要快速构建一个原型系统。
  2. 技术选择局限:所用的技术和工具可能不符合主流发展方向。
  3. 质量挑战:快速建立的系统结构加上连续的修改可能导致产品质量下降。
  4. 创新限制:需要展示性的产品原型,可能在一定程度上限制开发人员的创新思维。

适用范围

  • 需求不明确的项目:适用于那些在项目开始前需求尚不清楚的情况。
  • 减少不确定性:适合需要减少项目不确定性的场景。

总结

原型模型通过逐步增加的方式开发,允许随时根据客户或最终用户的反馈进行调整。这种方法特别适合需求变化快、用户难以明确表达需求或开发人员对最佳架构和技术方案没有把握的情况。然而,由于原型的功能和特性会随用户反馈频繁变化,因此较难确定产品的最终形态。总的来说,原型模型通过更多的客户反馈和过程可视性,虽然牺牲了一定的可控制性,但在许多情况下仍然是非常有效的开发方法。

原型模型

图 x.x  原型模型