固定交付项目适用敏捷开发方式吗?

方式,项目,敏捷,开发 · 浏览次数 : 25

小编点评

**固定交付项目的可能性存在的挑战** **一、什么是固定交付?** - 固定交付是一种具有固定的范围、时间表和成本的项目。 - 三个约束关系在固定交付中保持着平衡:范围-预算-时间。 **二、敏捷是否适用于固定交付项目?** - 敏捷开发是一种以迭代、协作和快速响应需求而设计的软件开发方法,不适用于固定交付项目。 - 由于固定交付项目的周期较长,无法像敏捷开发那样进行频繁的增量交付。 **三、使用敏捷进行固定交付的优势** - 可适应不断变化的需求。 - 提升早期交付价值。 - 提高可预测性。 - 提高透明度。 **四、使用敏捷进行固定交付的缺点** - 管理范围敏捷开发需要与客户协商。 - 人员成本可能更昂贵。 - 合同和客户期望可能存在紧张关系。 **五、写在最后在固定交付的项目中使用敏捷开发方式是一把双刃剑** - 敏捷开发具有适应性和早期交付等好处。 - 范围、预算管理等问题可能成为项目进行过程中的重大问题。

正文

假设一个固定交付的项目,这个开发项目是构建一个应用程序,时间表是一年。在项目进行期间可能出现什么问题?

 

一、什么是固定交付?

一个固定交付的项目意味着它具有固定的范围、固定的时间表和固定的成本。

长期以来,传统的项目管理方式侧重于由项目范围、预算和时间表组成的“三重约束”,这也被称为铁三角。任何项目的“三重约束”都保持着彼此之间的平衡,任何一项发生变化就可能导致其他项发生变化。

 

其实,三重约束是错误的,主要有两个原因:

第一,三者之间的关系会发生变化,不会一直维持着平衡状态。

第二,过于关注“三重约束”反而容易忽略质量等其他重要约束。

“三重约束”只关注了项目的交付交互,而忽略了项目的价值交付。如果我们所提供的解决方案不能增加价值,那项目按时、按预算交付的意义是什么呢?

 

 

二、敏捷是否适用于固定交付项目?

敏捷开发是一种以迭代、协作和快速响应变化为核心的软件开发方法。它强调灵活性、适应性和持续交付,以满足客户需求并提高质量的软件产品。

客户本身可能并不知道自己想要什么,也不知道项目团队采用何种方式交付,因此在交付方法中保持灵活性至关重要,利用交付周期、获得反馈并不断改进工作方式。

 

传统的项目管理方式对于一个固定的交付项目其实没有那么适用。

首先,通过对构建范围的时间和成本进行估计,但这估计结果仍存在着偏差。根据不确定性锥,早期估计结果可能会比实际交付所需的偏差多达4倍。即使在需求完成后,估计结果也可能比交付所需的费用低 1.5 倍。

其次,一年的开发周期对于一个技术项目来说是很长的时间。即使我们对项目有固定的要求,并保证不会有任何变化,但如此长的开发周期仍会出现不能预料的变动,如对所写内容的理解将发生变化。潜在的客户需求和优先事项将发生变化。

最后,使用阶段的传统方法,我们通常无法确定能否在分配的时间内交付了所有预算工作,这会导致将工作从一个阶段推到未来阶段。

 

其实,无论使用传统还是敏捷交付方法,交付固定项目都是有风险的。但不得不承认在固定交付项目中使用敏捷方法可能会有一些优势。

 

三、使用敏捷进行固定交付的优势

1.适用不断变化的需求

在项目进行过程中,项目需求随时会发生变化。敏捷开发方式能灵活应对这些变化,让团队快速响应新的反馈和需求,以确保最终产品满足客户的需求。

 

2.早期交付价值

敏捷开发方式强调定期交付产品的工作增量,而不是等到项目接近尾声时才爆炸式交付。即使产品的所有功能尚未完成,但定期交付的产品能让客户尽早使用并从中受益。

 

3.提高可预测性

使用迭代可以让团队更好地预测未来。在每 2 周迭代 (Sprint) 结束时,团队可以使用平均吞吐量和剩余积压工作来预测交付整个项目所需的时间。在使用阶段和按顺序交付时,这种级别的可预测性是不可能的。

 

4.提高透明度

使用限时迭代和优先产品待办事项列表为团队的有效性提供了透明度。这使得进度跟踪更加有效,并加快了问题和风险的识别和解决。

 

5.持续改进

敏捷方法促进了对产品的持续反馈以及团队反思和回顾的时间。对产品的反馈会带来更高质量、更有效的解决方案。团队反思和回顾推动了团队流程的改进,从而使团队合作更加有效和愉快。

 

6.降低风险

敏捷的增量交付方法允许及早识别和缓解项目风险。通过提供较小的增量,可以在问题升级之前及时解决问题。

 

四、使用敏捷进行固定交付的缺点

1.管理范围

敏捷开发能够轻松适应需求的变化,但前提是必须与客户仔细协商。

假设固定范围与交付时间表和预算完全匹配,那范围的增加会破坏平衡。但如果客户了解范围是固定的,每次对范围的任何更改是用另一个范围所替换而不是增加,则这仍然有效。

