- 瀑布模型:瀑布模型将软件生命周期分为八个阶段,包括问题定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。并规定了他们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。
- 瀑布模型的主要问题:
l 各个阶段划分完全固定,阶段之间产生大量文档,极大增加工作量。
l 用户只有等到整个线性过程的末期才能见到开发成果,从而增加开发风险。
l 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重后果。
- 增量模型:在增量模型中,软件被作为一系列增量构件来设计、实现、集成和测试。每一个构件由多种相互作用模块所形成的提供特定功能的代码片段构成。增量模型各个阶段交付满足客户需求的一个子集的可运行产品。在使用增量模型时,第一个增量实现基本需求的核心产品,交付用户使用后,经过评价形成下一个增量的开发计划,包括对核心产品的修改和一些新功能的发布,这个过程在每个增量发布后不断重复,直到产生最终的完善产品。
- 增量模型的主要问题:
l 各个构件逐步并入已有软件体系结构中,所加入构件必须不破坏已构造好的系统部分,需要软件具备开放式的体系结构。
l 软件开发过程中,需求变化不可避免,该模型容易退化成边做边改,对整个软件过程失去整体控制性。
- 螺旋模型:采用一种周期性的方法来进行系统开发,在每个项目阶段使用瀑布模型法,每一个周期都包括需求定义、风险分析、工程实现和评审四个阶段。螺旋模型强调风险分析。
- 优点:
l 设计灵活,可以在项目各个阶段进行变更。
l 以小分段构建大型系统,使成本计算简单容易。
l 客户始终参与每个阶段,保证项目不偏离方向。
- 缺点:
l 建设周期长,软件技术发展比较快,经常出现软件开发完毕后,与当前技术水平差距大,无法满足当前需求。
- 螺旋模型与增量模型的区别:
l 螺旋模型事先定义大部分需求,开发过程中计划性强;增量模型事先定义少部分需求。
l 螺旋模型在开发周期内采用简化瀑布模型或快速模型,而增量模型是先做总体需求分析和设计,再在编码和测试中逐个增量开发。
l 螺旋模型每次迭代都提交一个完整软件版本,而增量开发每次在上次增量基础上提交新的一部分软件。
l 增量模型通过避免使用未成熟技术和经常的用户反馈等方法减少风险;螺旋模型中直接增加了风险分析,评价所选方案,识别和消除风险。
- 如何选择生命周期模型:
l 在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型。
l 在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型。
l 在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量迭代和螺旋模型。
l 在需求不稳定情况下尽量采用增量迭代模型。
l 在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布。
l 对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型。
l 对于全新系统的开发必须在总体设计完成后再开始增量或并行。
l 对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型。
l 增量、迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则。