转载自:http://www.cnblogs.com/kzloser/archive/2012/07/06/2578835.html

目录

瀑布模式
螺旋模型
快速原型模式
增量模式
喷泉模型
演化模型


瀑布模式

特点:

  • 阶段间具有顺序性和依赖性:

    • 前一阶段完成后,才能开始后一阶段
    • 前一阶段的输出文本为后一阶段的输入文本
  • 推迟实现的观点
  • 质量保证:
    • 每个阶段必须交付出合格的文档
    • 对文档进行审核

缺点:

  • 开始需要把需求做到最全
  • 惧怕用户测试中的反馈,惧怕需求变更
  • mux


螺旋模型

限制条件:

  • 适应于内部的大规模软件开发:螺旋模型强调风险分析,许多客户都无法接受和相信这种分析因此
  • 适合于大规模软件项目(执行风险分析将大大影响项目的利润,进行风险分析就毫无意义)
  • 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险

优点:

  • 设计上的灵活性,可以在项目的各个阶段进行变更.
  • 以小的分段来构建大型系统,使成本计算变得简单容易
  • 客户始终参为保证了项目不偏离正确方向以及项目的可控性
  • 客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互.
  • 客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品.

缺点:

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

核心:

在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚.在定义最重要的功能时,去实现它,然后听取客户的意见,之后再进入到下一个阶段.如此不断轮回重复,直到得到您满意的最终产品

每轮循环包含如下六个步骤:

  • 确定目标,可选项,以及强制条件
  • 识别并化解风险
  • 评估可选项
  • 开发并测试当前阶段
  • 规划下一阶段
  • 确定进入下一阶段的方法步骤.

模型:


快速原型模型

优缺点:

  • 优点:  克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。  
  • 缺点:  所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。

原型类型:

  • 探索型原型:  目的是要型清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,
  • 实验型原型:  主要用于设计阶段,考核;实现方案是否合适,能否实陋
  • 演化型原型:  主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统

原型的运用方式:

  • 抛弃策略是将原型用于开发过程的某个阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。探索型和实验型就是采用此策略的。
  • 附加策略是将原型用于开发的全过程,原型由最基本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统,演化型快速原型就是采用此策略

模型:


增量模型

构件思想:

  • 第一构件完成软件提供的基本最核心的功能
  • 后面的增构件是为了第一构件提供服务提供功能的
  • 而且避免吧难题退后,首先完成的应该是高风险和重要部分

困难:

每个新的构件集成到现有的软件结构中必须破坏原来以开发的产品,所以必须定义很好的接口

优点:

  • 短时间内向用户提供可完成部分工作的产品
  • 逐步增加产品功能可以使用户有时间了解和适应新产品
  • 开放结构的软件拥有的维护性明显好于封闭结构的软件

缺陷

  • 容易退化为边做边改模型,从而使软件过程的控制失去整体性 
  • 如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析

模型:


喷泉模型

优点:

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

缺点:

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

模型:


演化模型

思想:

演化模型主要针对事先不能完整定义需求的软件开发.用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现

开发顺序:

  • 根据用户的核心需求,设计,编码,测试,后提交用户
  • 精化:根据以能满足用户核心需求的核心系统上,增加用户反馈的其他全部功能

优点:

  • 任何功能一经开发就能进入测试以便验证是否符合产品需求
  • 开发中的经验教训能反馈应用于本产品的下一个循环过程,大大提高质量与效率
  • 开发中的经验教训能反馈应用于本产品的下一个循环过程,大大提高质量与效率
  • 大大有助于早期建立产品开发的配置管理

缺点:

  • 主要需求开始并不完全弄清楚的话,会给总体设计带来困难及削弱产品设计的完整性,并因而影响产品性能的优化及产品的可维护性
  • 缺乏严格过程管理的话,这生命周期模型很可能退化为“试-错-改”模式
  • 不加控制地让用户接触开发中尚未测试稳定的功能,可能对开发人员及用户都产生负面的影响

