软件项目管理估算复杂性、历史经验的可重复性、复杂性、历史经验的可重复性、缺乏估算工具和一些人为错误往往会导致软件项目的估计与实际情况相差甚远。据有关机构调查,约60%的软件项目失败是由估计偏差引起的,而不是由于缺乏技术实力。因此,估计偏差已被列为软件项目失败的四个主要原因之一。
从软件工程学上,我们知道软件需求和估算是软件项目的基础。因为只有准确的了解客户的需求,以之为基础,并使用科学的方法对目标软件系统的规模、工作量和进度做出合理的估算,我们才能在预算内按时按质顺利的完成项目。然而,软件估算作为软件项目的基础领域却常常被人们所忽视。我在近期的一个开发项目中就尝到忽视软件规模估算带来的苦果,结果是项目进行到一半时就发现不但工期严重滞后于计划,而且项目的各种资源也严重的不足和缺乏,项目被迫暂停下马。
项目规模估算不准确的常见原因
软件项目管理的规模估算一直存在(Size Estimation)这是一个有争议的问题。软件规模估计对软件开发团队和软件用户的重要性无疑是毋庸置疑的。因为它可以极大地影响甲方对合同软件的成本估算、乙方对自身开发成本的预测以及乙方对开发过程的定量管理。此外,只有对软件规模进行相对合理和准确的估计,才能合理部署项目进度安排、资源分配等环节。因此,软件项目的规模估算是软件项目中非常重要的一部分。然而,以下原因使我在本项目的实际操作中对项目规模的估计不准确:
(1)对项目规模估算认识不足
项目规模估算一般分为两种应用场景:一种是投标时的评估和报价;另一种是安排进度计划,指导项目具体工作的分配。因此,如果对规模估算缺乏了解,在这两种应用场景中可能会出现不准确的估计。例如,如果项目规模被低估,就会导致人力估计被低估,成本预算被低估,时间表太短,最终人力资源被耗尽,成本超过预算。最后,为了完成项目,我们必须赶上工作,这不仅会影响项目的质量,还会导致项目的失败。如果规模被高估,投标时的竞争力将会降低,或者在进度安排时会增加开发成本和浪费资源。由于对规模估算缺乏了解,我在这个项目中尝到了一个很大的苦果,即项目规模被低估,导致项目需要多次额外的预算。我不仅多次受到公司领导的批评,还多次受到客户的投诉。
(2)个人经验估算法有一定的局限性
一般来说,依赖历史或个人经验的规模估算方法有一定的局限性。原因是在项目分析和计划阶段很难相对准确地估计软件的规模。由于估计依赖于评估人员的经验,因此对评估人员的能力要求相对较强,第三方很难纠正评估人员的工作偏差。在项目的早期阶段,我只是片面地根据我的个人经验进行估计,结果是轻率地估计了项目的规模。这是项目失败的最终原因之一。此外,不同的软件项目使用不同的技术,这也极大地影响了软件规模的估计。例如,使用相同的功能JAVA语言和使用Ruby语言中涉及的代码行相差数十行甚至数百行。即使是一样的JAVA语言,使用未使用的框架需要编写不同的代码行。
(3)项目估计缺乏数据支持
由于在软件开发的早期阶段很难准确量化规模估计,因此没有标准需要多少资源、多长时间或规模估计。然而,一个好的项目估计与一个准确、可信和客观的数据是不可分割的。