此网站为PM小曹的博客网站,致力于分享项目管理、技术干货、职场心得,欢迎关注交流!
当前位置:PM小曹社区 > 项目管理 > 正文

软件生命周期模型-瀑布模型

07-04 项目管理 【作者:PM小曹】

瀑布型生命周期包括可行性分析与开发计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等阶段。其他软件生命周期未必有与瀑布型生命周期相同的阶段。
 
 
瀑布型生命周期的典型六个阶段: 
1、问题的定义及规划 
有软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。 
2、需求分析 
在确定开发可行性的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段。同样的需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。 
3、软件设计 
此阶段主要根据需求分析的结果,对整个软件系统进行设计,入系统框架设计,数据库设计等等。软件设计分为总体设计和详细设计。 好的软件设计将为软件程序编写打下良好的基础。 
4、程序编码 
将软件设计的结果转换成计算机可运行的程序代码。在编码过程中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。 
5、软件测试 
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分为:单元测试、组装测试、系统测试三个阶段。测试方法主要有黑盒测试和白盒测试两种。在测试的过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。 
6、运营维护 
软件维护是软件生命周期中持续最长的阶段。 
在软件开发完成并投入使用之后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进维护两个方面。

根据不同的业务系统情况,可将瀑布模型分为以下几种:纯瀑布模型、重叠瀑布模型、并行瀑布模型

一、纯瀑布模型
  
纯瀑布模型又称“线性模型”。模型定义了多个阶段/活动,并在所定义的阶段和活动之间,遵守严格线性的顺序关系,又存在某种对应和验证关系。
纯瀑布模型的突出特点包括:
  1. 阶段性:包含5个独立的预定义阶段,各阶段由一些预定义的活动组成,分别实现一定的职能。
  2. 严格线性:在每个阶段结束时进行出口准则检查(即里程碑检查),以判断是否可以启动下一阶段工作。如果检查结果是项目尚未准备好,项目就停留在当前阶段,直至当前阶段工作完成。不但阶段和阶段之间存在严格的线性关系,阶段内的活动之间也存在严格的线性关系。
  3. 顺序性:任一阶段都利用上一阶段输出的工作产品作为输入,实施应完成的动作,并产生本阶段的工作产品,作为输出传给下一阶段。
  4. 文档驱动:纯瀑布模型中,各阶段的主要工作成果通过文档从一个阶段传递到下一个阶段,因此本模型是文档驱动的,开发过程将产生大量的文档。
  5. 验证性:阶段之间存在验证的关系,以确保所开发的产品满足既定的设计、需求,从而保证开发了“正确的产品”。
  6. 回溯性:在某阶段执行中发现问题时,可即刻停止并回溯到上一阶段,但这种回溯通常代价很大,其实际的可回溯性是很弱的。
优点:
1,适用于需求稳定,且无其他不确定因素;2,易于理解和使用;每个阶段的产出物形成稳定的基线;3,变更被认为很少发生或是严格受控的
缺点:
对于需求不稳定或存在其他不确定因素的项目适用性差,变更实现困难且成本高。
一般在最后阶段才能看到产品,如果有未定义或未实施的需求,将会引起重复劳动,甚至开发出的产品不是用户所需要的。

二、重叠瀑布模型

重叠瀑布模型的阶段之间放弃严格线性,允许存在重叠,即在前一阶段结束前,后一阶段已可开始。这些重叠不是随意的,而是如果前一阶段没有完全结束前,后一阶段中的某些活动已具备了启动条件,就可以提前开始。这意味着项目在编排任务进度时,任务间应遵循一定的顺序关系并采用“完成-开始”的编排方式,阶段之间不再设置“完成-开始”关系。
例如,设计阶段应在需求阶段完成后再开始,但如果选择了重叠瀑布模型,则可以在软件需求分析和方案分析都完成后,就同时开始系统测试计划和概要设计,从而实现阶段的重叠。

优点:
后续阶段相关工作可提前开始,从而可充分并行利用人力资源,也为本阶段工作更好地完成提供必要的来自后续阶段的反馈信息。
对于小的、定义得很好的项目,这种类似于纯瀑布模型的重叠模型是可用的有效模型。要注意的是重叠是针对阶段提出的,活动之间仍然遵循严格线性关系。
缺点:
阶段未严格控制,里程碑不明确,很难精确地进行过程跟踪。并行地开展活动可能导致无效的沟通、错误的想法、以及低下的效率。

三、并行瀑布模型


并行瀑布模型的思路是根据产品结构,将其分解为几个逻辑上相对独立的子系统/模块,选择需要并行的阶段和活动,规划成多个并行的子项目,各子项目分别按照自己的步调开展。
并行瀑布模型将大项目分解为多个并行的子项目,规划了更细更小范围的阶段,从而将对大阶段的严格控制分解为对多个小阶段的严格控制,增加了并行性。子项目的阶段和活动可以采用纯瀑布模型,也可以采用并行瀑布模型方式。
例如,项目可以将产品分解为子系统/模块A、B、C,从流程上将产品设计时间分解为设计时间1(总体概要设计)和设计时间2(子系统概要设计),将产品测试阶段分解为测试阶段1(子系统集成测试、子系统系统测试)和测试阶段2(总体集成测试、总体系统测试),从而在产品实现层次构造子项目A、B、C。

优点:
项目工作可以并行开展,缩短后续阶段相关工作可提前开始;
充分并行利用人力资源。
缺点:
并行瀑布模型引入的问题则是子项目间的相关性无法预测。而这种相关性很可能导致所分解的子项目之间相互影响,即相互等待则等于没有分解;不等待则可能导致所开展的工作无效。

四、总结

在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。
 
优点:严格遵循预先计划的步骤顺序进行,一切按部就班比较严谨。
 
(1)为项目提供了按阶段分的检查点
 
(2)当完成一个阶段后,只需要去关注后续阶段
 
(3)可在迭代模型中应用瀑布模型
 
缺点:缺乏灵活性,太过线性理想化,不适合现代软件开发
 
(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;
 
(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;
 
(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
 
(4)各个软件生命周期衔接花费时间较长,团队人员交流成本大。
 
(5)瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。

五、适用范围

在软件系统开发过程中主要还是适用于需求易于完善定义且不易变更的软件系统。



版权保护: 本文由 PM小曹社区 收录,转载请保留链接: http://www.pmxiaocao.com/xmgl/2019_59.html

尚未注册畅言帐号,请到后台注册
博客主人PM小曹
一枚技术型项目经理,从事编程开发达8年之久,项目管理4年之长,期待与你相识!
  • 文章总数
  • 37695访问次数
  • 建站天数
  • 欢迎关注博主微信公众号[PM小曹]

    微信公众号

    标签