瀑布开发与敏捷开发的区别,以及从瀑布转型敏捷项目管理的5大注意事项
事实证明,瀑布开发管理模式并不适合所有的软件项目,但敏捷项目管理却对大多数项目有效。那么当团队选择转型敏捷的时候有哪些因素必须注意?
敏捷开发最早使用者大多是小型、独立的团队,他们通常致力于小型、独立的项目。正是他们的成功经验,让世界各地的软件团队认为敏捷开发是可行的,且对自身也有改善意义。事实证明,瀑布开发管理模式并不适合所有的软件项目,但敏捷项目管理却对大多数项目有效。
也正因此,敏捷项目管理被越来越多的团队所采用,并且从单个团队扩展到多团队,甚至是软件团队之外,包括 IT、营销、业务开发等。
一、敏捷开发与瀑布开发的区别
敏捷开发与瀑布开发的区别在于:瀑布开发是最典型的预见性的方法,对那些可预测的、重复性的工作很有效。敏捷开发以用户的需求进化为核心,更适用于需求不明确、创新性强的项目,或者需要抢占市场的项目。
1、什么是敏捷项目管理?
敏捷项目管理是一种迭代式的项目交付方法,它通过高频迭代的方式,将项目分解为多个尺寸较小的“小项目”,每部分能够在远比瀑布模式短得多的周期内,快速而独立地走完计划、设计、构建、测试、发布的过程。所以每次发布后都能够根据市场/客户反馈调整,从而提升了速度和适应性。
这种方法与“预设性的”瀑布式项目管理方法不同,瀑布式项目管理遵循既定的路径,对市场变化响应及适应能力有限。当下的客户和企业需要快速响应以及调整,而敏捷提供了在开发过程中进行调整和迭代的灵活性。同时,敏捷项目管理也是 DevOps 实践的基石,开发和运营团队在该方式下协同工作。
敏捷原则:
敏捷项目分为几个增量步骤,并在每个增量的隔间收集反馈进行调整
项目需求拆解到足够小,然后按重要性排列它们的优先级
注重建立与客户之间的联系,团队之间的协作
定期调整以确保满足客户的需求
将计划与执行相结合,使团队能够有效地响应不断变化的需求
敏捷项目管理的优势:
更好的可见性和责任制
及早发现问题
更高的客户满意度
更短的反馈周期
更快响应市场变化
持续提升团队效率
价值导向的灵活优先级排序
敏捷项目管理的缺点:
关键路径和项目间依赖关系不如瀑布项目中清晰
组织适应敏捷需要考虑学习成本
真正的敏捷执行CI/CD,实现起来存在工程和技术成本
2、什么是瀑布项目管理?
瀑布式项目管理是一种预设性的软件开发模式,它将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六项基本活动;且规定了它们自上而下、相互衔接的固定次序,项目必须严格遵循预先计划的顺序进行。开发进程只有通过上一个阶段的验收审核,才能“流动”到下一个阶段。一旦一个阶段完成了,想再去“回头”调整前一个阶段就会很困难,且成本很高。敏捷项目管理虽然也遵循类似的顺序,但会以较小的增量和定期的反馈循环进行工作。
所以,瀑布项目管理方式对那些可预测的、重复性的工作很有效,而对于那些快速变化的工作,它可能会让开发团队落后于竞争对手以及市场。
瀑布项目在进行中如果延期或发生需求变更,就会对后续版本造成巨大影响。此外,瀑布项目中通常会让团队完全专注于下一阶段的工作,直到完成之前都是在开发全新的东西,那么这就会积累非常多的技术债务、缺陷,让解决过程变得非常痛苦。
下面是一个标准瀑布项目的示意图,它具有严格的时间阶段划分,这就使开发人员、产品经理和其他相关人员患得患失的,每个人都希望在自己的时间窗口中申请更多的时间,因为将来可能没有机会迭代。通常,瀑布团队会通过“变更控制”来控制范围蔓延,即维持原计划。

