文章
主题列表

最新资讯
《A++ 敏捷开发》- 4 三点估算

算是一个范围,不是一个数

唐工:你估计完成开发用户登录模块要多少天?
小李:3天。
唐工:能在3天完成的可能性有多高?
小李:可能性很高。
唐工:可否量化一点?
小李:可能性为50%~60%。
唐工:所以很有可能不止3天,要4天了。
小李:对的,其实也有可能要5、6天,但我估计概率不大。
唐工:你信心有多少?
小李:难说,有95%的信心可以在6天之内完成。
唐工:所以有可能要用上7天了?
小李:这样说吧,如果所有可能出问题的都出了问题,甚至会10天或11天,但这种概率很低。
唐工再问小李:是能否给我一个确实能完成这个模块的日期?
小李:正如我前面说,很可能3天,但也有可能4天。
唐工追问:你可以说4天吗?
小李:也有可能5、6天。
唐工结束对话:OK,请你尽力6天之内完成这个模块。
唐工貌似请求,但实际是要求小李承诺这个模块要在6天之内开发完。假如这个模块的开发时间超过6天,唐工就有依据说小李没有尽力导致延误了。
所以从以上对话,可以看到作为开发专业人员,必须分清估算和承诺。作为专业人士,我们不应该给一些没有把握的承诺,误导对方。中国老话说“一诺千金”就是这个道理。

从单点到三点估算

从上面的例子可以看到,一般的单点估算是很容易被误导,以为那个天数是有把握达成的,所以我们最好从单点估算变成三点估算,除了估算最可能的天数,还有最佳和最差共三点。但项目是由一系列的任务组成(如第二任务依赖于第一个任务的完成),如何计算所有任务的总天数?下面用例子说明如何用3种使用三点估算估计的方法(A、B、C)估算总天数:

A)假定都是正态分布,用模型估计:
先用PERT方程式计算每一步的预计值与标准差:

    • 预计值 (Expected Value EV) = (Best + 4xMost Likely + Worst ) /6

    • 标准差 (Sigma) = (Worst - Best) / 6

步骤Step最佳Best最可能Most Likely最差Worst预计值EV标准差Sigma
113124.1671.833
211.5143.52.167
336.25116.51.333


10.75
14.168

如果假定是正态分布,按以上预计值和标准差,使用蒙特卡洛模拟,从下图可看到,95% 置信区间是8.02 ~ 20.37。


B)直接用PERT方程式计算总天数的均值与标准差:
如不用模拟,直接把3步的均值加起来:

4.2 + 3.5 + 3.6 = 14

   (方差   

假定:总方差 = 每步方差的总和
总方差 = 9.77
Sigma 
= 3.13

95%置信区间计算公式为:均值的总和 ±2