第一步:准备估计内容 准备估计内容主要有两点需要注意:一是完备地识别被估计内容;二是尽管 Delphi 法既可以 对颗粒度比较大的任务进行估计,也可以对颗粒度比较小的任务进行估计,但是还是要细分任务, 目的是提高估计的准确度与加快估计值收敛的速度。
第二步:成立估计小组。 成立估计小组阶段应该注意以下事项: ①估计小组应该由协调人、作者和 3 到 6 名估计专家组成。 ②协调人负责计划和协调软件估计活动,协调人在担任此角色时不能用自己的观点去引导专 家,也不能因为自己的认识或偏见而对软件估计的结果进行歪曲。 ③协调人不能是作者,也不必作为专家。 ④专家的数量不宜过多,否则成本比较高。 ⑤专家必须具备两个条件:一是:有业务与技术经验的,熟悉估计的内容;二是要有估计的经 验,接受过估计方法的培训,并曾经在实践中评价过自己的估计准确率。 第三步:召开启动会议。 协调人负责召开启动会议,在启动会议上主要进行以下工作: ①作者向专家介绍估计的内容、项目的各种假设和限制条件。 ②专家对被估计的内容达成一致,并确认各种假设和限制条件。 ③专家对估计结果的试题单位达成一致,如估计软件的规模时,是用行还是千行作为计量单位, 代码行是否包括注释、空行、开发平台自动生成的语句等,这些都应该达成一致。 ④对估计结束的准则达成一致。 第四步:专家独立估计。 在专家进行独立估计时,应该注意以下问题: ①专家的估计活动不应受外界压力的影响,协调人或作者不能给出估计结果的上下限或其他 限定。②各专家之间没有讨论和咨询。 ③各专家采用的估计方法也不受限制。 ④如果专家认为被估计的内容中存在不明确的地方,应该记录自己所做出的各种假设。 第五步:汇总估计结果。 汇总估计结果应该收集各专家的估计结果,制作本轮的估计结果表。差异率的计算方法以及接 受的准则应该在活动 2 或者活动 3 时确定,通常的差异率的计算方法如下: 差异率=max(最大值-平均值,平均值-最小值)/平均值; 当差异率小于 25%时,平均值为最终估计结果。 需要注意的是,由于颗粒比较小的任务对差异率比较敏感,所以可能需要区别定义接受准则。 如果存在离群点,可以考虑删除。
第六步:讨论不收敛项。 讨论不收敛项主要需要完成以下内容: ①将本轮的匿名估计结果公布给各专家。 ②讨论不收敛的估计项。 ③为了达成一致的理解,此时可能需要重新细化估计内容或确定估计假设。 第七步:新一轮估计。 新一轮估计主要是对上一轮估计结果未被接受的估计项,执行活动 4 的步骤,如此不断反复, 直至满足以下任何一项条件: 完成多轮估计(如 5 轮),该条件已经在结束准则中确定了; 所有的估计结果收敛于一个可以接受的范围; 所有专家拒绝对各自的估计结果进行修改。 第八步:讨论未收敛的估计项。 对于结束了多轮估计后,仍然未收敛的估计项,可以采用如下方法确定最终估计结果: 按照少数服从多数的原则,忽略少数与其他估计结果差异很大的估计结果; 采用“掐头去尾求平均值”的方法; 由各专家进行讨论,形成一个一致的意见。 当然,也不限于采用其他方法来确定最终的估计结果。 第九步:总结本次估计。 总结本次估计主要需要完成以下内容: ①估计小组对最后汇总的估计结果进行审核,并对结果达成一致。 ②估计小组可以对 Delphi 法进行思考,提出改进措施,以使将来的估计活动更加有效。 (4)开发时间百分比法 使用开发时间百分比法评估的前提是开发时间和开发工作量,也就是说,这种方法评估的准确 性很大程度依赖于开发时间和开发工作量的评估。其步骤如下: 第一步:使用 LOC 或 FP 的方法,先估算出开发工作量。 第二步:使用一些探索性的方法来限制测试的工作量,通常遵守以下原则: 测试总花费的时间占整个项目的 35%; 5%~7%给组件和集成测试; 18%~20%给系统测试; 10%给接收测试(或回归测试等)。 这种估算方法存在很大的不确定性,因为这个更多的是依靠经验来制定,不像其他的方法计算 比较精确。 (5)PERT 法 PERT(Program Evaluation an Review Technique,计划评审技术)主要用来估算软件项目时间 成本。PERT 估计方法需要评估最佳的、可能的、悲观的三种情况下的估计值,假设最佳的、可能 的、悲观的估计值分别计为 a、m、b,之后再按照以下公式来计算估计值: E=(a+4×m+b)/4 E 的值则为计算出来的期望值。 在该公式中,包含了如下两个原理: 原理一:对上式进行变换,引入一个中间结果 c,c 的值为 a+2×m+b,那么期望值 E 的结果为 E=(m+c)/2。 原理二:从上面的公式也可以看出,在计算 E 的公式中,m 的权重为 4,而 a 和 b 的权重都是 1,也就是说,该方法强调了中间值的重要性,而极值的重要性并不大。 该方法在实际使用过程中,需要注意以下问题: 第一:当只有一个人参与估算时,则需要估算人估算三个数值:悲观的值、可能的值、乐观的 值,然后再使用公式来计算就可以。 第二:当 2 个人参与估算时,则需要 2 个估算人分别估算三个数值:悲观的值、可能的值、乐 观的值,然后分别计算这 3 个数据的平均值,再将计算出来的悲观的平均值、可能的平均值、乐观 的平均值这三个值使用公式来计算就可以。 第三:当 3 个人参与估算时,有以下 2 种方法: 类似第二种情况的处理方法,此时 3 个人估计得到 9 个值; 每个人只估计一个数,取最大值、最小值作为悲观值和乐观值,取中间的数据作为可能 值,再使用公式计算就可以。 第四:当 N 个人(N>3)参与估算时,有以下 2 种方法: 类似第二种情况的处理方法,此时 N 个人估计得到 3×N 个值; 每个人只估计一个数,取最大值、最小值作为悲观值和乐观值,对中间的 N-2 个数值取 平均值,再使用公式计算就可以。 一般 PERT 方法适用于少于 6 人参与估算的项目。 以上详细地描述了功能点评估法、类比法、Delphi 法、开发时间的百分比法和 PERT 估计法, 但在实际工作中,我们使用最多的方法还是按功能点来评估,这样更直接,其他的方法更适合整个 项目工期的评估。