软件生命周期模型(Life Cycle Model)是描述软件开发过程中各种活动如何执行的模型.各种模型确立了软件开发中各阶段的次序限制以及开发过程所遵守的规定和限制.典型的几种软件生命周期模型有瀑布模型、演化模型、螺旋模型、喷泉模型
1.瀑布模型(waterfall
model)
瀑布模型是最早出现的软件开发模型,它将软件生命周期的各项活动规定为按固定顺序而连接的若干阶段工作,如同瀑布流水,逐级下落。
特点:
1)是一种理想化模型,瀑布模型要求有明确的需求分析,所以在现实中基本不可能实现(可在迭代模型中应用瀑布模型)
2)各阶段划分完全固定且是线性的,只有到整个过程的后期才能看到开发成果,由此增加了开发风险
3)不适应用户需求的变化
测试:按着瀑布模型的阶段划分,软件测试可分为单元测试、集成测试、系统测试
应用:需求明确,或变更很少的系统
2.演化模型(evolutionary
model)
演化模型是一种全局的软件周期模型,使用迭代的开发方法。根据用户的基本需求,通过快速分析构造出该软件的一个初始可运行版本,通常称之为原型,然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这个过程,直到产生令用户满意的软件产品。即从初始的原型逐步演化成最终的软件产品,每一次迭代可看成一个“瀑布模型”。
特点:采用了动态定义需求的方法,所以不需要有明确的需求。但是如果缺乏严格的过程管理,演化模型很可能退化为一种原始的无计划“试-错-改”模式
应用:需求不清晰,很难一次开发成功的系统
3.螺旋模型(spiral model)
对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,最初从概念项目开始第一个螺旋。每个螺旋周期分为4各工作步骤:制定计划、风险分析、实施工程、用户评估。
特点:结合了瀑布模型和演化模型的优点,并在此基础上加入了风险分析,以小的分段来构建大型系统,设计灵活,但是开发周期长,当开发完成后可能与当前技术水平有了较大差距。
应用:对于新近开发,需求不明确的情况下适用螺旋模型开发,便于风险控制和需求变更
4.喷泉模型(water fountain
model)
喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使得开发过程具有迭代性和无间隙性。
特点:主要用于描述面向对象的开发过程,核心是迭代.所有的开发活动没有明显的边界,允许各种开发活动交叉进行,提交软件项目开发效率。但是由于各开发阶段是重叠的,在开发过程中需要大量的开发人员,因此不利于项目的管理,此外还要求严格管理文档,使得审核的难度加大。
应用:面向对象的软件开发过程
小结:
以上的四种软件生命周期模型是比较典型的几种,其它的像V模型、W模型、H模型,增量模型、进化模型等都融合了它们的一些特点,在看原有的基础上改进而成。掌握各基本模型的优缺点才能更好的管理软件开发活动。