> 文档中心 > 开发模型详解(总结与归纳)

开发模型详解(总结与归纳)

十分钟了解java常用开发模型(总结不易,超详细!)

  • 首先了解开发模型的作用(好处)
  • 十一种开发模型
    • 瀑布模型(Waterfall-Model)
        • 计划阶段
        • 介绍
        • 优缺点
          • 优点
          • 缺点
    • 迭代模型(Stagewise-Model)
        • 介绍
        • 特点:
        • 优缺点
          • 优点
          • 缺点
        • 适用于
    • 螺旋模型(Spiral-Model)
        • 描述:
        • 特点:
        • 核心:
        • 优缺点
          • 优点
          • 缺点
    • 敏捷开发模型(Agile-Development-Model)
        • 介绍
        • 敏捷开发模式的分类
        • SCRUM包含的三个角色、工作、及四个会议
          • 三个角色:
          • 三个工作:
          • 四个会议:
        • 敏捷开发小组主要的工作方式
        • 敏捷团队运作机制
        • 注意事项
    • 边做边改模型(Build-and-Fix-Model)
        • 介绍
        • 优缺点
          • 优点
          • 缺点
            • 说明
    • 快速原型模型(**Rapid-Prototype-Model**)
        • 介绍
        • 优缺点
          • 优点
          • 缺点
    • 增量模型(Incremental-Model)
        • 介绍
        • 特点
            • 举例
        • 优缺点
          • 优点
          • 缺点
    • 演化模型(**Evolutionary-Model**)
        • 由来
        • 特点
        • 优缺点
          • 优点
          • 缺点
    • 喷泉模型(**Fountain-Model**)
        • 介绍
        • 优缺点
          • 优点
          • 缺点
    • 智能模型(四代技术4GL)
    • 混合模型(Hybrid-Model)
        • 介绍

首先了解开发模型的作用(好处)

简单来说,开发模式就是做项目的流程,开发的架构
用好一个合适的开发架构,直接提高工作效率,压缩成本,减小开发风险

十一种开发模型

这里博主针对开发模式,全网搜索整理出十一种开发模式,以及详细介绍

瀑布模型(Waterfall-Model)

在这里插入图片描述

计划阶段

简单了解一下计划阶段
计划:项目开发中涉及到的几乎一切都预先计划,从而便于确定预期的开发成本和开发时间。

介绍

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

优缺点

优点

严格遵循预先计划的步骤顺序进行,一切按部就班比较严谨。

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

(2)当完成一个阶段后,只需要去关注后续阶段

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

缺点

缺乏灵活性,太过线性理想化,不适合现代软件开发

