1.6 估算与项目控制
有时,大家在讨论软件估算时会把估算当作是纯粹的预测活动,就好像是由一个端坐在太空的公正估算者来进行估算,而与项目计划及确定优先级的活动没有任何联系。
实际上,软件估算中没有什么是完全不受其他事情影响的。估算活动是海森堡不确定性原理在软件方面应用的一个例子。(海森堡不确定性原理说的是①,仅仅对事物的观察的活动就会改变事物本身,因此只有看到事物的表现时才会知道它的表现是什么样的,而不可能预知它的表现。)一旦做出了估算,并且在此估算的基础上承诺
在特定日期之前交付具有一定质量的功能,就要控制项目以使其达到目标。典型的项目控制活动包括去掉非关键的需求、重新定义需求、用更有经验的人员替换缺乏经验的人员,等等。图1-9说明了这些变化因素。

图1-9 项目从起始到交付会发生显著变化。变化之大通常足以导致交付的项目与估算的
项目不一样。不过,如果项目结果接近于估算值,那我们就说项目与估算一致
除了项目控制活动,项目还常常会受到无法预见的外部事件的影响。项目团队可能需要建立中期发布来支持关键的客户。某些人员可能会转而支持旧项目,等等。
项目过程中发生的事件几乎总会让最初对项目进行估算时所做的假设失效。功能假设会改变,人员假设会改变,优先级也会改变。不可能对是否准确估算了项目进行清晰的分析评估——因为最终交付的软件项目与最初估算的项目不一样。
实际上,如果我们交付的项目与最初想要的功能水平大致相当,花费的资源与计划基本上相同,而且基本上是在设定的时间框内完成的,那么通常就会说项目“与估算一致”,而不管这种说法在推理上隐含着怎样的瑕疵。
这样,由于无法对估算的预测能力进行评估,评价“良好”估算的标准就不能基于它的预测能力,而是要基于估算为项目成功提供支持的能力。这把我们带向了下一个主题:估算所扮演的适当角色。



