什么是软件成本估算
软件成本估算,通常发生在项目早期,在还没有获得充分信息的前提下,对软件项目所需要的工作量和工作进度做出预测,从而产生一组在可接受误差范围内的近似规划,是对构造一个软件系统所需成本的预测。同时,软件成本估算还需要处理软件开发中的产品、人员、技术、组织、过程等复杂因素及其相互影响。因而,简单的将数据放入软件成本估算模型后接受其结果的过程,或是简单考虑后凭主观给出一个估算结果的过程,并不能得到一个好的软件成本估算,估算过程及估算方法的支持对于获得好的软件成本估算结果是非常重要的。
软件成本估算的阶段
软件成本估算从2O世纪60年代发展至今,在软件开发过程中一直扮演着重要角色。无论是产业界还是学术界,越来越多的人认识到做好软件成本估算是减少软件项目预算超支问题的主要措施之一,不但直接有助于做出合理的投资外包、竞标等商业决定,也有助于确定一些预算或进度方面的参考里程碑,使软件组织或管理者对软件开发过程进行监督,从而更合理地控制和管理软件质量、人员生产率和产品进度。
对一个软件项目进行成本估算一般要经过以下2个阶段:
1)大小估算阶段.估算软件大小有两种基本策略:一是估算问题大小,如功能点;二是估算解决方案的大小,如源代码行数、模块数。
2)工作量和工作进度估算阶段,根据有关软件大小的信息来估算软件开发成本。
软件成本估算的主要方法
软件成本估算主要有自顶向下估算法、自底向上估算法、差别估算法、类推估算法、算式估算法等方法。
(1)自顶向下估算法。
估算人员参照以前完成的项目所耗费的总成本,来推算将要开发的软件的总成本,然后把它们按阶段、步骤和工作单元进行分配。
(2)自底向上估算法。
将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,得到软件的总开发量。
(3)差别估算法。
将开发项目与一个或多个已完成的类似项目进行比较,找到与某个相类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。
(4)算式估算法。
算式估算法是根据项目的特点,借助相应成熟的模型,估算软件项目成本的方法。
(5)基于类比方法的软件成本估算
通过特征来收集已完成的项目,形成类比项目库,然后寻找与需要预测项目在应用领域、环境和复杂度等方面最相似的项目,通过最相似项目的已知工作量估算目标项目的工作量,得出软件项目成本估算结果。
(6)专家估算法。
依据同类项目建设中成本管理的经验积累或案例分析、相关知识,组织专家推敲软件项目成本的方法。这种方法不能量化,专家或专家小组所使用的因素难以标准化,难以避免主观影响。