一、使用完善的评估方法的重要性
一般情况下,软件项目会受到四种因素的控制,它们分别是时间、需求、资源(包括人员、硬件条件以及资金)和风险。这些因素的任何意料之外的变化都会对我们的项目产生影响。因此,做好时间和项目资源需求的评估是非常必要的。如果过低估计项目预算,会由于缺乏项目实施时间、资金、硬件条件或是没有足够的人来完成等原因导致非常严重的后果。但如果过高地估计项目需求预算,也会因为成本太高使企业付出很大的代价,最后这个项目可能会被搁浅,就算项目被批准实施,也会由于此项目占用大量的资源而使其它的项目由于得不到足够的资源来呈现“饥饿”状态。
从我的经验来看,对一个项目做时间和所需资源的预算评估通常对于大多数团队和项目经理是一个非常大的挑战。形成挑战的原因有很多,如它们对预算评估没有足够的经验、对评估技术或所涉及的商业领域缺乏了解,需求不清楚等。尽管负责项目预算评估的经理已经尝试了使用最好的方法来处理需求及各方的关系问题,但由于以上的原因,不可避免地导至整个团队由于评估失误而超过预算,或是项目失败。还有另外一种评估预算的方法,就是使用高度乐观的方法进行评估,而忽略我们需要处理的具体项目。那么我们到底该怎么做呢?
二、实用的预算评估技术
在我们开始研究预算评估之前,需要对我们能提供的预算评估类型有一个初步的认识。预算评估可以被简单地分为下面三种类型:
1. 宏观预算评估:这种评估方式将根据项目的宏观轮廓进行一个总体的估计。这种估计是非常粗略的。在理想状态下,所评估出来的值应该是实际值的两倍至三倍。
2. 粗略预算评估:用这种评估方式评估出来的数据已经非常接近实际值了。在理想状态下,评估出来的值应该是实际值的50%至100%。
3. 精确预算评估:这是一种非常好的预算评估主要。在理想状态下,所评估出来的值应该是实际值的25%至50%。
决定使用这三种不同预算评估类型中的哪一种是十分重要的。当我们对需要做的项目背景和业务非常熟悉,并且类似的项目已经做过很多次的情况下,使用精确评估是可行的。当我们正在做系统维护工作时,所能遇到的问题是已知的,或是增加一个我们曾经做过的功能时,这种预算评估是允许的。粗略评估是在我们对需求比较熟悉的,以及对相关领域和技术熟悉的情况下采用的。而在所有其他的情况下,最好的预算评估方法就是宏观预算评估。也许有很多人固执地认为宏观预算评估的结果几乎等于没做任何评估!但这种评估的结果实际上是非常价值的,因为这些评估结果可以给企业和项目街头团队一些关于正在进行的项目需要些什么,其中包括时间、资源和资金。使用这种方法我们至少知道某个项目需要两到六个月的时间来完成。如果不进行评估,也许我们根据就不知道项目需要多少时间来完成。根据评估结果,我们可以根据需要对某些重要的项目进行更细致的预算评估。例如,我们可以为我们需要的基础构架提供一个精略评估,而不仅仅是一个关于人员和时间的宏观预算评估结果。
三、如何进行宏观预算评估
当我们开始个全新的项目时,所面对最多的就是这种预算评估方式。新的技术、对领域知识和技术不熟悉的团队,或是对需求不清楚。而对付这些情况最好的预算评估方式就是宏观预算评估。
1. 打破项目是由许多不同需要的任务组成的束缚。尝试着为项目尽可能地增加任务。典型的做法是按着设计和实现软件的一般方法来提取出新任务,如分析、设计、实现、演示、测试、bug核对、文档、发布以及技术支持等,看看如果这些步骤在每个任务中都要求去做,那么就可以考虑将它们提出来做为一个新的任务。
2. 使用两个指标来评估每一个任务:复杂度(分为高