咨询热线

010-68213013

近年来,受益于国内外IT需求旺盛、国家政策大力支持,我国信息化水平快速提高。据IDC统计,全球软件行业的年增长率一直保持在15%-20%之间。我国软件行业也取得了快速发展,年均增长率保持在20%以上。软件行业不仅能创造十分可观的经济效益,而且由于其强大的渗透和辐射作用,对经济结构的优化调整、传统产业的改造提升和全面建设小康的社会起到重要的推动作用。然而国际上并没有形成向建筑行业成本评估那样的学科,就目前的情况而言,在世界范围内并没有形成软件成本估算方面的通用标准。在软件成本估算方面,澳大利亚、韩国等国家政府都针对政府外包软件项目的成本估算和管理进行研究,并发布了相应的估算标准和工具,来控制政府招投标项目的超支率,效果较为明显。

软件成本估算从2O世纪60年代发展至今,在软件开发过程中一直扮演着重要角色。无论是产业界还是学术界,越来越多的人认识到做好软件成本估算是减少软件项目预算超支问题的主要措施之一,不但直接有助于做出合理的投资外包、竞标等商业决定,也有助于确定一些预算或进度方面的参考里程碑,使软件组织或管理者对软件开发过程进行监督,从而更合理地控制和管理软件质量、人员生产率和产品进度。

软件是技术型密集产业,软件行业中的成本类型主要是人力成本,而人力成本的特点是无需立即支付、很强的伸缩性(例如人员加班工作却不支付加班费、软件项目经常可以免费得到项目组外人员的支持等),这样就使得人们在评估软件成本时不够严谨;软件成本评估不受重视的第二个原因在于软件工作对应的成本不高,与动辄高达上亿元的建筑项目相比较,上千万元的软件项目已经是软件行业中的大项目了。

正是由于软件免费加班的不可持续性和软件规模的显著增长,促使软件行业不得不直面软件成本评估这一主题,依据个人主观经验、粗略地设置费用比例等方式来进行软件成本评估已经无法满足现在的管理需求。

软件项目成本评估中经常会遇到如下问题:  

1、因为缺乏技术背景,管理人员对于软件成本结果的客观性心存疑虑。管理人员可能会觉得下属有意多报成本,通常会采用“打折”等形式进行成本压缩,使得软件项目成本的估算过程成为一个“斗智斗勇”的过程。

2、因为软件项目成本基于经验估算出来,因而对于组织更高层的决策者缺乏说服力。例如软件项目本次包含130个功能模块,所以需要50万元人民币;或者因为本次软件项目的代码量为2万行,所以需要60万元。问题在于没有技术背景的领导可能想听听一个功能模块是多大,如何定义?一行代码是多大,如何定义?

3、加班严重。软件项目中大量存在加班加点的情形,但却没有向开发人员支付足额的加班费,是开发组织的领导发自内心不愿意吗?不全是!如果不靠这种“无偿加班”的开发方式,开发组织的利润便没有着落。所以不是乙方的领导在逼着开发人员加班,是甲方的领导。甲方的领导也是不得已而为之,乙方自己的软件项目成本说不清啊。

4、软件项目中需求变更频繁。因为国内的软件开发项目基本上采用固定总价合同,甲方一般不会为需求变更支付费用(这是软件行业为数不多的一个坏习惯),即便是甲方愿意支付变更费用,变更费用如何确定,仍然是个头疼的问题。

5、无法进行有效的基准比对。甲方或乙方同时在进行多个软件项目,项目结束时,管理层自然会产生这样的想法,“让项目之间比一比怎么样?看看哪个项目的投入产出比更高”。技术人员提意见,“项目和项目不一样,怎么比啊,比个什么劲儿”,可领导心有不甘,“不比哪能知道谁好谁差,可怎么比啊”。

对一个软件项目进行成本估算一般要经过以下2个阶段:

1、软件规模估算:

估算软件规模基本策略:一是估算问题大小,如功能点;二是估算解决方案的大小,如源代码行数、模块数。

2、工作量估算:

根据有关软件大小的信息来估算软件开发成本

软件成本估算主要有自顶向下估算法、自底向上估算法、差别估算法、类推估算法、算式估算法等方法。

1)自顶向下估算法。

估算人员参照以前完成的项目所耗费的总成本,来推算将要开发的软件的总成本,然后把它们按阶段、步骤和工作单元进行分配。

2)自底向上估算法。

将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,得到软件的总开发量。

3)差别估算法。

将开发项目与一个或多个已完成的类似项目进行比较,找到与某个相类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。

4)算式估算法。

算式估算法是根据项目的特点,借助相应成熟的模型,估算软件项目成本的方法。

5)基于类比方法的软件成本估算

通过特征来收集已完成的项目,形成类比项目库,然后寻找与需要预测项目在应用领域、环境和复杂度等方面最相似的项目,通过最相似项目的已知工作量估算目标项目的工作量,得出软件项目成本估算结果。

6)专家估算法。

依据同类项目建设中成本管理的经验积累或案例分析、相关知识,组织专家推敲软件项目成本的方法。这种方法不能量化,专家或专家小组所使用的因素难以标准化,难以避免主观影响。