(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险。

(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

(4)各个软件生命周期衔接花费时间较长,团队人员交流成本大。

(5)瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。

迭代模型(Stagewise-Model)

介绍

迭代式开发也被称为迭代增量式开发,是一种与传统的瀑布式开发相反的软件开发过程,整个开发工作被组织为一系列短小的、固定长度的小项目,每次迭代都包括需求分析、设计、实现与测试。采用迭代式开发时,工作可以在需求被完整地确定之前启动,并在一次迭代种完成系统的一部分功能或业务,再通过客户的反馈来细化需求,并开始新一轮的迭代。迭代式开发如下图所示。

在这里插入图片描述

特点:

  • 每次只设计和实现产品的一部分。
  • 一步一步地完成。
  • 每次设计和实现一个阶段,这叫作一个迭代。

优缺点

优点

(1)降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。

(2)降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。

(3)加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。

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

缺点

对产品人员的节奏把控能力(定每周目标,需求优先级剖析,以及临时需求的处理)有较高要求,不然容易陷入每周发版日加班加死的节奏。

适用于

事先不能完整定义产品的所有需求,计划多期开发的项目。

螺旋模型(Spiral-Model)

描述:

以原型为基础沿螺线旋转、每转一圈都经过计划/风险分析/实施/评估等过程且得到相应新版本、经过若干次螺旋上升得到最终版本。
该模型融合了瀑布模型、快速原型模型,它最大的特点是引入了其他模型所忽略的风险分析,如果项目不能排除重大风险,就停止项目从而减小损失。
注意看下图:
在这里插入图片描述
这里为大家简单介绍一下上图
图中的四个象限代表了以下活动

  • 制定计划:确定软件目标,选定实施方案,弄清楚项目开发的限制条件。
  • 风险分析:分析、评估所选方案,考虑如何识别和消除风险。
  • 实施工程:实施软件开发和验证。
  • 客户评估:评价开发工作,提出修正建议,制定下一步计划。
    在螺旋模型中,每一个选代都需要经过这4个步骤,直到最后得到完善的产品,可以进行提交。

特点:

其最大的特点是引入了其他模型不具备风险分析,使软件在无法排除重大风险时有机会停止,以减少损失。同时,在每个迭代阶段构建原型是螺旋模型用来减少风险的方法。

核心:

“螺旋模型”的核心就在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚。您轻松上阵,定义最重要的功能,实现它,然后听取客户的意见,之后再进入到下一个阶段。如此不断轮回重复,直到得到您满意的最终产品。
“ 螺旋模型”刚开始规模很小,当项目被定义得更好、更稳定时,逐渐展开,所以螺旋模型更适合大型的昂贵的系统级的软件开发

优缺点

优点

1)设计上的灵活性,可以在项目的各个阶段 进行变更。
2)以小的分段来构建大型系统,使成本计算变得简单容易。
3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向。
4)随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。

缺点

很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而 软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。

敏捷开发模型(Agile-Development-Model)

介绍

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。如下图所示。
在这里插入图片描述

敏捷开发模式的分类

敏捷开发的实现主要包括 SCRUM、XP(极限编程)、Crystal Methods、FDD(特性驱动开发)等等。其中SCRUM与XP最为流行。

同样是敏捷开发,XP 极限编程 更侧重于实践,并力求把实践做到极限。这一实践可以是测试先行,也可以是结对编程等,关键要看具体的应用场景。

SCRUM 则是一种开发流程框架,也可以说是一种套路。SCRUM 框架中包含三个角色,三个工作,四个会议,听起来很复杂,其目的是为了有效地完成每一次迭代周期的工作。在这里我们重点讨论的是 SCRUM。

SCRUM包含的三个角色、工作、及四个会议

三个角色:
  • 产品负责人(Product Owner)

  • 团队(The Team)

  • 敏捷教练(Scrum Master)

三个工作:
  • 产品需求列表(用户故事,需求,功能优先级,开发周期)(Product Backlog)

  • 当前sprint需求表(Sprint Backlog)

  • 产出物(Increment)

四个会议:
  • sprint计划会议
  • 每日站会
  • 展示会议
  • 总结回顾会

SCRUM 的工作流程

  1. 产品负责人将整个产品设计成产品backlog。产品backlog就是一个个需求列表。(Backlog:需求列表,可以看成是小目标的清单。分为Sprint Backlog (工作冲刺)和 Product Backlog(产品待办需求)。)
  2. 召开产品backlog计划会议,预估每个backlog的时间,确定哪些backlog是需要在第一个sprint中完成的,即sprint的backlog。( sprint冲刺周期,通俗的讲就是实现一个“小目标”的周期。一般需要 2-6 周时间)
  3. 把sprint的backlog写在纸条上贴在 任务墙,让大家认领分配。(任务墙就是把 未完成、正在做、已完成 的工作状态贴到一个墙上,这样大家都可以看得到任务的状态 )
  4. 举行 每日站立会议,让大家在每日会议上总结昨天做的事情、遇到什么困难,今天开展什么任务。(每日站立会议,是在每天早上定时和大家在任务墙前站立讨论,时间控制在15分钟内)
  5. 绘制燃尽图,保证任务的概况能够清晰看到。(燃尽图把当前的任务总数和日期一起绘制,每天记录一下,可以看到每天还剩多少个任务,直到任务数为0 ,这个sprint就完成了)
  6. sprint评审会议是在sprint完成时举行,要向客户演示自己完成的软件产品 。
  7. 最后是 sprint总结会议,以轮流发言方式进行,每个人都要发言,总结上一次sprint中遇到的问题、改进和大家分享讨论。

