上一篇介绍了软件项目的需求分析和任务分解,即软件项目的范围计划,那么对于一个软件项目来说,我们还需要知道它需要多少时间多少成本,如何得到这些数据就是这次要解决的问题,即项目的成本计划
在项目未完成之前谁也不能准确地得到项目所需要的成本,但是却可以通过估算得到大致的成本
对于软件项目估算来说:估算不是很准确,有误差;不要太迷信某些数学模型;项目经验数据非常重要
软件项目成本由软件项目规模决定,软件项目规模即工作量,一般的单位有LOC(lines of code有效代码行数)、FP(function point系统功能数量)、人月、人天、人年…
软件项目成本包括:完成软件规模相应付出的代价、待开发的软件项目需要的资金、人的劳动所消耗付出的成本是软件产品的主要成本、货币单位
估算的基本方法:
代码行估算法:从软件程序量的角度定义软件项目的规模
功能点估算法:与现实的技术语言没有关系,从系统的功能数量来测量其规模,通过评估、量化、加权得出功能点。功能点计算公式:FP=UFCTCF(UFC:未调整功能点计数。TCF:技术复杂度因子。)UFC包括:外部输入、外部输出、内部逻辑文件、外部接口文件、外部查询
用例点估算法:UCP =UUCP×TCF×ECF UUCP=UAW+UUCW (UCP: UUCP: 计算为调整的用例点 UAW: 计算未调整的角色的权值 UUCW:计算未调整的用例的权值 TCF:计算技术因子 ECF:计算环境因子)
类比 (自顶向下)估算法:估算人员根据以往项目的总成本来推算将要开发的项目的总成本。 适用情况:有类似的历史数据、信心不足的时候、要求不是非常精确估算的时候。
自下而上估算法:利用任务分解图(wbs),对各个具体工作包进行详细的成本估算,然后把成本加起来,得到总的项目成本。 相对比较准确,但是花费时间。
参数估算法:通过项目数据,进行回归分析,得出回归模型,根据参数模型估算成本。使用条件:存在成熟的项目估算模型、有良好的项目数据作为基础。 整体公式 E=a+bS^c (E:以人月表示的工作量 a,b,c:经验导出的系数 S:主要的输入参数(通常是LOC,FP等))
专家估算法:由多位专家进行估算,综合得到估算值。
敏捷项目估算:story point,故事点用来度量一个story需要付出的工作成本。
成本预算:成本预算是将项目的总成本按照项目的进度分摊到各个工作单元中去。成本预算的目的是产生基线。
分配项目成本预算包括三种情况:给任务分配固定资源成本、给任务分配固定成本、给任务分配资源成本
给任务分配资源成本:与资源的基本费率紧密相连,设置资源费率
给任务分配固定资源成本:当一个项目的资源需要固定数量的资金时,可以向任务分配固定资源成本。例如:项目中的一个兼职人员成本
给任务分配固定成本:有些任务是固定成本的类型的任务,也就是说,管理者知道某项任务的成本不变,不管任务的工期有多长,或不管任务使用了那些资源。在这种情况下,管理者向任务直接分配成本。例如:某外包任务、培训任务