软件开发成本管理
软件开发成本管理软件开发成本管理 软件开发成本管理之由时间、质量、成本是决定项目管理成败的鼎之三 足,每个项目都有一个预算,项目成功就包含着要在批准的预算范围内完成项 目。但是很多国内软件业的项目经理,都会认为项目经理抓好两件事即可,一 手是时间,一软件开发成本管理之由时间、质量、成本是决定项目管理成败的 鼎之三足,每个项目都有一个预算,项目成功就包含着要在批准的预算范围内 完成项目。但是很多国内软件业的项目经理,都会认为项目经理抓好两件事即 可,一手是时间,一手是质量。而对于开发成本的管理,始终没有上升到应有 的高度,即使在一些 CMM/CMMI 级别比较高的公司,他们对于项目的开发成本 也都没有做到很好的管理。 为什么出现这样的情况?究其原因,其一,项目经理这个位置在公司发展中 走得是技术路线,成本管理并没有得到很高的重视。其二,成本管理做起来的 确比较麻烦,费时费力,效果也不一定可用。很多公司现在如果让他们说出他 们开发人员的生产效率是多少,很少有人可以说出;加上现在大多项目组织是矩 阵式管理,人员作为资源在项目组里流动性比较大,所以大多是一笔糊涂帐。 其三,就如上面所说,在中国很多公司中,项目经理并不负责项目的预算部 分,这项工作往往由职能部门的经理来担当,由他负责跟踪、报告和监控项目 的开销。 说到这里,有的朋友可能会反驳了,项目中我控制好时间和质量,成本就 控制了。诚然,如果一个项目如果时间和质量控制的合适,成本也大多是较好 的,但这是远远不够的。我们经常会看到这样的情形,从前些年的“工资跟着学 历走,程序员要求硕士以上学历,而招来的技术专业类博士生却去做服务”到现 在软件行业已经走出高利润回报的后时代,公司的项目签合同或者开发或实施 过程中看着好像在盈利,但是到了年底核算,公司却是亏损严重。或是项目到 了中后期,无论怎么努力,为了千方百计完成项目,花费都已经无法控制等种 种现象,表明成本管理依然是软件行业项目管理的木桶短板。 软件开发成本管理之术及实践 项目成本管理,就是保证项目在预算内完成的管理。如果用简单的话来 说,成本管理是回答如下花钱问题的: 这个项目将花多少钱? 这个预算合理吗?依据是什么? 这些钱够花吗?是否预算考虑了项目风险的因素? 这些钱花在什么地方?如何花?何时花? 如何能保证花钱是在预算之内的? 这个项目实际花了多少钱? 如何评估花费? 这个项目花费的历史记录对项目成本管理有何贡献? 这些问题,从项目成本管理过程中,分为如下过程:资源计划编制、费用 估算、费用分配和费用控制阶段。当然这四个过程并不是瀑布式的,而是组成 了项目成本管理的闭环。 计划编制 在进入了资源计划编制阶段之前,一般应完成工作范围说明书和WBS,在 资源计划的过程中,我们要确定完成项目活动需要使用什么资源以及多少资 源,所以输出就是项目的资源需求计划,也就是人、物等资源的需求计划。过 程的输入除了上面所说的工作范围说明书和工作分解结构WBS 外,一般还会有 资源配置库说明、活动的工期估算,以及公司项目管理库中的机构政策和历史 信息。在此过程中,常用的技术就是专家判断方案选择方法,当然也可以用 MicroSoft 的 Project、IBM 的 RationalPortfolioManager 等项目管理软件来进行, 将范围和时间计划的甘特图等关联资源。 费用估算 费用估算环节,主要是估算要完成项目活动所需资源将耗用多少费用。在 这个环节要得出费用估算值、和费用计划等文档。这时我们的输入,除了上一 个过程的输出资源需求外,还需要 WBS,因为 WBS 是确定成本估算准确性的关 键,我们需要为 WBS 中列出的每项活动所需的资源做出成本估算。除WBS 以 外,还需要资源价格或者比较符合实际价格的成本估算出版物、历史信息,以 及考虑风险等情况。资源价格即是资源的单位成本,例如招聘的开发人员、测 试人员折算的每小时薪金,用上面得出的该资源需求工时数乘以单位成本,就 得出该资源成本估算了,累加这些成本。在此过程中,在确定成本估算时一定 要包括项目整个生命期的全部成本,例如项目正式结项前,例如验收前的全部 环节,包括上线测试期成本以及一年的质量担保期的运行成本等。因为,项目 中通常会承诺用户在质量担保期内修复Bug 或者解决问题,这些开支要包含在 估算中。而且,一定要估算出项目所需的所有资源,包括刚才说的员工工资、 外包合作单位的成本、材料费、设备及硬件、软件工具等成本或者成本分摊。 成本估算中,常用的技术包括类别估算,也就是通过一些历史信息或者类 似项目的相关信息,考虑项目异同和风险情况,用类别方式从上而下的估算方 法。常用于项目范围不甚明确的时候,这时估算也相对较粗。在CMM/CMMI4 企业中,有了量化管理的依据,我们可以根据真实的历史项目情况,进行类别 估算。 参数化建模方式将影响成本的因素,进行参数化,将一些代表生产率或者 单位成本等数量代入模型运算,就可以从该工作要素中得到整个项目的成本估 算。例如我们知道单位人工生产率这些参数,在软件行业是人日(时)代码行数 等,都是非常重要的进行估算的模型参数。如果影响终结果的因素,有多个参 数,我们还可以为每个参数分配权值。当然根据不同公司政策和项目情况,我 们需要累积这个模型。一般如果公司有PMO 组织或者严格的过程管理组织话, 这个方法也经常使用。 自下而上估算,与类比估算相反,先从WBS 的底层,单独估算项目中的每 项活动,。然后加起来算出总体成本。这是较准确的估算方法,但是也较为费 时,因为它必须要求对每个包进行估算。当然现在很多项目管理工具提供了这 种估算自动加和,这也是常用的估算方法。 费用分配 费用分配过程是把费用预算分配到每一项活动中,以便获得项目费用计划 基准。这个过程比较简单,就是利用费用估计值、WBS、项目进度计划和风险 管理计划等,制定出项目的费用计划基准,这里的费用计划基准是一个按照实 践阶段分配的预算计划,用来衡量和监控项目费用状况。可以在接下来的费用 控制过程详细解释。 费用控制 制定了项目的费用计划基准,我们需要根据项目状况报告、项目变更情况 及申请,费用管理计划等进行费用控制,以便控制费用预算的变更,做出修订 费用估算、更新项目预算以及采取纠正措施等对项目费用控制。费用控制的目 标是评估影响引起费用变更的因素,以便保证变更可以在项目各方干系人可以 接受;判定费用计划基准是否偏离,对出现的偏离进行管理和纠正。由于项目管 理的过程是变动的过程,我们会遇到很多实际情况而需要进行评审和变更,如 何在变动的项目管理中控制费用?所以项目成本管理中难的就是费用控制。如何 在变动中控制项目成本,如何解决这个难题?挣值管理就是常用的技术,用费用 偏差 CV,进度偏差 SV,费用指数 CPI 以及进度指数 SPI 等指标进行量化计算, 这里不再赘述。在项目管理或者过程管理高 level 的公司,经常用此技术进行成 本费用控制。 以上四个过程完成后,项目收尾阶段,对于项目成本进行分析和记录,以 便为本项目管理进行总结和后续项目估算参考使用。例如我们常进行成本偏差 以及 ROI 等各种财务指标分析,以下是使用 IBMRPM 的一些界面。