第七章 计数、估算和判断
如何估算一个房间里的人数?
- 直接估算
- 根据每张桌子人数,相乘
- 房间容量限制标志 * 70%-80%
- 手持式门票扫描仪计数器
7.1 首先计数
本书所揭示的秘密之一就是应该避免一些通常被我们当成是估算的做法!如果可以直接计数得到答案,就应该首先那样做。那个方法产生了前面故事中最准确的答案。
如果无法直接计数得到答案,就应该先对别的某些对象进行计数,然后使用某些校准数据来计算出答案。
7.2 计数的对象
软件项目会产生许多可以计数的对象。在开发生命周期的早期,可以对市场需求(marketing requirement)、特性、用例、用户故事以及其他对象进行计数。
在项目中期,可以在更细的粒度上进行计数——例如工程需求(engineering requirement)、功能用途、变更请求、Web 页面、报告、对话框、显示屏幕和数据库表,等等。
在项目后期,可以在更精细的细节水平上进行计数——已编写的代码、报告的缺陷、类、任务以及在项目早期已经进行过计数的所有细节。
可以针对下面这些目标来决定对哪些对象进行计数。
找到与待估算软件的规模高度相关的计数对象:在不同的环境中,项目规模的最准确指示器是不同的量。在某个环境中,最佳指示器也许是 Web 页面的数目。而在另一个环境中,最佳指示器也许是市场需求、测试用例、用户故事或者配置设置项(configuration setting)的数目。重点是要找到在所处的环境中与规模相关的指示器。
找到在开发周期中可以更早获得的计数对象:越早找到有意义的计数对象,就可以越早提供长期的可预测性。项目的代码行数往往能很好地体现项目的工作量。但是只有到了项目快要结束的时候才能获得代码行的统计值
找到可以产生在统计上有意义的均值的技术对象:寻找可以产生 20个以上计数值的对象。在统计上,样本中至少需要有20项才能让均值有意义
理解正在计数的对象:要采用计数值作为准确估算的基础,就要保证历史数据计数值和估算中使用的计数值采用了同样的假设。
找到计数工作量最小的对象:在所有其他条件都相对的情况下,最好对计数所需工作量最小的对象进行计数
7.3 通过计算把计数值转换成估算值
如果收集了与计数值有关的历史数据,就可以把计数值转换成更有用的对象,例如对工作量的估算值。


- 在项目后期对缺陷进行计数的例子
- 通过 web 页面计数进行估算的例子
7.4 只把判断作为最后的手段
所谓的专家判断是最不准确的估算方法。估算值只有和某些具体数据联系在一起时才是最准确的。
与更多基于判断的估算相比,把历史数据和计算结合起来可以让估算受偏见影响的程度显著减少。

浙公网安备 33010602011771号