一个成功的软件项目首先要有一个好的起点,也就是一个合理的项目计划;一个好的项目计划,离不开一个准确的、可信的、客观的项目估算数据作为基础。如何提高估算的准确性,如何利用项目估算的数据来制定项目计划,本文就将带领大家学习、理解软件项目估算的一些最佳实践。
为什么要对项目进行估算
对于庞大的、多变的软件项目来说有着太多的不确定性。之所以要先制定项目计划,目的就是为了让项目更加可控。如果项目的计划缺乏数据进行支持,或者根本不进行估算,只凭项目管理人员的经验进行管理,那么项目最终就会变成软件项目常见的“三拍”现象:“首先公司领导拍拍某个项目经理的脑袋,说你来负责这个项目;项目经理拍拍胸脯说没问题;最后项目失败的时候项目经理就只能拍拍屁股走人”。
当然,这只是个玩笑。不过由此可见项目估算是项目管理人员深入了解项目的第一步,做到“知己知彼,才能百战不殆”。
常用的软件估算方法
软件可以通过主观和客观两种方法对其进行估算。
主观的估算方法可以通过召集项目团队成员,或者邀请各方面的专家,共同对某个项目的属性进行评估。参与评估的每个人都要单独进行估算,如果发现大家对某个项目属性估算的结果存在较大偏差,那么就需要做进一步的讨论,直到取得共识为止。对个别特殊属性进行主观估算时,一定要有直接干系人的参与,例如:对某个文档工作量进行估算时,最好该文档的负责人参与估算,因为他才是最终的执行人。
客观的估算方法是利用公司提供的各种度量数据进行估算,例如:组织级的生产率,或者其他项目的度量数据。本文主要讲解项目管理人员如何通过客观的方法对项目进行估算。
项目的哪些属性可以进行估算
软件项目的属性有很多,建议至少以下属性要在项目计划时对其进行估算:
1、 项目规模
2、 项目工作量
3、 项目所需资源
4、 项目各阶段工作量
5、 项目成本
如何对项目规模进行估算
对项目规模进行估算是为了将项目的范围进行量化,项目规模的估算是整个软件估算中最核心、最基础的环节,也是整个估算的第一步。
软件项目的规模可以使用功能点估算法和代码行估算法两种方式,但是作为项目初期阶段,建议使用功能点法进行估算会比较合理。具体的功能点估算方法可以参考我之前在ITPUB上发表的相关文章。
如何对项目工作量进行估算
在项目规模的基础上,可以利用组织级生产率得到项目总的工作量。例如:一个公司组织级生产率如下图所示,在2008年中期时,该组织每开发一个功能点需要花费1.5个人/天的工作量。假如该公司某项目有200个功能点,那么该项目的工作量就可以通过以下公式计算出来:
项目工作量= 200 * 1.5 = 300 人/天
如何对项目所需资源、各阶段工作量进行估算
对这些项目属性进行估算的主要方法是通过与组织级度量库中的历史数据进行对比,找到相同规模的历史项目,参考其数据,根据本项目的特点对相关属性进行估算。假如本项目与公司之前的某项目A规模大体相当,项目A历史数据如表1和表2所示:
瀑布模型生命周期各阶段
两个项目的规模相当,这是我们进行估算的依据,根据之前对项目总工作量的估算(300人/天),那么就可以得到本项目各个阶段的工作量分布,如表3所示:
瀑布模型生命周期各阶段
如何对项目工期进行估算
假设本项目采用瀑布式的开发模型,并且所需资源与组织级度量库中的历史项目A相同,根据表3对各个生命周期阶段工作量的估算,以及表1对各种资源的估算,那么通过表4的计算就可以得到完成本项目所需要的时间。
假如每月按照21个工作日进行计算,那么本项目估计5.82个月后可以结束。
如何估算项
目的成本
假如本项目所使用的资源与项目A相同,那么就可以参考组织度量库中2008年各种资源的平均成本,
经过对项目周期的估算,可以得知本项目大概需要5.82个月的时间。基于以上数据就可以通过表5来对项目的成本进行估算,其结果如下所示:
至此,对项目的规模、成本、工作量、资源和工期的估算方法和顺序就介绍完了,通过本文的介绍,希望广大项目管理人员可以掌握项目估算的技巧。对于使用客观方法进行估算时,组织级的度量数据是关键核心点。另外,软件项目始终伴随着各种各样的变更,这正所谓“变化是永恒的,不变是短暂的”。 作为一个成熟的项目管理者应该勇于面对变化,在每次重大变化后对项目进行重新估算是十分必要的。