当前位置: 首页 > news >正文

瀑布开发和敏捷开发

一、瀑布开发

定义:瀑布开发模型以文档为驱动,它的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据。

 

 

开发流程

      需求分析:对于需求进行详细的分析和评估,形成需求分析文档;

      设计:技术评估,规划时间节点,形成技术文档以及时间规划;

      开发:按照时间规划,进行开发,每个阶段完成一定的内容;

      测试:开发完成后,进行测试,有问题就修改,直到可以用为止。

特点

      最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。

优点

      1、步骤清晰明确;

      2、文档完整,开发过程中可以作为参考。

缺点

      1、瀑布开发是从工业发展过来的,不适合计算机软件的开发;

      2、开发周期长,花大量时间去编写文档,耗费时间、人力;

      3、客户只有在整个项目完成时才可以看到成果,会导致信任问题;

      4、风险大,在开发过程中并不能明白最后的结果,同时不能适应变化;

故事场景

      1、客人到餐馆来点菜(新项目);

      2、不确定客户想吃什么的时候,通常选好餐厅后会先看看餐厅的菜单(客户往往提不出具体的需求);

      3、根据图文菜单,客人点了十个菜(根据原型和设计稿,基本确定了需求);

      4、后厨开始准备(项目启动);

      5、根据客人的下单配菜,炒菜(基本上不会主动去了解完整需求);

      6、半个小时了,菜还没上桌,客人饿极了(项目启动后很长一段时间客户什么都看不到);

      7、再过了二十分钟,十个菜都一起上来了(项目最终一次交付);

      8、客人说,有几个菜挺好的,但是有个菜味道淡了,有两个不够辣,还有两盘重复了想换掉(我是买单的,我要变需求);

      9、这时候大堂经理来了,说,“味道淡了可以加盐,不辣可以加辣,但是换菜不行,已经炒好的那两盘菜也是要算成本的”(瀑布的坏处,需求变更比较麻烦);

      10、于是,后厨只给客户加了盐,加了辣客人吃完,不是很满意,下次不来了(没有满足需求)。

二、敏捷开发

定义:敏捷开发模型只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。

 

 

特点

      强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。

工作方式

      作为一个整体工作;

      按短迭代周期工作;

      每次迭代交付一些成果;

      关注业务优先级;

      检查与调整;

优点

      1、迭代快,开发周期短;

      2、不再耗费大量的时间来写文档,而是人与人面对面交流,只写一些必要的文档;

      3、分工详细,每天都输出成果,客户能够看得到,会信任项目团队;

      4、沟通多,容易发现问题,同时能够激起团队的协作、奋斗;

缺点

      1、人与人之间的信任是非常重要的环节,但是这个比较难完成,技术团队的成员可能技术能力差别大,同时也有互相竞争,又或者是项目团队的成员有所保留,不愿意这样的沟通;

      2、团队在开发期间的任务多、压力大,需要时刻保持“兴奋”,一般很难做到。

故事场景

      1、客人到餐馆来点菜(新项目);

      2、不确定客户想吃什么的时候,通常选好餐厅后会先看看餐厅的菜单(客户往往提不出具体的需求);

      3、根据图文菜单,客人点了十个菜(根据原型和设计稿,基本确定了需求);

      4、后厨开始准备(项目启动);

      5、配菜、炒菜,先上了两盘,让客人尝了尝味道(先提供可用实例给客户用);

      6、客人说还不错,后厨继续准备后面的菜,陆续上菜(不断迭代,不断测试);

      7、上菜过程中,客人突然发现有个菜的味道太淡了,让后厨加了点盐又端上来了(敏捷的好处,可以不断测试和需求变更) ;

      8、又上了两盘,不够辣,又拿到后厨加了辣(敏捷的坏处,需求没有提前明确,反复迭代,增加了工作量);

      9、到最后两盘时,客人要求换两个菜,还好没炒(迭代的好处,随时接受需求变更);

      10、客人吃完,很满意(基本满足了全部的要求)。

 

后话:每一个开发模式都有着重点,它的好与坏基本上都是见仁见智的(也不能一棒子打死,比如说:政府的外包项目,基本上都是按照传统的瀑布开发模型来开发,政府的人才懒得在中间不断的去提需求!而小企业的自营项目,基本上很多时候老板的需求就是需求,变更极其频繁,而且还乐意参与到项目中,所有敏捷开发就很适合这类型),只有适合企业的开发模式才是好模式!

转载于:https://www.cnblogs.com/Vam8023/p/8459457.html

相关文章:

  • 静态链表
  • SDUT OJ 数据结构实验之链表六:有序链表的建立
  • webpack-loader
  • 算法学习之路|搬运家具(模拟)
  • Java电商项目面试题(五)
  • 流媒体之HLS——综述
  • 人工智能三年行动计划启动,推动人工智能和实体经济深度融合
  • MySQL数据库----IDE工具介绍及数据备份
  • 阿里云CodePipeline亮相,帮助用户实现持续集成与交付
  • 使用Photoshop+960 Grid System模板进行网页设计
  • div层次整理 / 自定义pycharm补全 / 注释 /keymap /tab
  • [译]Flutter for Android Developers - Async UI
  • 使用nexus搭建Maven私服
  • Py徐少攻关之初探 编码 语言分类 (2)
  • 从高大上航拍到接地气撒农药,大疆推出MG-1农业植保机
  • 【Linux系统编程】快速查找errno错误码信息
  • 10个确保微服务与容器安全的最佳实践
  • Angular 2 DI - IoC DI - 1
  • CentOS 7 修改主机名
  • Javascript编码规范
  • Lsb图片隐写
  • Quartz初级教程
  • SQLServer之索引简介
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 百度地图API标注+时间轴组件
  • 从重复到重用
  • 番外篇1:在Windows环境下安装JDK
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 区块链将重新定义世界
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​低代码平台的核心价值与优势
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #《AI中文版》V3 第 1 章 概述
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (二)丶RabbitMQ的六大核心
  • (二开)Flink 修改源码拓展 SQL 语法
  • (四)c52学习之旅-流水LED灯
  • (转)程序员技术练级攻略
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET Core WebAPI中封装Swagger配置
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • [ C++ ] 继承
  • [CVPR 2023:3D Gaussian Splatting:实时的神经场渲染]
  • [dfs] 图案计数
  • [fsevents@^2.1.2] optional install error: Package require os(darwin) not compatible with your platfo
  • [IE9] IE9 Beta崩溃问题解决方案
  • [IE编程] 打开/关闭IE8的光标浏览模式(Caret Browsing)
  • [Lucas定理]【学习笔记】
  • [MT8766][Android12] 增加应用安装白名单或者黑名单