敏捷ACP.敏捷估计与规划.Mike Cohn.

news2024/10/2 10:42:28

第一部分    传统规划失败的原因  vs  敏捷规划有效的原因

传统的项目规划方式往往会让我们失望。要回答-一个 新产品的范围/进度/资源的组合问题,传统规划过程不一定会产生令人非常满意的答案和最终产品。以下- -些论据可以支持这个结论:
●大约2/3的项目会显著超出费用预算(LedererandPrasad1992)
●产 品中64%的功能很少或从不会被使用(Johnson 2002)
●一般项目花费的时间会超出进度表100%(Standish2001)

导致规划失败的5个原因:

  • 传统规划方法的一一个 关键问题就是,它们强调的是各项活动的完成而不是对功能的交付。基于活动的规划的第一个问题在于客户并不能从活动的完成中获得价值。功能才是客户价值的计量单位。因此,规划也应该是在功能层面上,而不是在活动层面上。
  • 传统规划方法常会失败的第二个原因是多任务处理,也就是同时处理多个任务。多任务处理会对生产率产生可怕的影响。
  • 传统规划方法不定能够带来高价值产品的第三个原因是,制订的计划没有按照对用户和客户所具有的价值大小来排列工作的优先级。
  • 传统规划方法的第四个缺点是不承认不确定性的存在。我们忽视了与产品相关的不确定性,假定最初的需求分析就可以产生对产品的完整、完善的定义。
  • 在每个估计中都包含了-一个可能性,它表示一项特定工作在估计的时间内完成的可能性.很多公司把估计当成了承诺.

敏捷规划的目的是以迭代的方式发现总体产品开发问题的最佳解决方案, "在哪段时间内使用哪些资源来得到哪些功能"。

敏捷估计和规划方法可以成功找到这样的解决方案的原因包括:

  • 计划是在不同层次上做出的,并且重规划频繁地发生;
  • 计划是根据功能而不是根据任务做出的;首先估计规模,然后根据规模的估计值推算出持续时间;
  • 小故事保持L作的流动,而且每次迭代结束时会消除处理中的工作;
  • 是在小组层次而不是个人层次对进度进行度量;承认不确定性并为之做计划。

敏捷估计和规划的12条原则:

