软件开发模型

软件开发模型

瀑布模型

解释

​ 瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。

image-20220227090016338

瀑布模型的特点:

1、强调文档,前一个阶段的输出就是下一个阶段的输入,文档是个阶段衔接的唯一信息。所以很多开发人员好象是在开发文档,而不是开发软件,因为要到开发的后期,才可以看到软件的“模样”。

2、 没有迭代与反馈。瀑布模型对反馈没有涉及,所以对变化的客户需求非常不容易适应,瀑布就意味着没有回头路。 一方面市场带动需求变化,另一方面初期客户对需求描述不清楚。

而后期的需求更改成本是开始的10倍基数。

所以瀑布模型的管理框架:

  1. 线性工序,上一阶段的输出是下一阶段输入
  2. 文档驱动
  3. 下一阶段有缺陷,必须回到上一阶段
快速原型模型

解释:

快速原型模型需要迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。

快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。

image-20220227091106232

优点:

克服瀑布模型的切点,减少由于软件需求不明确带来的开发风险,互动性更高更容易了解客户需求,反复循环。

缺点:

  1. 所选用的开发技术和工具不一定符合主流的发展
  2. 快速建立起来的系统结构加上连续的修改可能会导致产品质量低下
迭代模型

解释:

即所有功能一起开发,从粗到细,逐步求精。迭代模型适用于需求不甚明确、难度比较大的软件开发。(成功率体现在一次性全部开发完成后再给客户看,若与客户实际想要的产品有出入时,要付出的代价将会很大,而迭代开发在每一个版本后都可以和客户进行确认、得到反馈;生产率体现在每一次的迭代开发都只需要专注于一部分功能或者业务逻辑的开发,产出会较高)。是一种与传统的瀑布式开发相反的软件开发过程

image-20220227083812408

与传统的瀑布模型相比较,迭代过程具有以下优点:

1)降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。因拆分成了多个小项目,每个小项目完成都测试。

2)降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。因客户看过并反馈过每个迭代。

3)加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。因每次都专注于当前迭代。

4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。因此复用性更高

增量模型

解释:

​ 增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能

​ 使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能

​ 把软件产品分解成增量构件时,唯一必须遵守的约束条件是,当把新构件集成到现有构件中时,所形成的产品必须是可测试的

image-20220227090332575

优点:

  1. 把瀑布模型的顺序特征与快速原型法的迭代特征相结合,能在较短的时间内向用户提交可完成部分工作的产品。

  2. 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展

  3. 以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统

  4. 开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整

缺点:

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

解释:

​ 使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。

​ 螺旋模型主要适用于内部开发的大规模软件项目。如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。事实上,项目越大,风险也越大,因此,进行风险分析的必要性也越大。此外,只有内部开发的项目,才能在风险过大时方便地中止项目。

image-20220227090700495

优点:

​ 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;更重要的是,在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别

缺点:

​ 螺旋模型的主要优势在于,它是风险驱动的,但是,这也可能是它的一个弱点。除非软件开发人员具有丰富的风险评估经验和这方面专门的知识,否则将出现真正的风险;当项目实际正在走向灾难时,开发人员可能还认为一切正常。

喷泉模型

解释:

​ 喷泉模型(Fountain Model)是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目。在喷泉模型中,软件开发过程的各阶段是相互迭代的、无间隙的。软件的某个部分常常被重复工作多次,相关对象在每次迭代中加入渐进的软件成分。无间隙是指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界线。由于对象概念的引入,表达分析、设计、实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙,使其开发自然地包括复用。

​ 喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质。生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期,就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

image-20220227085657156

喷泉模型的缺点
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,从而不利于项目的管理。此外,这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

喷泉模型的优点
喷泉模型不像瀑布模型,喷泉模型需要分析活动结束后开始设计活动,需要设计活动结束后开始编码活动。该模型的各个阶段没有明显的界线,开发人员可以同步进行开发。因此其优点是,可以提高软件项目开发效率,节省开发时间,适用于面向对象的软件开发过程。

敏捷开发模型

解释:

​ 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

image-20220227084305599

优点:

  1. 为项目提供了按阶段划分的检查点。
  2. 当前一阶段完成后,您只需要去关注后续阶段.
  3. 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。

缺点:

  1. 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
  2. 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
  3. 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
  4. 瀑布模型的突出缺点是不适应用户需求的变化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值