摘要:瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。我们将在文章中详细说明两者各自的适合场景。

详细解答:

瀑布和敏捷都不是什么新概念,关于敏捷开发与瀑布开发的优势与缺点都已经比较明确,这里根据全网的资料给大家做一些整理和总结。

一、瀑布开发

瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。

瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变化难以调整,代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。

有论文统计,它是造成70%软件开发失败的原因。

瀑布开发大体分为这几个阶段:需求分析、设计、编码、测试、维护。

目前来说2B的传统企业,包括ERP,MES,WMS,CRM,OA,IBMS等系统当中可以经常见到他们的影子。现在这种模式仍然流行在一些大的项目或者是外包的一些项目当中。

瀑布模型作为最典型的预见性方法,其优点主要在于

  • 阶段清晰:从计划到开发最后到上线运行,三个阶段非常清晰。
  • 时间顺序:每个阶段顺序必须是从上到下,严格按照时间先后进行。
  • 环环相扣:在每一个阶段都必须有产出物然后才能进入到下一个阶段进行。
  • 黑盒模式:每个阶段都有各自的角色和分工,各自只关心自己的任务。比如需求阶段开发人员无需关注。

而其缺点也突出:

  • 需求隔离:由于各阶段的人员只能接触到自己工作范围内的东西,所以对客户需求的理解程度高低不等,开发人员更像是定义为流水线上的工人。
  • 变更代价大:既然叫做瀑布,就意味着不应该走回头路。否则如果出现返工,付出的代价会很大。需求变更,编码人员会很强的抵触情绪。
  • 束缚创造性:由于强调文档管理,所以管理人员会比较喜欢,但是他束缚了开发人员的创造性。
  • 周期漫长:整个开发持续的生命周期很长,需求和设计的时间会耗费特别多,有时候会占用三分之一甚至更多时间,这样整个周期就会变长,大都在半年到一年左右的时间,所以更适合需求相对稳定的大项目。

二、敏捷软件开发

敏捷软件开发是基于敏捷宣言定义的价值观和原则的一系列方法和实践的总称。自组织、跨职能团队运用适合他们自身环境的实践进行演进得出解决方案。

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发

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

敏捷开发借助互联网浪潮开始流行起来,相比瀑布模式,敏捷无疑更加贴近互联网时代背景下快速发展变化的市场环境以及业务需求。

简单总结,敏捷开发的优缺点在于:优点:

  • 更快交付价值
  • 更低的风险
  • 拥抱变化
  • 更好的质量
  • 持续改进
  • 更高的客户满意度
  • 更高的团队满意度
  • ......

缺点:

  • 很难进行准确的资源规划
  • 很难准确的定义“轻量的“或必要的文档
  • 很难把握整体产品的一致性
  • 很难预测有限的终点
  • 很难有效地进行度量
  • .......

从上文来看,敏捷开发似乎要优于瀑布开发,但本质并非如此。

两者都有自己适用的范围,而当下这VUCA时代,大部分项目可能都适合用敏捷开发,但仍旧有一部分确定性很强的项目会适合适用瀑布开发。

最后给想转型敏捷开发的同学推荐一款敏捷管理软件PingCode,在一定程度上能够帮助更好的学习敏捷,以及管理团队、项目等。

推荐阅读:

1、中小团队如何落地敏捷开发?

2、敏捷开发框架

瀑布式开发与敏捷开发的区别是什么相关推荐

  1. 瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别

    1.瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型,瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析.设计.编码.集成.测试.维护的步骤顺序进行. 步骤成果作为衡量进度的 ...

  2. 瀑布式开发、迭代开发、敏捷开发的区别

    瀑布式开发.迭代开发,区别[都属于,生命周期模型] 两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说. 传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试 ...

  3. 五分钟理解瀑布开发、敏捷开发和Devops

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

  4. 敏捷开发_敏捷开发和迭代开发的异同分析

    随着软件开发技术的不断发展,现在出现了敏捷开发和迭代开发两种新的开发方式,这两种开发方式都可以提高软件开发的效率.那么它们之间有什么相同的地方和不同的地方呢?下面一起来了解一下相关的知识吧! 一.定义 ...

  5. 什么是敏捷开发?敏捷开发流程的8个步骤

    文章目录 一.什么是敏捷开发? 二.敏捷开发模式的分类 三.SCRUM 的工作流程 四.敏捷开发流程的8个步骤包括: 五.敏捷开发模型 一.什么是敏捷开发? 敏捷开发(Agile)是一种以人为核心.迭 ...

  6. 瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别

    瀑布式开发.迭代开发,区别[都属于,生命周期模型]          两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说.          传统的瀑布式开发,也就是从需 ...

  7. 敏捷开发_敏捷开发之看板

    什么是敏捷开发? 核心是迭代开发(iterative development),拥抱变化.因为最终目标是让客户满意,所以能够主动接受需求变更,这就使设计出来的软件有灵活性,可扩展性. 敏捷一定是采用迭 ...

  8. 什么是敏捷开发,敏捷开发落地指南之迭代排期

    摘要:到底什么是才是敏捷开发,网上的各有各的说法,从本质上讲,敏捷开发的一个重要目标是建立持续价值交付的能力.这种能力最终必须服务于业务的创新,促进业务的成功.别再说敏捷开发搞不起来了,本篇文章我们先 ...

  9. 开发方法之统一过程开发及敏捷开发

    统一过程 UP 是一个很有特色的模型,它本身是一个二维的结构.软件开发活动总要经过初始.细化.构建 和交付这 4 个阶段方能完成. 对于纵轴而言,业务建模.需求.分析设计.实施.测试.部署.配置与变更 ...

最新文章

  1. css选择器匹配没有属性x的元素[重复]
  2. python中scrapy框架_简述python Scrapy框架
  3. 一些数据库优化经验资料整理
  4. 咖啡馆的故事:FTP, RMI , XML-RPC, SOAP, REST一网打尽
  5. token 过期刷新令牌_OkHttp实现全局过期token自动刷新
  6. jdbcUrl is required with driverClassName错误解决
  7. BS 百度Blog的字节限制!!!!!!!!!
  8. My 1st webUI try
  9. hibernate详细教程(入门到熟练)
  10. SVN合并分支到主干(简单易懂)
  11. XShell免费版的安装配置教程以及使用教程(超级详细、保姆级)
  12. python获取当前工作路径、保存路径
  13. 用matlab求带参数d积分,用MATLAB求定积分
  14. 微信小程序——商品列表
  15. 想进大厂必须要知道的Web安全问题
  16. 【图像去噪】兴智杯论文复现赛——NAFNet
  17. 教你一波Lucas(卢卡斯)定理在数论解题中的应用
  18. 固定收益证券读书笔记(一)
  19. EFM8 USB Library使用笔记
  20. web前端编辑所见即所得

热门文章

  1. php mysql 500错误日志_服务器出现500错误的时候,让PHP显示错误信息
  2. P2888 [USACO07NOV]牛栏Cow Hurdles(Floyd算法)
  3. 一台计算机如何创建多个用户,一台电脑怎么管理多个腾讯视频号
  4. C - 食物链 POJ - 1182
  5. from name as id为啥报错
  6. 南阳汉诺塔 一 java_南阳明清移民记.pdf
  7. 【SCOI 2008】奖励关
  8. MongoDB(4.0)分片——大数据的处理之道
  9. Netty序章之BIO NIO AIO演变
  10. Linux系统下文件与目录权限管理