栖息谷-管理人的网上家园

[推荐]软件项目之预算评估三把刀

[复制链接] 1
回复
1004
查看
打印 上一主题 下一主题
楼主
跳转到指定楼层
分享到:
发表于 2007-12-14 17:07:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、使用完善的评估方法的重要性
   
一般情况下,软件项目会受到四种因素的控制,它们分别是时间、需求、资源(包括人员、硬件条件以及资金)和风险。这些因素的任何意料之外的变化都会对我们的项目产生影响。因此,做好时间和项目资源需求的评估是非常必要的。如果过低估计项目预算,会由于缺乏项目实施时间、资金、硬件条件或是没有足够的人来完成等原因导致非常严重的后果。但如果过高地估计项目需求预算,也会因为成本太高使企业付出很大的代价,最后这个项目可能会被搁浅,就算项目被批准实施,也会由于此项目占用大量的资源而使其它的项目由于得不到足够的资源来呈现“饥饿”状态。
   
从我的经验来看,对一个项目做时间和所需资源的预算评估通常对于大多数团队和项目经理是一个非常大的挑战。形成挑战的原因有很多,如它们对预算评估没有足够的经验、对评估技术或所涉及的商业领域缺乏了解,需求不清楚等。尽管负责项目预算评估的经理已经尝试了使用最好的方法来处理需求及各方的关系问题,但由于以上的原因,不可避免地导至整个团队由于评估失误而超过预算,或是项目失败。还有另外一种评估预算的方法,就是使用高度乐观的方法进行评估,而忽略我们需要处理的具体项目。那么我们到底该怎么做呢?

   
二、实用的预算评估技术
   
在我们开始研究预算评估之前,需要对我们能提供的预算评估类型有一个初步的认识。预算评估可以被简单地分为下面三种类型:
   
1. 宏观预算评估:这种评估方式将根据项目的宏观轮廓进行一个总体的估计。这种估计是非常粗略的。在理想状态下,所评估出来的值应该是实际值的两倍至三倍。
   
2. 粗略预算评估:用这种评估方式评估出来的数据已经非常接近实际值了。在理想状态下,评估出来的值应该是实际值的50%至100%。
   
3. 精确预算评估:这是一种非常好的预算评估主要。在理想状态下,所评估出来的值应该是实际值的25%至50%。

决定使用这三种不同预算评估类型中的哪一种是十分重要的。当我们对需要做的项目背景和业务非常熟悉,并且类似的项目已经做过很多次的情况下,使用精确评估是可行的。当我们正在做系统维护工作时,所能遇到的问题是已知的,或是增加一个我们曾经做过的功能时,这种预算评估是允许的。粗略评估是在我们对需求比较熟悉的,以及对相关领域和技术熟悉的情况下采用的。而在所有其他的情况下,最好的预算评估方法就是宏观预算评估。也许有很多人固执地认为宏观预算评估的结果几乎等于没做任何评估!但这种评估的结果实际上是非常价值的,因为这些评估结果可以给企业和项目街头团队一些关于正在进行的项目需要些什么,其中包括时间、资源和资金。使用这种方法我们至少知道某个项目需要两到六个月的时间来完成。如果不进行评估,也许我们根据就不知道项目需要多少时间来完成。根据评估结果,我们可以根据需要对某些重要的项目进行更细致的预算评估。例如,我们可以为我们需要的基础构架提供一个精略评估,而不仅仅是一个关于人员和时间的宏观预算评估结果。
   
三、如何进行宏观预算评估
   
当我们开始个全新的项目时,所面对最多的就是这种预算评估方式。新的技术、对领域知识和技术不熟悉的团队,或是对需求不清楚。而对付这些情况最好的预算评估方式就是宏观预算评估。
  
1. 打破项目是由许多不同需要的任务组成的束缚。尝试着为项目尽可能地增加任务。典型的做法是按着设计和实现软件的一般方法来提取出新任务,如分析、设计、实现、演示、测试、bug核对、文档、发布以及技术支持等,看看如果这些步骤在每个任务中都要求去做,那么就可以考虑将它们提出来做为一个新的任务。

2. 使用两个指标来评估每一个任务:复杂度(分为高、中、低三个档次)和工作量(分为大、中、小三个档次)。一个并不复杂的任务仍然可能是一个工作量很大的任务。例如,将paper form上的信息保存在数据库中可能需要数周的时间。一个非常复杂的的任务的工作量也可能不大,但仍然需要花很多时间来完成,例如对一个数据库的性能优化。对于复杂的任务,一般当其非常大时,拆分成小的任务后分配到许多人或团队时是非常困难的。而简单的任务就很容易地被分拆和分配。
   
3. 有效地评估任务所需的时间。对于最后形成的任务,需要定义它们所需的时间和资源。例如,我们可以设置低复杂度和工作量少的任务需要最多需要一周的时间,而中等复杂度和小工作时的任务需要三周的时间等等。这些量化后的指标和基于团队和项目的指标不同,这此指标和数据将在下一次评估时帮助我们获得更好的效果。因此,应该将所有的任务的宏观评估值都加到一个表中,如下表所示:
四、如何进行粗略预算评估
    
当我们对项目的任务有了一个好的想法,并知道如何去做的情况下,可以使用这种预算评估。
   
1. 最好让实际参与项目的人来进行这种评估工作。最后可以将这些参与评估的人的评估结果累加,从而得到最终的预算评估。
   
2. 确保评估函数的自变量为:时间、人员和资源需求。
   
3. 对分拆后的任务尽可能地考虑到它们的细节部分。在上面曾经提到过。按着典型的软件设计和实现轨迹,如分析、设计、实现、演示、测试、bug核对、文档、发布以及技术支持,并考虑这些任务是否为每个任务都需要的,对做这项工作是非常必要的。我们应保证每个时间单位为八十小时或更少的时间。

五、小结

本文所讨论的技术可以帮助我们更出色地完成预算评估工作。将评估所得出的数据和项目实际需求数据进行对比。鉴别什么是正确的,什么是错误的。将帮助我们改善下次评估的结果。随着我们从事更多的预算评估工作,我们的经验将会有更显著的增加!

沙发
发表于 2007-12-15 17:03:23 | 只看该作者

客户需求分析是否完整会对成本影响很大,很多时候你的预算评估在后期客户的众多需求下显得没有力度。

当然,楼主的从理论角度的分析还是很精辟,也希望能给其他家人带来一些思考。

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 加入

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表