软件开发模型--5种典型模型介绍及图解相关推荐

  1. 软件开发模型 - 瀑布模型 快速原型模型 增量模型 螺旋模型 及优缺点详解

    一.软件开发过程模型 软件开发模型(Software Development Model)是指软件开发全部过程.活动和任务的结构框架.软件开发包括需求.设计.编码和测试等阶段,有时也包括维护阶段. 软 ...

  2. 领域驱动设计(DDD)架构演进和DDD的几种典型架构介绍(图文详解)

    我们生活中都听说了DDD,也了解了DDD,那么怎么将一个新项目从头开始按照DDD的过程进行划分与架构设计呢? 一.专业术语 各种服务 IAAS:基础设施服务,Infrastructure-as-a-s ...

  3. 系统架构设计师-软件开发模型(构件组装模型)

    随着软构件技术的发展,人们开始尝试利用软构件进行搭积木式的开发,即构件组装模型.在构建组装模型中,当经过需求分析定义出软件功能后,将对构件的组装结构进行设计,将系统划分成一组构件的集合,明确构件之间的 ...

  4. IO模型 | 常见的五种IO模型介绍

    目录 常见IO模型 1. 阻塞IO模型 2. 非阻塞I/O模型 3. I/O复用 4. 信号驱动IO模型 5. 异步IO 一个形象的示例说明 常见IO模型 对于一次 IO 访问,它会经历两个阶段:等待 ...

  5. 敏捷软件开发模型--SCRUM

    一 什么是Scrum? Scrum (英式橄榄球争球队), 软件开发模型是敏捷开发的一种,在最近的一两年内逐渐流行起来. Scrum的基本假设是: 开发软件就像开发新产品,无法一开始就能定义软件产品最 ...

  6. 软件开发模型/原型法/瀑布模型/螺旋模型

    软件开发模型(Software Development Model)是指软件开发全部过程.活动和任务的结构框架.软件开发包括需求.设计.编码和测试等阶段,有时也包括维护阶段. 软件开发模型能清晰.直观 ...

  7. 软件开发模型介绍、总结归纳

    软件开发模型(SoftwareDevelopmentModel)是指软件开发全部过程.活动和任务的结构框架.软件开发包括需求.设计.编码和测试等阶段,有时也包括维护阶段. 软件开发模型能清晰.直观地表 ...

  8. 软件测试常见概念(软件生命周期、软件开发模型、软件质量模型、软件缺陷管理、软件测试概述、软件测试分类、软件测试与软件开发、软件测试原则、黑盒测试方法、白盒测试方法、性能测试)

    文章目录 1. 软件概述 1.1 软件生命周期 1.2 软件开发模型 1.2.1 瀑布模型 1.2.2 快速原型模型 1.2.3 迭代模型(增量模型或演化模型) 1.2.4 螺旋模型 1.2.5 敏捷 ...

  9. 软件开发模型-瀑布模型、V形模型、原型模型、增量模型、快速开发、敏捷模型

    文章目录 0x01 边做边改模型 0x02 瀑布模型 0x03 V形模型 0x04 原型模型 0x05 增量模型 0x06 螺旋模型 0x07 快速应用程序开发模型 (RAD) 0x08 敏捷模型 0 ...

最新文章

  1. flv文件转换,完美解决
  2. 图马尔可夫网络:融合统计关系学习与图神经网络
  3. centos7安装详细图解_5G基站工程安装详细图解(纯干货)
  4. js/css 检测移动设备方向的变化 判断横竖屏幕
  5. n以内的素数c语言,关于求N以内素数的一点小问题(N小于一亿)
  6. 如何使用Create React App DevOps自动化工作中所有无聊的部分
  7. VC6.0 中的__asm语句
  8. html页面的盒子边框怎么做的,HTML+CSS入门 用三层盒子结构实现多边框详解
  9. php ci的session和php session,php及codeigniter使用session-cookie的方法(详解)
  10. 基于Python的指数基金量化投资 - 指数投资技巧(一)定期定额
  11. pytorch读取数据集(分类文件夹加载)—ImageFolder()
  12. 白名单模板_亚马逊白名单申请流程全解析
  13. 一个人流浪,不必去远方
  14. ipad查看本地文件html文件在哪里,ipad文件夹在哪里?小编手把手教你找到ipad文件夹在哪里...
  15. 基于word2vec的word相似度
  16. Demo20211202
  17. java excel 判断组重复_Java判断Excel某列是否有重复值
  18. android listview网络图片,Android ListView从网络获取图片及文字显示
  19. 爬取沪江网考研词汇并按要求存为txt
  20. redis切换db方法

热门文章

  1. 点击刘翔夺冠10关键词 真实水平已超世界纪录
  2. oracle 10.3.5,AIX5,3 oracle 10201升10204 rac补丁 误操作记录
  3. 这里已经是废墟,什么东西都没有
  4. 使用 nodejs 和 ElasticSearch 快速搭建全文检索
  5. 最常见的linux命令(centOS 7.6)
  6. DeepWalk原理理解:DeepWalk: online learning of social representations
  7. 时间工具类(DataUtils)时间的获取,工农历的转换
  8. KMP算法-超级无敌详细(嚼碎了喂你)
  9. JZVideo--全屏切小屏报错没有获得的窗口错误
  10. 94种毒饮料名单曝光