常用的几种软件生命周期模型

一、瀑布模型

瀑布模型各个阶段为:计划,需求分析,设计,程序编码,软件测试,运行维护。

常用的几种软件生命周期模型_第1张图片

瀑布模型将软件生命周期的各项活动自上而下如瀑布流水依次连接,上一阶段的输出作为下一阶段的输入,同时,在每一个阶段如果发现问题,都可以逆流而上,向上一阶段进行反馈,然后做适当的修改,但是只能逐层反馈,不能跨级反馈。

通过瀑布模型归纳得出:如果每一阶段都能保证有效性,那么最终产生的结果也能保证其有效性。

通过各个阶段,会依次输出(即下一阶段的输入)以下产品:软件需求规约,设计文档,实际代码,测试用例,最终产品等等。

瀑布模型的优点:

  • 有良好的需求确认入口,为后续的开发奠定良好的基础。
  • 强调设计过程。软件是“创造”出来的,不是“制造”出来的,所以设计显得格外重要。
  • 每一阶段结束后要进行复审,允许获取方/用户的参与,有效的控制了系统的质量问题。
  • 当前一阶段完成时,只需要关注后续阶段即可。(已经确保了前一阶段的有效性)

瀑布模型的缺点:

  • 客户必须能完整、正确和清晰的表达出需求,同时开发人员一开始就必须理解需求。(实际上在很多项目中,客户都很难在一开始就表达出明确的需求,开发人员也很难在一开始就理解所有需求)
  • 缺乏灵活性。如果一开始的需求出现了偏差,那么很大可能会导致最终产品出现偏差。
  • 各阶段可能会产生过多文档,造成不易管理。
  • 在瀑布模型结束之前都不能演示系统的功能,增加了项目的风险。

 

二、增量模型

增量模型将需求进行分段,分成一系列增量产品,每一增量可以分别开发,即:将软件模块化,每一模块为一增量组件,然后分别进行开发,所有增量叠加在一起就形成了最终的软件产品。

常用的几种软件生命周期模型_第2张图片

另外,每一个增量分别开发时,都是一个瀑布模型,所以可以把增量模型看成是瀑布模型的升级版,瀑布模型的变体。

增量模型的优点:

由于增量模型作为瀑布模型的变体,所以增量模型具有瀑布模型的所有优点,除此之外还有:

  • 第一个可交付版本所需成本和时间相比于瀑布模型来说是很少的,比如说第一个增量只有软件的核心功能。
  • 能很快的看到一些成果,增加开发人员的信心。
  • 开发风险相对不大。(大事化小,小事化了,分而治之)
  • 由于可以很快的发布第一格版本,因此可以减少用户需求的变更,对用户形成了制约。

增量模型的缺点:

  • 由于初始增量是后续增量的基础,所以如果要对初始增量的需求进行修改,可能会影响后续的增量。
  • 增量模型要求必须有一部分的需求是可以确定的(即:不用把所有需求都确定下来,但是必须要先确定一部分),因为每一个增量都相当于是一个瀑布模型,这样就不难理解了。
  • 增量过多会造成管理成本超支,影响进度。

 

三、演化模型

演化模型能在需求不明确的情况下,通过不断迭代,逐步让需求明确。经过多次迭代,每次迭代都会历经需求分析,设计,编码,测试,运行这些过程。每次迭代产生一个增量,迭代后所产生的结果都会向用户进行反馈,然后根据用户的要求再对需求进行修改,然后进行下一次迭代,这样不断迭代,最终产生用户满意的产品。

常用的几种软件生命周期模型_第3张图片

其中每一个迭代过程都相当于一个小的瀑布模型,只是在需求分析阶段不太一样。

:不能弱化需求分析阶段的工作!

演化模型的优点:

  • 在需求不明确的情况下,可以使用该模型。
  • 用户可以通过运行系统来对需求进行改进。
  • 需要更多用户/获取方的参与,增加了对软件质量的控制。

演化模型的缺点:

  • 每个迭代都会有管理成本,较多的迭代使得管理成本较大。
  • 容易让开发团队有不进行需求分析的借口。
  • 用户不易理解该模型不断迭代演化的特点,因此当某次迭代后的反馈不理想时,用户容易产生抱怨情绪。(实际上,这一缺点也是帮助了开发团队能从用户那儿获取到更明确的需求,因为用户抱怨,不满意,所以会提出改进意见,使得需求更加明确,促进了下一次的迭代)

:其实很多用户都有一个特点:说不清楚自己想要什么,但是当东西放在他面前的时候,他却能挑出一堆的毛病来。

 

四、喷泉模型

喷泉模型主要用于描述面向对象的软件的开发过程,该模型自下而上,各阶段无缝连接,可多次迭代。

迭代:目的是求精。系统某部分被重复工作多次,相关的功能在迭代中逐渐接近完善。

无缝:即各个阶段之间不存在明显的边界。

常用的几种软件生命周期模型_第4张图片

喷泉模型的优点:

  • 由于各阶段是无缝连接的,所以各阶段可以同步开发,提高开发效率。

喷泉模型的缺点:

  • 由于多次迭代,会产生大量的文档,会导致文档管理困难。

 

五、螺旋模型

螺旋模型是在瀑布模型和演化模型的基础上加入了风险分析。一个迭代过程为:制定计划,风险分析,开发,评估。这四个活动分布在笛卡尔坐标的四个象限中,一个象限表示一个活动。

常用的几种软件生命周期模型_第5张图片

从制定计划开始,然后风险分析,如果通过了风险分析,则进入开发阶段,开发完成后再进行评估。评估后又进入外一层螺旋进行下一次循环迭代,制定计划,风险分析。。。直到项目开发完成或者没有通过风险分析为止。

螺旋模型其实和演化模型有些类似,都是通过不断迭代去完善需求,完善系统。但是,螺旋模型有一个最大的特点就是:风险分析。

螺旋模型的优点:

  • 对大型的项目有较好的风险控制能力。

螺旋模型的缺点:

  • 需要分析人员有风险分析的经验,因为分析失误会造成很大的损失。
  • 螺旋模型周期相对较长,所以不适用于大部分软件开发项目。

 

六、快速原型模型

快速原型是快速建立起来的程序,它只是最终产品的子集(或雏形),建立快速原型的作用是帮助用户确定需求以及可以用于确定项目的可行性。

常用的几种软件生命周期模型_第6张图片

快速原型模型主要部分可以分为:

  1. 原型快速分析:分析者和用户相互配合,快速确定软件系统的基本需求。
  2. 原型构造:在原型快速分析的基础上,只考虑主要特性,快速构造一个可运行的系统。
  3. 原型运行与评价:开发人员与用户频繁沟通,发现问题,消除误解,目的是发现新需求并修改原有需求。
  4. 原型修正:根据新需求对原型系统进行修正。
  5. 判定原型完成:若原型修改后获得了参与者的一致认可,那么原型开发的迭代就可以结束了。

快速原型模型的优点:

  • 主要针对于小型的、快捷的,并且需求不明确的项目.
  • 有的软件原型可以作为最终产品的一部分。

快速原型模型的缺点:

  • 快速建立的系统结构加上连续修改可能导致产品质量低下,原型系统的内部结构可能不好。

 

你可能感兴趣的:(想写啥就写啥)