【软工】——软件开发模型

    软件开发模型即软件过程模型,它是软件开发全过程、活动和任务的结构框架。

    典型的软件过程模型有瀑布模型、增量模型、演化模型(原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式化方法模型。

    开发过程包括:计划、需求分析、设计、编码、测试、运维。开发过程选择合适的开发模型,会有助于提高开发效率。so本篇文章主要介绍各设计模式的特点,以及在什么环境条件下选择何种开发模式更合适。


瀑布模型:



    瀑布模型(Waterfall Model)是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。  

    其过程是:将上一步的结果作为下一步工作对象的输入,继而完成相应的工作,输出相应的成果,然后再继续传递下去...... 

    同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。

总结:

    由于瀑布模型各阶段的划分是确定的,开发模型是线性的,所以对用户的需求要求非常清晰。    

适用于:

    综上所述,该模式适用于用户需求很明确的情景下。


增量模型:



    增量模型融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。

总结:

    增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。

优点
    1) 由于能够在较短的时间内向用户提交一些有用的工作产品,因此能够解决用户的一些急用功能。
    2)由于每次只提交用户部分功能,用户有较充分的时间学习和适应新的产品。
    3)对系统的可维护性是一个极大的提高,因为整个系统是由一个个构件集成在一起的,当需求变更时只变更部分部件,而不必影响整个系统。

缺点
    1) 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。
    2) 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。
    3)如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程。

适用于:

    综上所述,该模式适用于需求不是很确定,有原有雏形,能在短期内交付一个有用的产品时。


原型模型:


    原型模型通过向用户提供原型获取用户的反馈,使开发出的软件能够真正反映用户的需求。同时,原型模型采用逐步求精的方法完善原型,使得原型能够“快速”开发,避免了像瀑布模型一样在冗长的开发过程中难以对用户的反馈作出快速的响应。相对瀑布模型而言,原型模型更符合人们开发软件的习惯,是目前较流行的一种实用软件生存期模型。

总结:

优点:

    (1)开发人员和用户在“原型”上达成一致。这样一来,可以减少设计中的错误和开发中的风险,也减少了对用户培训的时间,而提高了系统的实用、正确性以及用户的满意程度。
   (2)缩短了开发周期,加快了工程进度。
   (3)降低成本。
缺点:
    当告诉用户,还必须重新生产该产品时,用户是很难接受的。这往往给工程继续开展带来不利因素。
    开发者为了使一个原型快速运行起来,往往在实现过程中采用这种手段。
    不宜利用原型系统作为最终产品。采用原型模型开发系统,用户和开发者必须达成一致:原型被建造仅仅是用户用来定义需求,之后便部分或全部抛弃,最终的软件是要充分考虑了质量和可维护性等方面之后才被开发。

适用于:

    综上所述:用户需求不易确定的情况,通过原型来完善需求。


螺旋模型:


    螺旋模型(Spiral Model)采用一种周期性的方法来进行系统开发。这会导致开发出众多的中间版本。使用它,项目经理在早期就能够为客户实证某些概念。该模型是快速原型法,以进化的开发方式为中心,在每个项目阶段使用瀑布模型法。这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。

总结:

图中的四个象限代表了以下活动:
    四种象限
     (1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
     (2)风险分析:分析评估所选方案,考虑如何识别和消除风险;
     (3)实施工程:实施软件开发和验证;
     (4)客户评估:评价开发工作,提出修正建议,制定下一步计划。
      螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。

优点
    1)设计上的灵活性,可以在项目的各个阶段进行变更。
    2)以小的分段来构建大型系统,使成本计算变得简单容易。
    3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
    4)随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
    5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
缺点
    很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。

适用于:

     综上所述:该模型适用于风险较大的情况。


喷泉模型:


    喷泉模型(fountain model)是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。

总结:

    该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。

优点
    喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
缺点
    由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

适用于:

    综上所述:该模型适用于各阶段可以并行执行,要求开发时间短的情况。


总言:

    瀑布模型适用于:该模式适用于用户需求很明确的情景下。

    增量模型适用于:需求不是很确定,有原有雏形,能在短期内交付一个有用的产品时。

    原型模型适用于:用户需求不易确定的情况,通过原型来完善需求。

    螺旋模型适用于:风险较大的情况。

    喷泉模型适用于:各阶段可以并行执行,要求开发时间短的情况


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值