1.瀑布模型
1.1 瀑布模型介绍
1970年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。
1.2 瀑布模型核心思想
瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
1.3 瀑布模型有以下优点
(1)为项目提供了按阶段划分的检查点。
(2)当前一阶段完成后,您只需要去关注后续阶段。
(3)可在迭代模型中应用瀑布模型。
增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。
1.4 瀑布模型有以下缺点
(1)在项目各个阶段之间极少有反馈。
(2)只有在项目生命周期的后期才能看到结果。
(3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
(4)瀑布模型的突出缺点是不适应用户需求的变化。

2.迭代模型
2.1 什么是迭代模型
在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求、分析设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。
2.2 迭代模型的使用条件
(1)在项目开发早期需求可能有所变化。
(2)分析设计人员对应用领域很熟悉。
(3)高风险项目。
(4)用户可不同程度地参与整个项目的开发过程。
(5)使用面向对象的语言或统一建模语言(Unified Modeling Language,UML)。
(6)使用CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具,如Rose(Rose是非常受欢迎的物件软体开发工具。)。
(7)具有高素质的项目管理者和软件研发团队。
2.3 迭代模型的优点
与传统的瀑布模型相比较,迭代过程具有以下优点:
(1)降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
(2)降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
(3)加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
(4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。

3.敏捷开发模型
3.1 什么是敏捷开发
是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本。能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。敏捷建模(Agile Modeling,AM)的价值观包括了XP的四个价值观:沟通、简单、反馈、勇气,此外,还扩展了第五个价值观:谦逊。
3.2 敏捷开发特点
(1)人和交互 重于过程和工具。
(2)可以工作的软件 重于求全而完备的文档。
(3)客户协作重于合同谈判。
(4)随时应对变化重于循规蹈矩。
项目的敏捷开发,敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果:关注业务优先级; 检查与调整。

最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈加困难,
因此敏捷方法更适用于较小的队伍,40、30、20、10人或者更少。
4.螺旋模型
详见 http://baike.baidu.com/view/551040.htm
5.快速原型模型
详见 http://baike.baidu.com/view/1449532.htm
6.几种模型间的对比
传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好。
特别是前期阶段,设计的越完美,提交后的成本损失就越少。

迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目的,以最短的时间,
最少的损失先完成一个“不完美的成果物”直至提交。然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善。

螺旋开发,很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。

敏捷开发,相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。
敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。
适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难确切描述未来将会如何变化。

参考文章:

1.瀑布模型百度百科参考 http://baike.baidu.com/view/551037.htm

2.迭代模型参考http://baike.baidu.com/view/1380740.htm

3.敏捷开发参考http://baike.baidu.com/view/309926.htm

4.软件开发模式对比(瀑布、迭代、螺旋、敏捷) http://www.cnblogs.com/-OYK/archive/2012/10/08/2714669.html

软件开发模式介绍和对比(瀑布、迭代、敏捷等)相关推荐

  1. ai人工智能软件开发模式介绍

    人工智能软件开发的主要模式有: 1. 训练模式:根据大量数据训练机器学习模型,然后将模型部署到软件系统中.这是人工智能软件开发的最主流模式.典型案例如图像识别.语音识别.推荐系统等. 开发流程:数据收 ...

  2. 软件开发模式:瀑布、敏捷、DevOps

    一.概述开发模式 无论是瀑布式开发.敏捷开发还是DevOps,整个流程都分为设计.开发.测试和部署四个部分,只不过各个部分的开始和结束时间节点不同而已!下图很好地解释了这一点. 从瀑布式开发到敏捷开发 ...

  3. 软件开发模式对比(瀑布、迭代、螺旋、敏捷)

    软件开发模式对比(瀑布.迭代.螺旋.敏捷) 1.瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法. 瀑布模型式是最典型的预见性的方法,严格遵 ...

  4. Computer:项目管理之软件开发模式(瀑布式开发、快速原型开发、迭代式开发、螺旋式开发、敏捷式开发、DevOps开发)的简介、对比之详细攻略

    Computer:项目管理之软件开发模式(瀑布式开发.快速原型开发.迭代式开发.螺旋式开发.敏捷式开发.DevOps开发)的简介.对比之详细攻略 导读:软件开发模型,用来描述和表示一个复杂的开发过程. ...

  5. 从瀑布到敏捷一漫画解读软件开发模式变迁史(逐层刨析)

    从瀑布到敏捷一漫画解读软件开发模式变迁史(逐层刨析) 照片总览 内容概述 图片构造 In the end 照片总览 内容概述 自上世纪由福特之父-亨利福特在汽车生产上创建第一天流水线式生产线,使得汽车 ...

  6. 从瀑布到敏捷——漫画解读软件开发模式变迁史

    文章目录 前言 总览 1.瀑布模型: 2.敏捷开发: 3.看板: 4.Scrum: 4.精益软件开发: 前言 1913 年,美利坚工业之神--亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规 ...

  7. 软件开发模式之瀑布式 | 迭代式 | 螺旋式 | 敏捷式

    软件开发模式有瀑布.迭代.螺旋以及敏捷模式等等. (1)瀑布开发模式 瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法.瀑布模型式是最典型的 ...

  8. 1 从瀑布到敏捷——漫画解读软件开发模式变迁史(转载)

    1913 年,美利坚工业之神--亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的时代.丰田公司提出的丰田生产系统(Toyota Production System)又为汽车工业带来了 ...

  9. 从瀑布到敏捷----漫画解读软件开发模式变迁史

    从瀑布到敏捷----漫画解读软件开发模式变迁史 漫画中有五个房间,分别是瀑布模型,敏捷开发,看板,SCRUM 和精益软件开发. 1.瀑布模型为软件开发按照一定顺序展开的,阶段间具有顺序性和依赖性,就像 ...

  10. 个人见解:从瀑布到敏捷——漫画解读软件开发模式变迁史

    引言:1913 年,美利坚工业之神--亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的时代.丰田公司提出的丰田生产系统(Toyota Production System)又为汽车工业 ...

最新文章

  1. selenium提取数据之driver对象的常用属性和方法
  2. 一文详解Camera-IMU内外参标定原理
  3. web本地存储-IndexedDB
  4. #define 的换行问题
  5. 密码方法三层三级联动
  6. 2016年:勒索病毒造成损失预估超过10亿美元
  7. (转)Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控
  8. 基于Spring Security的认证方式_创建工程_Spring Security OAuth2.0认证授权---springcloud工作笔记119
  9. python怎么保存为py文件_将python保存到运行的py文件目录中创建的文件夹中
  10. 可视化_数据可视化—地图可视化
  11. Jquery常用操作select篇
  12. 拦截mysql执行计划数据_MySQL执行计划详解
  13. linux 间传输文件的几种方法scp、sftp
  14. 20200102每日一句
  15. javaweb实现学生管理系统
  16. 把swf反编译成fla的几种方法
  17. 红米k20pro短接9008_拆解红米Redmi K20Pro,内部结果一目了然
  18. 盘点17个能帮助企业运营完美服务的AI聊天机器人
  19. 在CentOS5上用 rvm 部署Rails3应用
  20. 【每日学习】深度学习相关知识

热门文章

  1. python 图标字体_使用nerd-font/font-patcher为字体添加字体图标
  2. 总结:如何使用ClearCase进行开发工作
  3. 移动通信USSD业务探讨(转)
  4. 单片机原理与应用技术(六)———红绿灯汇编语言
  5. 视频编码格式——h264优点
  6. java class查看器_java class文件查看工具
  7. 腾达无线加密与Win7
  8. 密码技术学习(8.1)-数字证书简介
  9. PHP将swf转为gif,swf转gif 在线转换
  10. iis新建一个html文件路径,C#使用DirectoryEntry操作IIS创建网站和虚拟路径