瀑布模型将软件生命周期划分为:
指定计划——需求分析——软件设计——程序编写——软件测试——运行维护
一般适用于功能,性能明确,完整无重大变化的软件系统的开发
(1) 阶段间具有顺序性和依赖性
(2)推迟现实的观点
(3)质量保证的观点
(1)有利于大型软件开发过程中人员的组织,管理
(2) 有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率
(1)开发过程一般不能逆转,否则代价太大
(2)实际的项目开发很难严格按该模型进行
(3)客户往往很难清楚地给出所有的需求
增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批
次地分析,设计,编码,和测试这些增量组件。
适合于软件需求不明确,设计方案有一定风险的软件项目
将开发的软件系统模块化和组件化
(1) 将待开发的软件系统模块化,可以分批次提交软件产品,用户可以及时了解
项目的进展
(2)以组件为单位进行开发降低了软件开发的风险
(3)开发顺序灵活,开发人员可以对组件的实现顺序进行优先级排序
要求待开发的软件系统可以被模块化,如果待开发的软件系统很难被模块化,将会
给增量开发带来很大麻烦
螺旋模型是一种演化软件开发过程模型,兼顾了快速原型的迭代的特征以及瀑布模型的
系统化与严格监控
对于新近开发,需求不明确的情况下,适用于螺旋模型进行开发
(1)设计上的灵活性,可以在项目的各个阶段进行变更
(2)以小的分段来构建大型系统,使成本计算变得简单容易
(3)客户始终参与每个阶段的开发,保证了项目部偏离正确方向以及项目的可控性
(4) 随着项目的推进,客户始终掌握项目的最新信息,从而客户能够和管理层有效地
交互。
(5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品
很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快
经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
快速原型模型是模型模式在软件分析,设计阶段的应用,用来解决用户对软件需求上
的模糊认识,或用来试探某种设计是否能够获得预期结果
一般适用于以下特征的软件开发项目。已有产品或产品的原型,只需客户的工程项目
简单而熟悉的行业和领域,有快速原型开发工具,进行产品移植或升级
(1) 可及早为用户提供有用的产品
(2) 可及早发现问题,随时纠正错误
(3) 减少技术,应用风险,缩短开发时间,减少费用,提高生产率
(4)通过实际运行原型,提供直接评价系统的方法,促使用户主动
参与开发活动,加强了信息反馈,促进各类人员的协调,减少
误解,适应需求变化,能有效提高系统质量
(1)缺乏丰富而强有力的软件工具和开发环境
(2)缺乏有效的管理机制,还未建立起自己的开发标准。
(3)对设计开发环境要求较高
(4)在多次重复改变原型的过程中,程序员会感到厌倦
(5)系统的易变性对测试有一定影响,难于做到彻底测试,更新文档较为困难
喷泉模型是一种以用户为动力,以对象为驱动的模型,主要用于描述面向对象
的软件开发过程。该模型认为软件开发过程自上而下周期的各阶段是相互迭代
和无间隙的特性。
适用于面向对象的开发方法
(1) 为项目提供了按阶段划分的检查点
(2)当前一阶段完成后,只需要去关注后续阶段
(3)可在迭代模型中应用瀑布模型
(1)在项目各个阶段之间极少有反馈
(2) 只有在项目生命周期的后期才能看到结果
(3) 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。