我对我的一个项目使用了三点估计。公式是
Three Point Estimate = (O + 4M + L ) / 6
那意味着,
Best Estimate + 4 x Most Likely Estimate + Worst Case Estimate divided by 6
这里
divided by 6 means, average 6
并且最坏情况或最佳情况发生的可能性较小。真诚地,最有可能估计(M),是完成工作所需要的。
但我不知道为什么他们使用4(M)
。为什么他们乘以4 ???。不使用5,6,7等...为什么最有可能估计加权four times
和其他两个值一样多?
我挖了一次这个。我巧妙地忽略了写下这条小道,所以这是记忆。
据我所知,标准文件是从教科书中得到的。教科书从20世纪50年代的原始文章中获得了统计学期刊。期刊上的文章是基于兰德公司做的内部报告,作为为Polaris项目开发PERT的总体工作的一部分。
这就是小道变冷的地方。似乎没有人明白为什么他们选择那个公式。最好的猜测似乎是它基于正态分布的粗略近似 - 严格来说,它是一个三角形分布。基本上,一个块状的钟形曲线假设“可能的情况”落在真实平均估计的1个标准偏差之内。
4/6s近似为66.7%,近似为68%,近似于平均值的一个标准偏差内的正态分布下的面积。
话虽如此,有两个问题:
这里有一个推导:
http://www.deepfriedbrainproject.com/2010/07/magical-formula-of-pert.html
如果链接失效,我将在此处提供摘要。
因此,从问题中退一步,这里的目标是提出一个单一的平均(平均)数字,我们可以说是任何给定的3点估计的预期数字。也就是说,如果我要尝试X次项目,并将项目尝试的所有成本加起来总共为Y,那么我预计一次尝试的成本为$ Y / X.请注意,此数字可能与模式(最可能)结果相同或不同,具体取决于概率分布。
预期结果很有用,因为即使我们以不同方式计算每个预期结果,我们也可以做一些事情,例如将预期结果的整个列表相加以创建项目的预期结果。
另一方面,模式甚至不一定是每个估计的唯一,因此这可能不如预期结果有用。例如,1-6中的每个数字都是掷骰子的“最有可能”,但3.5是(唯一的)预期平均结果。
3点估计背后的基本原理/研究是,在许多(大多数?)现实世界的情景中,人们可以比单个预期值更准确/直观地估计这些数字:
然而,为了将这三个数字转换为期望值,我们需要一个概率分布来插入除我们产生的3之外的所有其他(可能是无限的)可能结果。
我们甚至进行三点估计的事实假设我们没有足够的历史数据来简单地查找/计算我们将要做的事情的预期值,所以我们可能不知道实际是什么我们估计的概率分布是。
PERT估计背后的想法是,如果我们不知道实际曲线,我们可以将一些合理的默认值插入Beta分布(这基本上只是我们可以自定义为许多不同形状的曲线)并对每个问题使用这些默认值我们可能面对。当然,如果我们知道实际分布,或者有理由相信PERT规定的默认Beta分布对于手头的问题是错误的,我们就不应该在项目中使用PERT方程。
Beta分布有两个参数A
和B
,分别设置曲线左侧和右侧的形状。方便地,我们可以简单地通过知道曲线的最小值/最大值以及A
和B
来计算Beta分布的模式,平均值和标准偏差。
对于每个项目/估计,PERT将A
和B
设置为以下内容:
如果M > (O + P) / 2
然后A = 3 + √2
和B = 3 - √2
,否则A
和B
的值被交换。
现在,碰巧的是,如果您对Beta分布的形状做出特定假设,则以下公式完全正确:
平均值(期望值)= (O + 4M + P) / 6
标准差= (O - P) / 6
所以,总结一下
这不是一个很好的拇指号吗?
cone of uncertainty在项目的开始阶段使用因子4。
"Software Estimation"的书Steve McConnell以“不确定性锥体”模型为基础,并给出了许多“拇指规则”。然而,每个近似数字或拇指规则都是基于COCOMO或类似的固体研究,模型或研究的统计数据。
理想情况下,O,M和L的这些因子是使用同一公司中同一环境中其他项目的历史数据得出的。换句话说,公司应该在M估计内完成4个项目,1个在O内,1个在L内完成。如果我的公司/团队在原始O估计中完成了1个项目,M个内有2个项目,L内有2个项目,我会使用另一个公式 - (O + 2M + 2L)/ 5.它有意义吗?
上面引用了不确定性的锥体......它是敏捷估计实践中使用的众所周知的基础元素。
它有什么问题呢?它看起来不太对称 - 好像它不自然,不是真的基于真实数据吗?
如果你曾经那样,那么你是对的。上图中显示的不确定性锥体是基于概率构成的......而不是来自实际项目的实际原始数据(但大部分时间都是如此使用)。
劳伦特·博萨维特(Laurent Bossavit)写了一本书,并做了一个演讲,他在那里介绍了他对锥体如何形成的研究(以及我们经常相信软件工程的其他“事实”):
软件工程的小妖精
https://www.amazon.com/Leprechauns-Software-Engineering-Laurent-Bossavit/dp/2954745509/
https://www.youtube.com/watch?v=0AkoddPeuxw
是否有一些真实数据可以支持不确定性?他能找到的最接近的是一个锥体,它可以在正Y方向上达到10倍(因此,就我们的估计而言,我们最多可以在10倍的时间内减去10倍)。
几乎没有人估计一个项目最终会提前完成4次......或者......喘气......提前10次。