(1)让整个小组参与。建议就是虽然可能很明显只有1~2个特定的小组成员会处理正在估计的故事或任务,但整个小组做出的估计才是最好的。小组成员间分担的职责越多,小组可以共享的成功也就越多。
(2)在不同层次上进行规划。发布计划、迭代计划和每日计划分别以不同的精度覆盖了不同的时间范围,而且各有其特定的用途。
(3)使用不同度量单位,让对规模和持续时间的估计保持独立。
(4)用功能或者日期来体现不确定性。如果新功能的量是固定的,就把不确定性表示为一个日期范围(“我们会在第三季度完成”或者“我们会在7~10次迭代中完成" )。如果日期是固定的,就需要表示在要交付的确切功能上的不确定性(“我们将在12月31日完成,产品至少会包含这些新功能,最多可能只会再包含那些新功能”)。不确定性较大的时候,就使用较大的单位(例如迭代、月,然后是季度)。

(5)经常重规划。
(6)跟踪进度并沟通。燃尽图和其他让人一眼就能看明白的项目进度指示器是最好的。
(7)承认学习的重要性。
(8)规划具有适当规模的功能。迭代中用0.5人天作为单位;
(9)确定功能优先级。
(10)把估计和计划建立在事实上。有关一一个功能完成了多少的问题。很容易知道-一个功能完成了0%的时候(我们还没有开始处理它),也相当容易知道我们已经完成了100%的时候(产品所有者的所有满意条件测试都已经通过了)。

(11) 保留一些松弛度。尤其是在规划一次迭代的时候,不要规划用掉所有小组成员100%的时间。
(12)通过前瞻规划协调多个小组。在涉及多个开发小组的项目中,应该通过滚动前瞻规划来协调他们的工作。通过前瞻和把特定功能分配到即将到来的特定迭代,可以规划和调节小组间的依赖。

第二部分  敏捷规划与估计

1. 规模估计:  相对故事点  vs  理想人天,  更建议用故事点做规模估计

,    

故事点理想人天

有利于采用故事点进行估计的要点
●故事点有 助于驱动跨功能的行为
●故事点估计不会过期
●故事点是纯粹对规模的度量

●故事点估计通常更快
●我的理想日不等于您的理想日

有利于采用理想日进行估计的要点
●理想日在小组以外更容易解释
●理想日估计更容易开始
 

注:

  1. 不要过分估计, 估计有回报递减原则;   小组共同估计.

  2. 规划扑克;  :斐波纳契数列:0,0.5,1,2,3,5,8,13,20,30,50,无穷大

                             等比数列;

  3. 故事--史诗--主题;  故事的规模要控制在一个数量级内,小于10人日;

     2. 为价值做规划

                                

确定优先级的因素

(1)获得这些功能带来的经济价值。
(2)开发(可能还包含支持)新功能所需的成本。
(3)开发新功能所产生的学习和知识的量及重要性。--产品知识+项目知识
(4)开发这些功能所减少的风险。

       --进度风险;成本风险;功能风险;技术风险;商业风险;

 

确定功能满意度优先级

1. kano模型, 

  • 优先开发阀值功能,即必需功能;必需的功能要在发布前完成,不过不是所有的必需功能都需要全额完成;必需功能再多无法提高满意度;但没有会影响降低满意度;
  • 其次,时间允许,开发尽可能多的线性功能;----越多越好
  • 时间允许,确定少量的亮点功能。

    

评估方法1: 问卷调查功能的正反两个态度

      

 

 

评估方法2: 相对权重法---专家判断,有此功能的收益和无此功能带来的惩罚做估算

 

 

第三部分   项目进度安排------发布计划+迭代计划+进度表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/484689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux设备驱动模型(一)

一、sysfs文件系统 sysfs是一个虚拟文件系统,将内核总的设备对象的链接关系,以文件目录的方式表示出来,并提对设备的供读写接口。 二、kobject kobject是内核中对象表示的基类,可以认为所有的内核对象都是一个kobject kobject单…

Docker 持久化存储 Bind mounts

Docker 持久化存储 Bind mounts Bind mounts 的 -v 与 --mount 区别启动容器基于bind mount挂载到容器中的非空目录只读 bind mountcompose 中使用 bind mount 官方文档:https://docs.docker.com/storage/bind-mounts/ Bind mounts 的 -v 与 --mount 区别 如果使用…

Origin如何使用基础功能?

文章目录 0.引言1.菜单栏2.工具栏 0.引言 因科研等多场景需要进行绘图处理,笔者对Origin进行了学习,本文通过《Origin 2022科学绘图与数据》及其配套素材结合网上相关资料进行学习笔记总结,本文对软件界面基础功能进行阐述。    1.菜单栏 …

【Linux内核解析-linux-5.14.10-内核源码注释】内核源码中宏定义理解

内核宏定义1 这是Linux内核中的start_kernel函数的一部分代码。它的作用是初始化内核的一些基本组件和数据结构。 asmlinkage: 这是一个函数声明修饰符,指示编译器把函数参数放在堆栈中,而不是寄存器中。 __visible: 这是另一个函数声明修饰符&#x…

第二十六章 碰撞体Collision(上)

在游戏世界中,游戏物体之间的交互都是通过“碰撞接触”来进行交互的。例如,攻击怪物则是主角与怪物的碰撞,触发机关则是主角与机关的碰撞。在DirectX课程中,我们也大致介绍过有关碰撞检测的内容。游戏世界中的3D模型的形状是非常复…

生成模型经典算法-VAEGAN(含Python源码例程)

生成模型 文章目录 生成模型1. 概述2. 生成模型典型结构-VAE&GAN2.1 VAE2.1.1 简介2.1.2 模型处理流程 2.2 GAN2.2.1 简介 2.2.2 生成对抗网络要点2.2.3 生成对抗网络的训练准则2.2.4 生成对抗网络模型处理流程 3.生成模型和判别模型在AIGC中的应用3.1 生成模型在AIGC中的应…

【SQL】面试篇之排序和分组练习

1587 银行账户概要 II 1587题目 # Write your MySQL query statement below select name, balance from (select u.account, name, sum(amount) as balancefrom Users uleft join Transactions ton u.account t.accountgroup by u.account ) temp where balance > 10000总…

给定一个文本文件,每行是一条股票信息,写程序提取出所有的股票代码

问题:给定一个文本文件,每行是一条股票信息,写程序提取出所有的股票代码。其中,股票代码规则是:6 位数字, 而且以.SH 或者.SZ 结尾。 文件内容示例: 2020-08-08;平安银行(000001.SZ);15.55;2940…

( 数组和矩阵) 645. 错误的集合 ——【Leetcode每日一题】

❓645. 错误的集合 难度:简单 集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了…

教你如何快速安装下载EasyRecovery16最新版本

最近辛辛苦苦写的PPT报告被手残的我一个不小心给删除了,本来在空调屋里懂得瑟瑟发抖的我瞬间后背就被汗水浸湿了,好在懂点计算机知识,没有继续乱操作,在使用EasyRecovery后很快就找回来了! EasyRecovery 16(有几个版本…

Git(六):基本命令(3):储藏、标签、拉取、子模块

目录 17、stash 储藏 17.2 描述 17.3 基本用法 18、tag 标签 18.1 描述 18.2 基本用法 19、fetch 获取 19.1 描述 19.2 基本用法 20、pull 整合 20.1 描述 20.2 基本用法 20.3 pull 与 fetch 的区别 21、push 更新推送 21.1 描述 21.2 基本用法 22、remote 管…

Vue性能优化

目录 Vue性能优化的必要性:Vue项目优化工具webpack-bundle-analyzerwebpack-bundle-analyzer作用:webpack-bundle-analyzer用法:webpack-bundle-analyzer运行:webpack-bundle-analyzer使用: vue项目性能优化代码模块化…

Tensorflow入门图像分类-猫狗分类-安卓

最近在温习 Tensorflow,写了一篇笔记,记录了使用 Tensorflow 训练一个猫狗图像分类器的模型并在安卓应用上使用的全过程。 一、数据集准备 1.1 数据集来源 我采用的是微软的猫狗数据集,链接:Download Kaggle Cats and Dogs Datas…

2023华中杯数学建模C题完整模型代码

已完成全部模型代码,文末获取。 摘要 随着工业化和城市化的快速发展,空气污染已经成为全球性的环境问题。细颗粒物(PM2.5)等污染物对人类健康、生态环境和社会经济造成了严重影响。本研究旨在深入探究影响PM2.5浓度的主要因素&a…

【Android入门到项目实战-- 8.4】—— 如何解析JSON格式数据

目录 一、准备工作 二、使用JSONObject 三、使用GSON 比起XML,JSON的主要优势在于它的体积更小,在网络上传输的时候可以更省流量,但缺点是语义性较差,看起来不直观。 一、准备工作 还是使用前面文章的方法,在服务器…

【C++】STL标准库之vector

STL标准库之vector vector类的简介常用的vector类的接口构造容量遍历及访问增删查改迭代器迭代器失效问题 vector类的简介 vector是大小可变数组的序列容器,与string相比,vector中可以存任何类型的数据,而string中存储的只能是字符类型。 因为…

第二十九章 使用消息订阅发布实现组件通信

PubSubJS库介绍 如果你想在React中使用第三方库来实现Pub/Sub机制,PubSubJS是一个不错的选择。它是一个轻量级的库,可以在浏览器和Node.js环境中使用。 PubSubJS提供了一个简单的API,可以让你在应用程序中订阅和发布消息。你可以使用npm来安…

大数据Doris(十):Doris基础介绍

文章目录 Doris基础介绍 一、基本概念 二、建表语法及参数解释 1、column_definition_list 2、index_definition_list 3、engine_type 4、key_type 5、table_comment 6、partition_desc 7、distribution_desc 8、rollup_list 9、properites 三、数据类型 Doris基础…

java合并数组的方法

在 Java中,数组是一种重要的数据结构,在 Java中数组的操作方式有两种,一种是直接使用数组来操作,另一种是通过引用计数或者双指针对数组进行操作。对于直接使用数组来操作的方式,我们可以通过两个方法来实现。 一种是将…

C++(多态中)

目录: 1.多态实现原理(再剖析) 2.析构函数加virtual 3.C11新增两个关键字 override 和 final 4.重载、覆盖(重写)、隐藏的对比 5.抽象类 1.多态实现原理(再剖析) 实现出多态的效果,我…