专家判断并不是说是基于直觉的,同样可以是有组织的,有组织的专家判断估算准确度要高.
对于特定的任务(譬如模块的编码调试等),具体由谁来估算最准确?经验得知由将要实际承担工作的人来进行估算最准确.所以要获得任务一级的估算,就应该让实际做这项工作的人来进行估算.要提高任务一级估算准确度的最佳方法是把较大的任务分解为较小的任务,然后由相关的人员进行估算.
单点估算:让开发人员对某一特性进行估算,譬如”数据转换”估计要用2天的时间;
最好最坏情况估算:让开发人员对某一特性进行最好情况下和最坏情况下估算,譬如单点估算:让开发人员对某一特性进行估算,譬如”数据转换”估计最好要用1天的时间,最坏要用3天;
我们常用的做法是让开发人员先进行单点估算,然后不看这个单点值情况下进行最好最坏情况估算,这样容易让开发人员想起容易遗漏的工作;
如何利用这个最好情况和最坏情况的估算值?
l 1:公式1----预期情况=[最好情况+(4*最可能情况)+最差情况]/6,这个公式叫做PERT(program evaluation and review technique)
l 2:公式2----预期情况=[最好情况+(3*最可能情况)+(2*最差情况)]/6,这个公式考虑了估算人员总是得到乐观的估算.
为了避免在估算中遗漏某些工作,需要制作一张简单的检查表,用于提高估算的准确度.检查表如下:
l 是否明确定义了估算的对象?
l 估算中是否包括了完成任务所需的工作类型?
l 估算中是否包括了完成任务所需的功能领域?
l 估算是否被分解的足够详细?
l 是使用来自过去工作的已记录事实还是单纯的根据记忆估算?
l 估算是否被实际将要工作的人的认可?
l 估算中设定的生产率是否接近类似工作达到的生产率?
l 估算中是否包括了最好情况,最坏情况和最可能情况?
l 估算的最差值是否是真正的最差值?是否还要考虑更差的情况?
l 是否从这些情况中正确的计算出预期情况?
l 是否记录估算的假设?
l 作出估算之后情况是否发生改变?
使用这些检查表来概算个人估算的能力,建立和维护个人检查表来提高估算的准确度.
对实际结果进行比较,提高个人的估算能力,
保留好估算清单,在工作完成时填写实际结果,然后计算出估算的相对误差.
MRE(mangintude of relative error)=[(实际结果-估算结果)/实际结果]的绝对值;
随着估算的改进,可以看倒MRE在逐渐的减小;
分解就是把估算对象分成多个部分,分别对单个部分进行估算,再把单个估算聚合成总体估算的实践活动,又叫自底向上,微估算等
我们把大的估算对象分解为许多个小的估算对象,然后对小的估算对象进行估算,可能会出现这样的情况:每个估算对象的误差都很大,但是总体的误差很小,这就是统计学中的大数法则,即要对某个大对象进行估算,可能偏大,也可能偏小,如果我们把大对象分解为很多个小对象进行估算,同样会可能偏大,也可能偏小,但这个误差可以相互抵消,这就是大数法则.
有些未发现的工作是以被遗忘的特性的形式隐藏起来,或者以被遗忘的任务隐藏起来,通过基于活动的工作分解结构来分解项目有助于避免遗忘任务.
使用通用的软件项目分解结构(WBS)来避免遗漏常见的活动.
简单累加分解后的单点估算值得到的估算结果是带有乐观主义和前面讨论的”90%置信度”的影响.
统计学原理:假设最小值和最大值之差的1/6大致等于标准差,这一近似方法假设实际结果小于最小值的可能性为0.135%.而大于最大值的可能性是99.86%.
对于少量的任务(不超过10个),可以根据简单的标准偏差来计算最好情况和最差情况.首先把单个任务的最好情况和最差情况分别相加,然后使用下面的公式计算出标准偏差.
标准偏差=(最差情况之和-最好情况之和)/6.
然后利用标准偏差计算出具有百分比表示的可能性估算值
|
百分比置信度 |
计算方法 |
|
60% |
预期情况+(0.25*标准差) |
|
70% |
预期情况+(0.52*标准差) |
|
75% |
预期情况+(0.67*标准差) |
|
80% |
预期情况+(0.84*标准差) |
|
84% |
预期情况+(1*标准差) |
|
90% |
预期情况+(1.28*标准差) |
|
98% |
预期情况+(2*标准差) |
|
50% |
预期情况 |
譬如某个项目的最好情况之和为20人周,最坏情况之和为38.6人周,那么标准差为3.1,预期情况(50%可能情况)为29人周,具有75%完成该项目的可能性的估算值为29+(0.67*3.1).为31人周.
为什么不能是31.1人周?因为输出的准确度不能超过输入的准确度.
但是如果超过10个以上的任务,这种用标准差计算的方法就会失效,需要用更复杂的公式来计算,有以下几步:
l 对每一个单个的估算值分别应用标准偏差公式:单个标准偏差=(单个最差情况估算值-单个最好情况估算值)/6
l 计算每项任务的标准偏差的平方,得到方差;
l 对方差求和;
l 得到方差和的平方根.
上面第一步计算标准差是除以6,除以6的前提是达到97%的置信度,当然实际情况不会达到这个准度,具体达到什么置信度比较合理.看下面的表格:
|
实际结果落入估算范围的可能性 |
用于计算单个估算标准差的除数 |
|
10% |
0.25 |
|
20% |
0.51 |
|
30% |
0.77 |
|
40% |
1.0 |
|
50% |
1.4 |
|
60% |
1.7 |
|
70% |
2.1 |
|
80% |
2.6 |
|
90% |
3.3 |
|
99% |
6 |
所以要使实际结果落入估算范围的可能性达到70%,那么单个标准差的的除数为2.1,即(单个最差情况-单个最好情况)/2.1为单个标准差的计算公式.
上述的估算方法有个缺陷:就是预期情况的估算值必须是准确的,即它们确实具有50%的可能性,
如果单个估算值是准确的,那么进行聚合就不会产生问题,如果单个估算值不准确,那么进行聚合就会有问题,所以输入的单个估算必须准确,利用本章的计算公式才有意义.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22878014/viewspace-620691/ ,如需转载,请注明出处,否则将追究法律责任。