软件开发成本管理

来源:互联网 发布:同时学java和python 编辑:程序博客网 时间:2024/05/03 05:47

    

 来自csdn

  软件开发成本管理之由时间、质量、成本是决定项目管理成败的鼎之三足,每个项目都有一个预算,项目成功就包含着要在批准的预算范围内完成项目。但是很多国内软件业的项目经理,都会认为项目经理抓好两件事即可,一手是时间,一手是质量。而对于开发成本的管理,始终没有上升到应有的高度,即使在一些CMM/CMMI级别比较高的公司,他们对于项目的开发成本也都没有做到很好的管理。

    为什么出现这样的情况?究其原因,其一,项目经理这个位置在公司发展中走得是技术路线,成本管理并没有得到很高的重视。其二,成本管理做起来的确比较麻烦,费时费力,效果也不一定精确可用。很多公司现在如果让他们说出他们开发人员的生产效率是多少,很少有人可以精确说出;加上现在大多项目组织是矩阵式管理,人员作为资源在项目组里流动性比较大,所以大多是一笔糊涂帐。其三,就如上面所说,在中国很多公司中,项目经理并不负责项目的预算部分,这项工作往往由职能部门的经理来担当,由他负责跟踪、报告和监控项目的开销。

  说到这里,有的朋友可能会反驳了,项目中我控制好时间和质量,成本就控制了。诚然,如果一个项目如果时间和质量控制的合适,成本也大多是较好的,但这是远远不够的。我们经常会看到这样的情形,从前些年的“工资跟着学历走,程序员要求硕士以上学历,而招来的技术专业类博士生却去做服务”到现在软件行业已经走出高利润回报的后时代,公司的项目签合同或者开发或实施过程中看着好像在盈利,但是到了年底核算,公司却是亏损严重。或是项目到了中后期,无论怎么努力,为了千方百计完成项目,花费都已经无法控制等种种现象,表明成本管理依然是软件行业项目管理的木桶短板。

软件开发成本管理之术及实践

  项目成本管理,就是保证项目在预算内完成的管理。如果用最简单的话来说,成本管理是回答如下花钱问题的:

  这个项目将花多少钱?

  这个预算合理吗?依据是什么?

  这些钱够花吗?是否预算考虑了项目风险的因素?

  这些钱花在什么地方?如何花?何时花?

  如何能保证花钱是在预算之内的?

  这个项目实际花了多少钱?

  如何评估花费?

  这个项目花费的历史记录对项目成本管理有何贡献?

  这些问题,从项目成本管理过程中,分为如下过程:资源计划编制、费用估算、费用分配和费用控制阶段。当然这四个过程并不是瀑布式的,而是组成了项目成本管理的闭环。

计划编制

  在进入了资源计划编制阶段之前,一般应完成工作范围说明书和WBS,在资源计划的过程中,我们要确定完成项目活动需要使用什么资源以及多少资源,所以输出就是项目的资源需求计划,也就是人、物等资源的需求计划。过程的输入除了上面所说的工作范围说明书和工作分解结构WBS外,一般还会有资源配置库说明、活动的工期估算,以及公司项目管理库中的机构政策和历史信息。在此过程中,常用的技术就是专家判断方案选择方法,当然也可以用MicroSoft 的Project、IBM的Rational Portfolio Manager等项目管理软件来进行,将范围和时间计划的甘特图等关联资源。

费用估算

  费用估算环节,主要是估算要完成项目活动所需资源将耗用多少费用。在这个环节要得出费用估算值、和费用计划等文档。这时我们的输入,除了上一个过程的输出资源需求外,还需要WBS,因为WBS是确定成本估算准确性的关键,我们需要为WBS中列出的每项活动所需的资源做出成本估算。除WBS以外,还需要资源价格或者比较符合实际价格的成本估算出版物、历史信息,以及考虑风险等情况。资源价格即是资源的单位成本,例如招聘的开发人员、测试人员折算的每小时薪金,用上面得出的该资源需求工时数乘以单位成本,就得出该资源成本估算了,累加这些成本。在此过程中,在确定成本估算时一定要包括项目整个生命期的全部成本,例如项目正式结项前,例如验收前的全部环节,包括上线测试期成本以及一年的质量担保期的运行成本等。因为,项目中通常会承诺用户在质量担保期内修复Bug或者解决问题,这些开支要包含在估算中。而且,一定要估算出项目所需的所有资源,包括刚才说的员工工资、外包合作单位的成本、材料费、设备及硬件、软件工具等成本或者成本分摊。

  成本估算中,常用的技术包括类别估算,也就是通过一些历史信息或者类似项目的相关信息,考虑项目异同和风险情况,用类别方式从上而下的估算方法。常用于项目范围不甚明确的时候,这时估算也相对较粗。在CMM/CMMI4企业中,有了量化管理的依据,我们可以根据真实的历史项目情况,进行类别估算。

  参数化建模方式将影响成本的因素,进行参数化,将一些代表生产率或者单位成本等数量代入模型运算,就可以从该工作要素中得到整个项目的成本估算。例如我们知道单位人工生产率这些参数,在软件行业是人日(时)代码行数等,都是非常重要的进行估算的模型参数。如果影响最终结果的因素,有多个参数,我们还可以为每个参数分配权值。当然根据不同公司政策和项目情况,我们需要累积这个模型。一般如果公司有PMO组织或者严格的过程管理组织话,这个方法也经常使用。

  自下而上估算,与类比估算相反,先从WBS的底层,单独估算项目中的每项活动,。然后加起来算出总体成本。这是较准确的估算方法,但是也较为费时,因为它必须要求对每个包进行估算。当然现在很多项目管理工具提供了这种估算自动加和,这也是最常用的估算方法。

费用分配

  费用分配过程是把费用预算分配到每一项活动中,以便获得项目费用计划基准。这个过程比较简单,就是利用费用估计值、WBS、项目进度计划和风险管理计划等,制定出项目的费用计划基准,这里的费用计划基准是一个按照实践阶段分配的预算计划,用来衡量和监控项目费用状况。可以在接下来的费用控制过程详细解释。

费用控制

  制定了项目的费用计划基准,我们需要根据项目状况报告、项目变更情况及申请,费用管理计划等进行费用控制,以便控制费用预算的变更,做出修订费用估算、更新项目预算以及采取纠正措施等对项目费用控制。费用控制的目标是评估影响引起费用变更的因素,以便保证变更可以在项目各方干系人可以接受;判定费用计划基准是否偏离,对出现的偏离进行管理和纠正。由于项目管理的过程是变动的过程,我们会遇到很多实际情况而需要进行评审和变更,如何在变动的项目管理中控制费用?所以项目成本管理中最难的就是费用控制。如何在变动中控制项目成本,如何解决这个难题?挣值管理就是常用的技术,用费用偏差CV,进度偏差SV,费用指数CPI以及进度指数SPI等指标进行量化计算,这里不再赘述。在项目管理或者过程管理高level的公司,经常用此技术进行成本费用控制。

  以上四个过程完成后,项目收尾阶段,对于项目成本进行分析和记录,以便为本项目管理进行总结和后续项目估算参考使用。例如我们常进行成本偏差以及ROI等各种财务指标分析,以下是使用IBM RPM的一些界面。

  随着项目管理知识的普及和大家项目管理经验的积累,项目经理在成本管理领域将会有更多的责任,更多的关注成本管理,补上我们项目管理的短板,势在必行。

原创粉丝点击