第九章 专家的个人判断

在讨论“专家判断”时,我们首先要问“是哪方面的专家?”某个人在将要采用的技术或开发实践方面是专家,并不意味着他就是估算专家。Magne Jorgensen的报告指出,对待估算的活动有较多的经验并不意味着对该活动的估算有较高的准确度(Jorgensen 2002)。其他研究发现:“专家”喜欢使用简单的估算策略,即使他们在待估算领域的专业水平很高也是如此(Josephs and Hahn 1995; Todd and Benbasat 2000)。

9.1 有组织的专家判断

1)由谁来估算?

对特定任务——例如编码和调试特定的特性或建立特定的测试用例集所需的时间——的估算而言,将要实际承担工作的人进行估算最准确,而不承担这些工作的人进行估算则不太准确(Lederer and Prasad 1992)。此外,只进行估算的人比同时承担估算和开发工作的人更容易出现低估(Lederer and Prasad 1992)。

这一指导原则适用于任务一级的估算。如果项目还处于不确定性锥较宽的部分时(也就是说,还没有确定特定的任务或还没有把它们分配给个人时),就应该由专业估算人员或专业的开发、质量保证和文档编写人员来进行估算。

2)粒度

提高任务一级估算准确度的最佳方法之一是把较大的任务分解成较小的任务。进行估算时,开发人员、测试人员和管理人员都喜欢关注他们能够理解的任务,而不重视他们不熟悉的任务。这种做法将往往导致在进度表上出现描述得非常笼统的条目,例如“数据转换”,由于没有人认真研究过它到底涉及哪些工作,所以它被认为只需要2周就能完成任务,而不是可能实际需要的2个月。

在进行任务一级的估算时,应该把估算分解成一些不超过 2天 工作量的任务。工作量超过2天的任务有太多可以隐藏预期外工作的地方。最终,估算值的适当粒度可以采用 1/4天、1/2 天或天。

3)使用范围

如果让开发人员来估算一组特性,他常常会给出类似于下表的估算结果
image
如果再让同一个开发人员重估每个特性的最好情况和最差情况,他常常会给出下表的估算结果
如果比较最初的单点估算值和最好情况与最差情况的估算值,就会发现:单点估算中11.25天的总计值更接近最好情况估算中10.5天的总计值,而不是接近最差情况估算中的总计值18.25天。

如果仔细研究特性4的估算值,还会发现:它的最好情况和最差情况估算值都高于最初的单点估算值。其原因在于,只进行单点估算时,有可能会遗漏一些即使在最好情况下也要进行的工作。而在同时对最好情况和最差情况进行考虑时,对最差情况的深入分析会揭示出这些遗漏了的工作,从而能提高估算结果的名义值。在深入分析最差情况时,我喜欢问开发人员如果所有的事都出现问题,任务会需要多少时间。要当心,人们考虑的最差情况往往只是乐观的最差情况而不是真正的最差情况。

如果你是项目经理或负责人,可以让开发人员先建立一组单点估算值,然后让他们在不看这些估算值的情况下再建立一组最好情况和最差情况估算值。让他们把针对最好情况和最差情况做出的估算与最初的单点估算进行比较。这常常具有启发性效果,让大家发现一些容易遗漏的工作。

这一活动可以带来两个好处。首先,它可以让人认识到单点估算值更接近于最好情况估算。其次,通过多次对最好情况和最差情况进行估算,可以培养在估算时按照最差情况的结果进行考虑的习惯。一旦养成了既考虑最好情况也考虑最差情况的习惯,就可以在单点的任务估算值中更好地反映结果的整个可能的范围,即使没有真正地进行最好情况和最差情况估算也是如此。

4)公式

PERT(计划评审技术)

预期情况 = [最好情况 + (4 * 最可能情况)+ 最差情况] / 6

该公式即考虑了最好情况和最差情况估算值构成的范围的宽度,也考虑了最可能情况在该范围中的位置。
image
人们做出的 "最可能" 估算是偏向于乐观的,因此使用这个方法会得到乐观的总体估算

考虑估算值偏低的情况

逾期情况 = [最好情况 + (3 * 最可能情况) + (2 * 最差情况)] / 6

使用该公式可以临时解决这一问题,但是要想长久的解决问题,就要设法让人们做出更准确的更可能情况估算。

5)检查表

一张简单的检查表可以提醒大家可能忘记要考虑的事项
image

9.2 比较估算值和实际值

不光进行单点估算或最好情况估算只是做对了一般。另一半是要对实际结果和估算结果进行比较,从而提高个人的估算能力

保留做出的估算的清单,在工作完成时填入实际结果。然后计算出估算的相对误差量(MRE)

MRE = [(实际结果 - 估算结果) / 实际结果] 的绝对值
image
这张表中分别计算了针对每个特性的估算的 MRE。最后一行显示这一组估算值的平均 MRE 是 29%。可以使用这个平均 MRE 来衡量估算的准确度。随着估算的改进,可以看到 MRE 逐渐减小。最右侧一栏显示了有多少个估算的实际结果处于最好情况估算值和最差情况估算值构成的范围内。你还可看到,随着估算准确度的提高,实际结果落在估算范围内的百分比是逐渐增加的。

在比较实际结果和估算值时,应该尽可能了解哪些方面做得对、哪些方面做得不对、哪些方面被忽视了,以及将来应如何避免这些错误。

由公众对估算进行回顾是另一种可以建立反馈机制,促进提高估算准确度的实践方法。我工作过的一些公司让他们的开发人员在星期一早上的例会上汇报他们的估算结果与实际结果之间的对比情况。这有助于增强“准确估算是每一个开发组织应予以优先考虑的事”这一理念。

不管采用哪一种具体做法,基本的原则是建立一种基于实际结果的反馈机制,以便可以逐渐提高估算能力。

posted @ 2025-04-07 18:32  LHX2018  阅读(33)  评论(0)    收藏  举报