估算之准与不准
前文回顾
上一篇凡奉的原创文章中我们说明了粗略估算是一个在“量级层面大致准”的估算。因为使用粗略估算的时候,往往是信息不够但又必须决策的时候,那么如何才能保障这种情况下得到的估算值有能力支撑决策呢?今天,我们就要聊一聊准确度和精确度。
估算的准确度与精确度
所谓准确度,指的是估算值与实际值之间的差距。比如实际值是100,估算值A是99,估算值B是98.5。那么显然估算值A的准确度高于估算值B。
所谓精确性,指的是估算值中包含的有效数字位数。估算值A包含2位有效数字。估算值B包含3位有效数字。因此估算值B的精确度高于估算值A。
软件项目中,如果在75%的时间内估算结果偏差在25%以内,已经可以称得上是好估算了。——《Software Engineering Metricsand Models》
这个研究结论为我们上文提到的“量级层面的大致准”提供了衡量的依据——即估算值的准确度在±25%以内,都符合“量级层面的大致准”这一范畴。
如果一个项目的周期估算是400天。我们应该选择用1年(1位有效数字)、13月(2位有效数字)还是400天(3位有效数字)作为估算结果的表达方式呢?这就涉及到精确度的运用技巧了。
如果实际项目持续了450天,换算成估算时使用的单位,为1.2年、15月、400天,准确度偏差分别为0.2、2和50。这个例子并不是建议大家要宽泛,而是提醒大家估算应该在准确度与精确度之间保持平衡。因为精确程度不同的表达会给人不同的直观感受。如何选择就要根据公司的管理习惯和项目的具体情况来定夺了。
在我们讨论准不准的问题时,往往忽略了一个细节。无论准还是不准,都是与实际结果的比较。
估算与现实
如果项目的现实情况不受控,那么再准的估算也无法担负起预言的功能。预言是玄学,估算是科学。Capers Jones在《Estimating Software Cost》中曾指出,“估算准确度最高可以达到±10%,但只在受到良好控制的项目中才能达到”。混乱的项目中有太多可变性。所以当我们考虑估算准不准的时候,不能单纯考虑估算本身好不好,还要考虑实际情况稳不稳。
当我们在使用CMMI进行改进时,改的便是过程性能的稳定性。下图分别是美国空军和波音公司的数据。随着CMMI成熟度的演进,估算的准确性与现实稳定性之间,存在明显可见的提升关系。


总结
本文围绕粗略估算的决策支撑作用,辨析了准确度与精确度的核心概念:准确度代表估算值和实际值的差距,精确度指代有效数字位数,并结合行业标准明确软件项目估算偏差控制在 ±25% 以内,即可满足量级层面的估算要求。同时通过实例说明,估算表达需合理平衡准确度与精确度,适配项目实际管理场景。文章进一步指出,估算效果并非只取决于估算本身,更依托项目过程管控与环境稳定性;CMMI 过程改进能够有效提升项目稳定性,进而显著增强软件项目的估算准确性。