瀑布模型
瀑布模型严格遵循软件生命周期各阶段的固定顺序,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布。
它是以文档为驱动、适合于软件需求很明确的软件项目的模型。
优点
(1)可强迫开发人员采用规范的方法
(2)严格规定了各阶段必须提交的文档
(3)要求每个阶段结束后,都要进行严格的评审。
缺点
(1)过于理想化,缺乏灵活性
(2)需求或设计中的错误往往到了项目后期才能够被发现,对项目风险的控制能力较弱。
变体是V模型:将验证确认活动应用于早期软件工程工作的方法
增量模型
增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,假设可以将需求分段为一系列增量产品,每一增量可以分别开发。第一个增量往往是核心的产品。
优点:
(1).第一个可交付版本所需要的成本和时间很少
(2).减少用户需求的变更
(3).开发由增量表示的小系统所承担的风险不大。
缺点:
(1).如果没有对用户的变更要求进行规划,那么产生的初始变量可能会造成后来增量的不稳定;
(2).如果需求不像早期思考的那样稳定和完整,那么一些增量就需要重新开发,重新发布;
(3).管理发生的成本、进度和配置的复杂性可能会超出组织的能力。
原型模型
一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。
适用于需求不够明确的项目。
根据使用原型的目的不同,原型可以分为探索性原型、实验型原型和演化型原型3种。
螺旋模型
将瀑布模型和演化模型结合起来,加入两种模型均忽略的风险分析,弥补了这两种模型的不足。
螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期分4个工作步骤
(1)制定计划
(2)风险分析
(3)实施工程
(4)用户评估
适用于庞大、复杂并且高风险的系统。
喷泉模型
以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法,开发过程具有迭代性和无间隙性。
各个阶段没有明显的界限,开发人员可以同步运行。
优点:
可以提高软件项目的开发效率,节省开发时间。
缺点:
由于喷泉模型在各个开发阶段是重叠的,在开发过程中需要大量的开发人员,不利于项目的管理,这种模型要求严格管理文档,使得审核的难度加大。