燃尽图
在这里插入图片描述
是用于表示剩余工作量的工作图表,由横轴(X)和纵轴(Y)组成,横轴表示时间,纵轴表示工作量。这种图表可以直观的预测何时工作将全部完成,常用于软件开发中的敏捷软件开发方式,也可以用于其他类型的工作流程监控。

敏捷开发小组主要的工作方式

(1)作为一个整体工作;

(2)按短迭代周期工作;

(3)每次迭代交付一些成果,关注业务优先级,检查与调整。

敏捷团队运作机制

  1. 一个团队有自己的代办事项,对代办事项进行拆小。
  2. 按客户价值进行优先级排序,产品经理负责价值排序。
  3. 小而稳定,跨职能团队。
  4. 多个团队松耦合(依赖性比较低),对齐迭代时间和战略目标。

注意事项

敏捷软件开发要注意项目规模,规模增长,团队交流成本就上去了,因此敏捷软件开发暂时适合不是特别大的团队开发,比较适合一个组的团队使用。

边做边改模型(Build-and-Fix-Model)

在这里插入图片描述

介绍

在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户和测试等等满意为止,这是一种类似作坊的开发方式。

优缺点

优点

1.前期出成效快

缺点

1.缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;

2.忽略需求环节,给软件开发带来很大的风险;

3.没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。

说明

对编写逻辑不需要太严谨的小程序来说还可以对付得过去,但这种方法对任何规模的开发来说都是不能令人满意的

快速原型模型(Rapid-Prototype-Model

在这里插入图片描述

介绍

快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。

快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。

优缺点

优点

(1)生命周期短

(2)整合“边做边改”与“瀑布模型”优点

(3)减少软件需求不明确带来的开发风险

(4)适用于小型、交互型的系统,大型系统的某些部分

缺点

(1)可能导致系统设计差、效率低、难以维护

增量模型(Incremental-Model)

在这里插入图片描述

介绍

在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。整个产品被分解成若干个构件,开发人员逐个构件地交付产品。

特点

在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。

举例

使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。

优缺点

优点

(1)人员分配灵活,一开始不需要投入大量人力

(2)先推出核心的产品,在后续增加相应的功能

(3)增量能够有计划的管理技术风险

(4)适用于需求经常变更的软件开发过程

缺点

(1)如果增量包之间存在相交的情况未很好的处理,则必须做全盘的系统分析

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

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

演化模型(Evolutionary-Model

由来

使用瀑布模型人们认识到,由于需求很难调研充分,所以很难一次性开发成功。

特点

主要针对事先不能完整定义需求的软件开发,演化模型提倡两次开发:
第一次是试验开发,得到试验性的原型产品,其目标只是在于探索可行性,弄清软件需求;
第二次在此基础上获得较为满意的软件产品。

优缺点

优点

明确用户需求、提高系统质量、降低开发风险;

缺点

难于管理、结构较差、技术不成熟;
适用范围:需求不清楚小型或中小型系统开发周期短

喷泉模型(Fountain-Model

介绍

以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目

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

优缺点

优点

可以提高软件项目开发效率,节省开发时间,适用于面向对象的软件开发过程

缺点

(1)由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理

(2)这个模型要求严格管理文档,使得审核难度加大,尤其是面对随时加入各种需求

智能模型(四代技术4GL)

智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的开发。

第四代语言(4GL)是一个简洁的、高效的非过程编程语言,用户定义“做什么”而不是“如何做”。第四代语言依靠更高级的第四代工具,用户可以使用这个工具定义参数来生成应用程序。第四代语言内嵌了如下组件:

查询语言。

报表生成器。

电子数据表。

数据库语言。

应用程序生成器,用来定义插入、检索、更新数据等操作来生成应用程序。

生成应用程序的高级语言。

混合模型(Hybrid-Model)

介绍

把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。

杭州女装网