编辑切换为居中
添加图片注释,不超过 140 字(可选)
瀑布模型会加剧构建产品的一些已知挑战:
项目阻碍因素和依赖性的管理:传统的项目管理方式往往会有固定的流程,在彻底解决某个阻碍问题之前,项目是无法向前推进的。
难以获得用户反馈,对产品进行验证:在产品完全完成之前,客户无法体验和反馈,因此,产品设计和代码中的重要问题在发布前都不会被发现。
瀑布开发模式的优点:
每个阶段都有各自的角色和明确分工,所以一定程度会减少过程中的协调;
明确的项目阶段有助于明确界定工作之间的依赖关系;
在确定了需求后,可以对项目的成本进行估算;
有清晰的设计和需求文档,设计阶段更加有条不紊和结构化;
瀑布法的缺点:
需求隔离:由于各阶段的人员只能接触到自己工作范围内的东西,所以对客户需求的理解程度高低不等,开发人员更像是定义为流水线上的工人。
变更代价大:需求变更会带来极大的时间浪费,开发人员普遍对需求变更有很强的抵触情绪。
束缚创造性:由于强调文档管理,所以管理人员会比较喜欢,但是他束缚了开发人员的创造性。
周期漫长:整个开发持续的生命周期很长,需求和设计的耗时很大,有时候会占用三分之一甚至更多时间
招聘需求:满足不同阶段的专业人员意味着更多招聘岗位需求,而敏捷则提倡跨职能团队。

编辑切换为居中
添加图片注释,不超过 140 字(可选)
二、转型敏捷时要考虑的因素
敏捷转型并不容易,特别是当团队或组织长期使用传统项目管理方法的情况下,因为这将涉及观念、思维方式转变、流程的更改以及不一样的团队协作方式等。
比如,在转型的过程中,团队和利益相关者必须接受两个重要概念:
产品负责人的工作核心是优化团队输出的价值,而团队则是围绕产品负责人制定的工作优先级开展工作;
开发团队只负责他们有能力完成的工作,通常情况下产品负责人不会强制给团队指定工作;开发团队成员从迭代待办列表中领取工作任务,因为这样他们可以尝试新的任务类型。
下面我们将简单介绍,引入敏捷项目管理在组织、运行和工作流程方面必须关注的一些要素。
1、产品路线图
产品路线图是产品需求与其完成时间的概览,宏观的展示了产品的发展方向以及开发团队何时实现目标。路线图为敏捷开发提供了重要的背景信息,能够帮助团队了解以及实现增量和整个项目的目标。
有效的路线图不仅是一个强调产品发布和功能的时间表:它是一个动态的文档,产品负责人会在项目进行过程中根据实际情况不断更新,所以在创建产品路线图的初期,对需求、工作量、优先级、完成时间的估算不要求也无法很精确,这些内容都是随着项目进行不断细化调整的。产品路线图是产品负责人推动项目发展的重要工具,它告诉我们每个阶段应该做什么。
以下是产品团队的简单路线图,方框中包含大的发布计划,红色里程碑标记表示时间表。

