软件项目之预算评估三把刀

发表于:2008-01-17来源:作者:点击数: 标签:项目估算
一、使用完善的评估方法的重要性 一般情况下,软件项目会受到四种因素的控制,它们分别是时间、 需求 、资源(包括人员、硬件条件以及资金)和风险。这些因素的任何意料之外的变化都会对我们的项目产生影响。因此,做好时间和项目资源需求的评估是非常必要的
一、使用完善的评估方法的重要性

    一般情况下,软件项目会受到四种因素的控制,它们分别是时间、需求、资源(包括人员、硬件条件以及资金)和风险。这些因素的任何意料之外的变化都会对我们的项目产生影响。因此,做好时间和项目资源需求的评估是非常必要的。如果过低估计项目预算,会由于缺乏项目实施时间、资金、硬件条件或是没有足够的人来完成等原因导致非常严重的后果。但如果过高地估计项目需求预算,也会因为成本太高使企业付出很大的代价,最后这个项目可能会被搁浅,就算项目被批准实施,也会由于此项目占用大量的资源而使其它的项目由于得不到足够的资源来呈现“饥饿”状态。

    从我的经验来看,对一个项目做时间和所需资源的预算评估通常对于大多数团队和项目经理是一个非常大的挑战。形成挑战的原因有很多,如它们对预算评估没有足够的经验、对评估技术或所涉及的商业领域缺乏了解,需求不清楚等。尽管负责项目预算评估的经理已经尝试了使用最好的方法来处理需求及各方的关系问题,但由于以上的原因,不可避免地导至整个团队由于评估失误而超过预算,或是项目失败。还有另外一种评估预算的方法,就是使用高度乐观的方法进行评估,而忽略我们需要处理的具体项目。那么我们到底该怎么做呢?

    二、实用的预算评估技术

    在我们开始研究预算评估之前,需要对我们能提供的预算评估类型有一个初步的认识。预算评估可以被简单地分为下面三种类型:

    1. 宏观预算评估:这种评估方式将根据项目的宏观轮廓进行一个总体的估计。这种估计是非常粗略的。在理想状态下,所评估出来的值应该是实际值的两倍至三倍。

    2. 粗略预算评估:用这种评估方式评估出来的数据已经非常接近实际值了。在理想状态下,评估出来的值应该是实际值的50%至100%。

    3. 精确预算评估:这是一种非常好的预算评估主要。在理想状态下,所评估出来的值应该是实际值的25%至50%。

    决定使用这三种不同预算评估类型中的哪一种是十分重要的。当我们对需要做的项目背景和业务非常熟悉,并且类似的项目已经做过很多次的情况下,使用精确评估是可行的。当我们正在做系统维护工作时,所能遇到的问题是已知的,或是增加一个我们曾经做过的功能时,这种预算评估是允许的。粗略评估是在我们对需求比较熟悉的,以及对相关领域和技术熟悉的情况下采用的。而在所有其他的情况下,最好的预算评估方法就是宏观预算评估。也许有很多人固执地认为宏观预算评估的结果几乎等于没做任何评估!但这种评估的结果实际上是非常价值的,因为这些评估结果可以给企业和项目街头团队一些关于正在进行的项目需要些什么,其中包括时间、资源和资金。使用这种方法我们至少知道某个项目需要两到六个月的时间来完成。如果不进行评估,也许我们根据就不知道项目需要多少时间来完成。根据评估结果,我们可以根据需要对某些重要的项目进行更细致的预算评估。例如,我们可以为我们需要的基础构架提供一个精略评估,而不仅仅是一个关于人员和时间的宏观预算评估结果。

    三、如何进行宏观预算评估

    当我们开始个全新的项目时,所面对最多的就是这种预算评估方式。新的技术、对领域知识和技术不熟悉的团队,或是对需求不清楚。而对付这些情况最好的预算评估方式就是宏观预算评估。

    1. 打破项目是由许多不同需要的任务组成的束缚。尝试着为项目尽可能地增加任务。典型的做法是按着设计和实现软件的一般方法来提取出新任务,如分析、设计、实现、演示、测试bug核对、文档、发布以及技术支持等,看看如果这些步骤在每个任务中都要求去做,那么就可以考虑将它们提出来做为一个新的任务。

    2. 使用两个指标来评估每一个任务:复杂度(分为高、中、低三个档次)和工作量(分为大、中、小三个档次)。一个并不复杂的任务仍然可能是一个工作量很大的任务。例如,将paper form上的信息保存在数据库中可能需要数周的时间。一个非常复杂的的任务的工作量也可能不大,但仍然需要花很多时间来完成,例如对一个数据库的性能优化。对于复杂的任务,一般当其非常大时,拆分成小的任务后分配到许多人或团队时是非常困难的。而简单的任务就很容易地被分拆和分配。

    3. 有效地评估任务所需的时间。对于最后形成的任务,需要定义它们所需的时间和资源。例如,我们可以设置低复杂度和工作量少的任务需要最多需要一周的时间,而中等复杂度和小工作时的任务需要三周的时间等等。这些量化后的指标和基于团队和项目的指标不同,这此指标和数据将在下一次评估时帮助我们获得更好的效果。因此,应该将所有的任务的宏观评估值都加到一个表中,如下表所示:

 

原文转自:http://www.ltesting.net