• 几种软件开发模型


    最近了解了一下软件开发模型,记录几种常见模型

    一.瀑布模型

    1.1 定义

       瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,软件开发的各项活动严格按照线性方式进行,从系统需求分析开始直到产品发布和维护,每  个阶段都会产生循环反馈,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。

    1.2 核心思想

     瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写,软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

    1.3 优缺点

    1、瀑布模型有以下优点

      1)为项目提供了按阶段划分的检查点。

      2)当前一阶段完成后,您只需要去关注后续阶段。

      3)可在迭代模型中应用瀑布模型。

      增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。

    2、瀑布模型有以下缺点

      1)在项目各个阶段之间极少有反馈。

      2)只有在项目生命周期的后期才能看到结果。

      3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

    二.增量模型

    2.1 定义

      增量模型与原型实现模型和其他演化方法一样,本质上是迭代的,但与原型实现不一样的是其强调每一个增量均发布一个可操作产品。早期的增量是最终产品的“可拆卸”版本,但提供了为用户服务的功能,并且为用户提供了评估的平台。

    2.2 优缺点

    优点

      采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。这样即可先发布部分功能给客户,对客户起到镇静剂的作用。此外,增量能够有计划地管理技术风险。

    缺点

      增量模型存在以下缺陷:

      1) 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。

      2) 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

      3)如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程

    三.螺旋模型

    3.1 定义

    螺旋模型采用一种周期性的方法来进行系统开发。这会导致开发出众多的中间版本。这种模型的每一个周期都包括四个阶段进行迭代。每迭代一次,软件开发又前进一个层次 ,它是一种以风险为导向的生命期模型,因此它适用于需求不明确的情况下,便于风险控制和需求变更
    3.2 优缺点
     优点:
     
    l 1)设计上的灵活性,可以在项目的各个阶段进行变更。
    l 2)以小的分段来构建大型系统,使成本计算变得简单容易。
    l 3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
    l 4)随着项目推进,客户始终掌握项目的最新信息 , 便于客户与和客户管理层间有效地交互。
    l 5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品
    缺点:
     
    l很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
     

    四.迭代模型

     4.1 定义

    最早的迭代过程被描述为“分段模型“,在某种程度上,开发迭代模型是一次完整地经过所有工作流程的过程:需求、分析设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集 。
     4.2 优缺点
    优点: 
    l1)降低开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
    l2)降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
    l3)加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
    l4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
    缺点:
     
    l在项目早期开发可能有所变化 ,需有一个高素质的项目管理者和一个高技术水平的开发团队
     
    l项目实施推广有一定的难度
     
     
  • 相关阅读:
    Python学习笔记2——数据类型
    Python学习笔记1——环境配置
    Dagger2 探索记3——两大进阶组件(二)
    NLP 计算机视觉 cv 机器学习 ,入们基础
    Android studio 常用快捷键
    uiautomator 1使用简介
    在Android源码中如何吧so库打包编译进入apk, 集成第三方库(jar和so库)
    android框架Java API接口总注释/**@hide*/和internal API
    Google android开发者 中国官方文档开放了呀
    android aidl通信 RemoteCallbackList客户端注册回调
  • 原文地址:https://www.cnblogs.com/blncle/p/2650836.html
Copyright © 2020-2023  润新知