编辑切换为居中
添加图片注释,不超过 140 字(可选)
2、需求
路线图中的每个大的发布计划都可以分解为一系列的需求,敏捷开发中的需求指的是“轻量级”描述,而不是与瀑布项目管理中那样多达100 页的“详尽”文档。这是因为敏捷开发中的需求会随着时间的推移,团队会根据对客户和所需产品的共同理解而不断完善。
敏捷开发同时也是符合“精益”的一种方法,它要求团队中的每个人通过持续的沟通和协作达成共识,以这种方式在最终呈现完整的细节。
3、待办事项
敏捷开发中的待办事项一定是划分了优先级的。在待办事项列表中包括所有的工作项目,比如:新功能、bug、技术需求或架构任务等。产品负责人为开发团队确定待办事项的优先次序,然后,开发团队以此作为唯一的参考,确定需要完成的工作。
4、敏捷指标
敏捷团队的持续改进离不开度量指标。比如,看板方法下的在制品限制使团队专注于交付最优先的工作。燃尽图等图表有助于团队预测他们的交付节奏,而连续流程图有助于识别瓶颈。这些指标和工件使每个人都专注于目标,同时也增强了团队交付未来工作能力的信心。
5、敏捷以信任为基础
团队成员之间如果没有高度的信任,敏捷流程就很难运作。公开的流程和正确的产品目标、关于产品开展平等定期的对话,都有助于提升团队的积极性和信心。
小结
敏捷项目管理是一种创新方法,不仅适用于软件项目,而且适用于各种项目。通过提供在开发生命周期中响应变化的灵活性,团队能够交付满足客户需求且更高质量的产品。敏捷赋予团队权力,建立责任感,鼓励创新,同时促进持续改进。敏捷使您能够在不偏离轨道的情况下响应变化,这对任何工作都是有益的。
延伸阅读:
Scrum 开发指南: Scrum 框架详解 | Scrum 四个会议及正确召开方式 | 正确的计划和执行Sprint的方式 | 做好迭代计划的4大关键点 | 做好这4点让每日站会更适配敏捷团队 | 开好迭代评审会的3个关键步骤 | 为什么要召开迭代回顾会 | Scrum 3大角色及其岗位的具体职责 | Scrum三大工件在敏捷开发中的作用 | 2022年14个最佳 Scrum 敏捷项目管理软件 | 更多
Kanban 敏捷指南: 使用看板(Kanban)管理方法的5大好处 | 看板 VS Scrum:如何选择? | 看板和 Scrum 的混合模式适合在哪些场景使用 | 更多
规模化敏捷: 规模化敏捷的价值及五大规模化敏捷框架 | 规模化敏捷之 Spotify 模型 | 规模化敏捷框架之LeSS框架 | 更多
相关文章:
瀑布开发与敏捷开发的区别,以及从瀑布转型敏捷项目管理的5大注意事项
事实证明,瀑布开发管理模式并不适合所有的软件项目,但敏捷项目管理却对大多数项目有效。那么当团队选择转型敏捷的时候有哪些因素必须注意?敏捷开发最早使用者大多是小型、独立的团队,他们通常致力于小型、独立的项目。正是他们的…...
“华为杯”研究生数学建模竞赛2007年-【华为杯】A题:建立食品卫生安全保障体系数学模型及改进模型的若干理论问题(附获奖论文)
赛题描述 我国是一个拥有13亿人口的发展中国家,每天都在消费大量的各种食品,这批食品是由成千上万的食品加工厂、不可计数的小作坊、几亿农民生产出来的,并且经过较多的中间环节和长途运输后才为广大群众所消费,加之近年来我国经济发展迅速而环境治理没有能够完全跟上,以…...
基于JavaWeb学生选课系统开发与设计(附源码资料)
文章目录1. 适用人群2. 你将收获3.项目简介4.技术实现5.运行部分截图5.1.管理员模块5.2.教师模块5.3.学生模块1. 适用人群 本课程主要是针对计算机专业相关正在做毕业设计或者是需要实战项目的Java开发学习者。 2. 你将收获 提供:项目源码、项目文档、数据库脚本…...
centos7 oracle19c安装||新建用户|| ORA-01012: not logged on
总共分三步 1.下载安装包:里面有一份详细的安装教程 链接:https://pan.baidu.com/s/1Of2a72pNLZ-DDIWKrTQfLw?pwd8NAx 提取码:8NAx 2.安装后,执行初始化:时间较长 /etc/init.d/oracledb_ORCLCDB-19c configure 3.配置环境变量,不配置环境变量,sq…...
【算法设计-分治】递归与尾递归
文章目录1. 阶乘尾递归:递归的进一步优化2. 斐波那契数列3. 最大公约数(GCD)4. 上楼梯5. 汉诺塔(1)输出移动过程输出移动步数5. 汉诺塔(2)输出移动过程输出移动步数6. 杨辉三角形7. 完全二叉树1…...
HTML 编辑器
文章目录 HTML 编辑器HTML 编辑器推荐编辑器下载网站HBuilder步骤 1: 新建 HTML 文件步骤 2: 另存为 HTML 文件步骤 3: 在浏览器中运行这个 HTML 文件HTML 编辑器 HTML 编辑器推荐 可以使用专业的 HTML 编辑器来编辑 HTML,我为大家推荐几款常用的编辑器: Notepad++:Windows…...
css盒模型详解
一、引言 盒模型是网页开发中的一个基本概念,它描述了网页元素的外观和大小。盒模型由内容区域、内边距、边框和外边距四个部分组成,这些部分的大小和位置都可以通过CSS进行控制。在本文中,我们将介绍盒模型的概念和作用,并提出本…...
函数模板(template关键字的应用)
注释:本文主要介绍了函数模板的由来以及用法,还有关键字template。 我们感到时间的延续像一条我们无法逆行的小溪。 ——柏格森 文章目录一、语言的定式二、函数模板2.1 函数模板格式2.2 模板函数的实例化2.2.1隐式实例化/显式实例化2.3 模板参数的匹配…...
嵌入式学习笔记——使用寄存器编程操作GPIO
使用寄存器编程操作GPIO前言GPIO相关的寄存器GPIO 端口模式寄存器 (GPIOx_MODER) (x A..I)位操作GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x A..I)GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR) (x A..I/)GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR) (x A..I/)GPIO 端口输入数据寄…...
图像的读取与保存
图像是由一个个像素点组成,像素点就是颜色点,而颜色最简单的方式就是用RGB或RGBA表示图像保存图像将像素信息按照 一定格式,一定顺序(即编码) 存在硬盘上的 二进制文件 中保存图像需要以下必要信息:1. 文件…...
【蓝桥杯集训·每日一题】AcWing 4074. 铁路与公路
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴Floyd 算法Spfa 算法一、题目 1、原题链接 4074. 铁路与公路 2、题目描述 某国家有 n 个城市(编号 1∼n)和 m 条双向铁路。 每条铁路连接两个不同的…...
网络:TCP与UDP相关知识(详细)
目录:1、UDP 和 TCP 的特点与区别2、UDP 、TCP 首部格式3、TCP 的三次握手和四次挥手4、TCP 的三次握手(为什么三次?)5、TCP 的四次挥手(为什么四次?)6、TCP 长连接和短连接的区别7、TCP粘包、拆…...
不好!有敌情,遭到XSS攻击【网络安全篇】
XSS:当一个目标的站点,被我们用户去访问,在渲染HTMl的过程中,出现了没有预期到的脚本指令,然后就会执行攻击者用各种方法注入并执行的恶意脚本,这个时候就会产生XSS。 涉及方: 用户࿰…...
Mysql中Explain详解及索引的最佳实践
Mysql中Explain详解及索引的最佳实践1.Explan工具的介绍1.1 Explan 分析示例1.2 Explain中的列1.2.1 id1.2.2 select_type1.2.3 table1.2.4 partitions1.2.5 type1.2.6 possible_keys1.2.7 key1.2.8 key_len1.2.9 ref1.2.10 rows1.2.11 filtered1.2.12 Extra1.Explan工具的介绍…...
JavaScript 内的 this 指向
在 javascript 语言中, 有一个奇奇怪怪的 “关键字” 叫做 this为什么说它是 奇奇怪怪 呢, 是因为你写出 100 个 this, 可能有 100 个解释, 完全不挨边,但是, 在你的学习过程中, 搞清楚了 this 这个玩意, 那么会对你的开发生涯有很大帮助的,接下来咱们就…...
Java多种方法实现等待所有子线程完成再继续执行
简介 在现实世界中,我们常常需要等待其它任务完成,才能继续执行下一步。Java实现等待子线程完成再继续执行的方式很多。我们来一一查看一下。 Thread的join方法 该方法是Thread提供的方法,调用join()时,会阻塞主线程࿰…...
制造企业数字化工厂建设步骤的建议
随着工业4.0、中国制造2025的深度推进,越来越多的制造企业开始迈入智能制造的领域,那数字工厂要从何入手呢? 数字工厂规划的核心,也正是信息域和物理域这两个维度,那就从这两个维度来进行分析,看如何进行数…...
网上鲜花交易平台,可运行
文章目录项目介绍一、项目功能介绍1、用户模块主要功能包括:2、商家模块主要功能包括:3、管理员模块主要功能包括:二、部分页面展示1、用户模块部分功能页面展示2、商家模块部分功能页面展示3、管理员模块部分功能页面展示三、部分源码四、底…...
【实战】用 Custom Hook + TS泛型实现 useArray
文章目录一、题目二、答案(非标准)三、关键知识点1.Custom Hook关键点案例useMountuseDebounce2.TS 泛型关键点一、题目 完善自定义 Hook —— useArray ,使其能够完成 tryUseArray 组件中测试的功能: 入参:数组返回…...
【LeetCode】剑指 Offer(18)
目录 题目:剑指 Offer 35. 复杂链表的复制 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 35. 复杂链…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