举个例子,一个表示范围的存储桶。一个存储桶的容量是需要交付的确切范围量,如果进行添加就意味着必须删除相同大小的其他内容。

 

2.人员成本

运用敏捷开发方式需要拥有一个完全敬业的团队,且在项目的整个生命周期中保持团结。

但如果人员成本的估算基于为特定任务在项目内外轮换的专家,就会发现的人员成本估算低于专门团队的人力成本。

 

3.合同和客户期望

当客户和开发团队之间关系牢固,每个人都在寻求双赢的解决方案时,敏捷效果最好。

然而,在典型的固定交付项目中,合同往往是输赢的。如果交付团队能够比计划更快地交付,即使他们没有为客户提供真正需要的东西,他们仍会获得更多利润。

因此,在客户获得实际需要的一切和交付团队估计之间通常存在紧张关系。

 

五、写在最后

在固定交付的项目中使用敏捷开发方式是一把双刃剑。

虽然敏捷开发方式具有适应性、早期价值交付等好处,但范围、预算管理以及与合同相关的问题等挑战可能成为项目进行过程中的重大问题。

但我们不得不承认,敏捷开发方式更加人性化。

与固定交付项目适用敏捷开发方式吗?相似的内容:

固定交付项目适用敏捷开发方式吗?

假设一个固定交付的项目,这个开发项目是构建一个应用程序,时间表是一年。在项目进行期间可能出现什么问题?

FTP主动模式和被动模式(2)- 防火墙对FTP的影响 ASPF

防火墙对FTP的影响 ASPF 多通道协议 应用层程序有些使用的是单通道协议,有些使用的是多通道协议。 单通道协议 例如http协议,整个协议交互过程中,服务端和客户端只建立一个连接,并且服务端固定使用一个端口,例如80端口,这种一般为单通道协议; 防火墙一般都需要配置精细的安全策略对数据进行防护,

Python 网络编程

自计算机诞生以来,计算机网络逐渐从单机模型发展成了网络互联模型 最初只是远程终端连接,终端(键盘和显示器)分布在各地然后与主机相连,用户通过终端来与远程主机进行交互,终端只能与主机通信 再到多个主机之间互联,几台固定的计算机相连在一起形成计算机网络,这种网络一般是私有的(局域网) 随着时代的发展,人

固定型思维 VS 成长型思维

回顾进入职场工作以来,对比曾经的学生时代,如果让我讲一个对自己影响最大的改变,那就是思维模式的一个转变。 具体来说,就是从一个典型的固定型思维转变成一个具备有成长型思维的人。 当然,我不敢妄称自己已经是全面的成长型思维,但我的的确确已经意识到成长型思维的好处。 最起码,我可以不再像曾经学生时代的那个

P2467 [SDOI2010] 地精部落 学习笔记

DP 显然我固定第一个是峰,然后再乘以2就是答案,因为一个合法的反转之后也是合法的而且谷峰颠倒了 发现如果设\(dp[i][j]\)表示前\(i\)个山脉,第\(i\)个山脉是高度\(j\)的答案,然后填第\(i\)个的时候不知道会不会重复,所以这个状态挂了,重新找个状态设设。 所以我们改变考虑对象

NumPy 二项分布生成与 Seaborn 可视化技巧

二项分布是描述固定次数独立试验中成功次数的概率分布,常用于分析二元结果的事件,如抛硬币。分布由参数 n(试验次数)、p(单次成功概率)和 k(成功次数)定义。概率质量函数 P(k) = C(n, k) * p^k * (1 - p)^(n - k)。NumPy 的 `random.binomial(...

WPF随笔收录-DataGrid固定右侧列

一、前言 在项目开发过程中,DataGrid是经常使用到的一个数据展示控件,而通常表格的最后一列是作为操作列存在,比如会有编辑、删除等功能按钮。但WPF的原始DataGrid中,默认只支持固定左侧列,这跟大家习惯性操作列放最后不符,今天就来介绍一种简单的方式实现固定右侧列。(这里的实现方式参考的大佬

LeetCode 周赛 344(2023/05/07)手写递归函数的固定套路

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 今天下午有力扣杯战队赛,不知道官方是不是故意调低早上周赛难度给选手们练练手。 往期周赛回顾:LeetCode 单周赛第 343 场 · 结合「下一个排列」的贪心构造问题 周赛概览 T1.

Ubuntu2204设置固定IP地址

前言 Ubuntu每次升级都会修改一部分组件. 从1804开始Ubuntu开始使用netplan的方式进行网络设置. 但是不同版本的配置一直在升级与变化. 今天掉进坑里折腾了好久. 所以这边总结一下, 以便备忘. 番外 WorkStation虚拟机迁移ESXi 公司机器配置太lowB,跑虚拟机就像是

3天上手Ascend C编程丨通过Ascend C编程范式实现一个算子实例

编程范式是算子实现的固定流程,基于Ascend C编程范式,可以快速搭建算子实现的代码框架。本文以一个实例为大家介绍如何基于Ascend C编程范式快速开发算子。