瀑布模型
特点:
- 阶段间具有顺序性(线性行)和依赖性
- 推迟实现
- 质量保证
(1)文档驱动
(2)每个阶段开始前会进行评审(错误发现得越早,代价越小)
建立在完备的需求分析的基础上
瀑布模型是一种整体(开发过程整体推进)开发模型。在开发过程中,用户看不见系统什么样子,只有提交的时候,用户才能看见一个完整的系统
适用于功能和性能明确、完整、无重大变化的软件开发
例如 系统软件、嵌入式软件等预先指定系统(再开发前可以完整、准确、一致和无二义性地定义其目标、功能和性能)
优点:
- 强迫开发人员采用规范的方法,养成良好地习惯
- 规定每个阶段必须提交的文档
- 要求每个阶段交出的所有产品都必须经过质量保证小组地仔细验证
缺点: - 一种理想的线性开发模型,缺乏灵活性,特别是无法解决软件需求不明确的问题
- 上述问题往往在开发的过程完成后才能发现,但已经为时太晚
快速原型模型
本质是“快速”,开发人员应该尽可能快的建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的目的是**获取用户的真正需求**,一旦需求确定,原型将被抛弃。
优点:
- 软件产品的开发基本上是线性顺序进行的
(1)快速原型阶段的原型得到了用户的认可
(2)开发人员在原型阶段对系统的认识更深 - 4GL给快速原型提供了方便
【4GL:第四代语言,用户定义“做什么”,而不是“如何做”】
增量模型
增量模型把软件产品作为一系列的增量构件来设计、编码、集成和测试,每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量的构建往往实现软件的基本需求,提供最核心的功能。
优点:
- 在较短时间内提供能完成基本工作的产品
- 给用户提供足够的时间适应新产品
困难: - 集成新的构建时不能破坏已开发的产品
- 必须有开放的体系结构
螺旋模型
螺旋模型最大的特点:风险驱动(在软件开发过程中反复地进行风险检验)
基本思想:在每个阶段之前都加上了风险分析过程的快速原型模型
优点:
- 有助于软件重用
- 减少了测试工作量
- 将维护纳入螺旋,开发的过程就是维护的过程
弱点:经验丰富的风险分析师至关重要
喷泉模型
面向对象的生命周期模型
“喷泉”体现了面向对象开发过程迭代和无缝的特性
混合模型
把几种模型组合为一种混合模型,根据具体的项目问题,制定开发策略
=========================================================
适用范围
瀑布模型
- 需求不发生变化或者很少发生变化,开发人员能够一次性的获取所有的需求
- 软件开发人员具有丰富经验,对软件开发领域很熟悉
- 软件的风险较低
可以和增量模型的适用范围联想记忆
快速原型模型
获取用户真正的需求
增量模型
- 软件产品可以分批次进行交付
- 待开发的软件系统能够被模块化
- 软件开发人员对应用领域不熟悉,难以一次性的进行系统开发
- 项目管理人员把握全局的水平较高
- 适合开始成本低,人员少,增量功能多,需求经常发生改变的软件开发过程
螺旋模型
大型高风险项目
内部开发的大规模软件项目
喷泉模型
面向对象