【IT168 专稿】
软件开发是典型的劳动密集型产业,要在有限的时间内保质保量的完成整个开发已属不易,还要确保合理的成本利润,其难度是可想而知的。因此,降低软件开发成本,是软件开发管理永恒的话题。也是在目前世界性经济危机之下,最受软件开发团队关注和最热的话题之一。但是说到要如何降低开发的成本,却是一个复杂的问题。
一个软件开发项目其成本要素可分为直接开发费用和间接费用。虽然不少软件开发团队都制定了成本控制目标,但项目成本依然没有达到预期的效果。究其原因是成本管理的"黑洞"主要存在于间接成本中,而大家往往又对外延间接成本缺乏足够的重视和认识,使得成本控制始终不尽人意。
软件开发存在的成本管理误区
(1)成本管理认识上的误区
成本管理是指通过控制和管理开发过程的费用来实现目标成本。长期以来,在软件开发中一提到成本管理就想到这是成本核算人员的事情,简单地将开发成本管理的责任归于成本核算主管或财务人员。其结果是开发人员只负责开发技术,测试人员只负责测试质量和测试进度,而管理人员只负责管理工作。这样表面上看起来分工明确、职责清晰,各司其职,但其实唯独没有了成本责任。例如,开发人员可能采用了可行但不经济的技术方案使成本增大,或为了赶工期而盲目增加人员和加班导致增加人工费用,或测试人员不了解功能和质量需求,导致增加了过多的测试费用。由此可见,成本核算人员只是成本管理的组织者,而不是成本管理的主体,不走出这个认识上的误区,就不可能搞好软件开发的成本管理。
(2)计划性较差,属于事后成本管理控制
有一些软件开发项目的成本管理仅限于定期的财务报表,是一种事后检查的手段,缺乏事前预测和动态过程控制。例如,没有在开发过程中将实际成本与计划成本进行比较,计算成本差异,并针对存在的问题采取有效措施。不能做到开发成本的日清月结,在开发过程中不清楚盈亏,无法实现实时动态的成本控制,甚至脱离了成本计划,更谈不上资金计划的准确性。
(3)没有形成责权利相结合的成本管理体制
任何开发活动都应建立责权利相结合的管理体制才能取得成效,成本管理也不例外。项目经理在成本管理及效益方面是要负主要责任,但其他人员也要有相应的责任及利益相配套的管理体制来约束和激励。而现在许多软件开发团队,并没有很好地将责、权、利三者结合起来,只是简单地将成本管理的责任归于成本核算主管,没有形成完善的成本管理体系。例如,因为没有制定成本考核制度结果自然是无法考核其优劣,出现了成本高和成本低一个样,干好干坏一个样的奖罚不分明的局面。不仅严重挫伤有关人员成本节约的积极性,而且给成本管理带来不可估量的损失。
什么是软件开发外延间接成本
(1)影响软件开发成本的二大要素
在开发过程中,众所周知应对影响项目成本的各种因素加强管理,并采取有效措施将实际成本严格控制在预算范围之内。因此,我们有必要先研究什么是影响软件开发成本的主要因素。
简单可以划分为两个主要因素:第一个是直接成本因素,它包括四大内容:①是开发和测试人员的直接人工成本,包括技术人员的选择、安排、培训和组织成本;②是开发和测试工具等软硬件设备成本;③是开发过程必需的办公成本,例如出差费用、办公场所、办公用品等;④是开发活动的管理费用,包括各层次的沟通、会议等管理成本。第二个是外延间接成本因素,主要包括两个方面:①是质量控制成本;②是工期损失成本。而实践证明,成本管理失控的"黑洞"往往主要存在于外延间接成本中。
(2)什么是外延间接成本?
伴随着开发进度的进行,涉及的产品质量、工期进度等必然会产生一系列成本,这些置于开发直接成本之外的成本,一般称为外延间接成本。管理好这些外延的成本,对开发效益起到至关重要的作用。
①质量控制成本:是指在开发期间除了发生直接开发成本外,在质量上还会产生一系列的外延成本。它们包括质量预防成本、质量测试和鉴定成本、内部与外部质量保障成本和内部质量故障成本。可以说,是否有效管理质量外延成本对增加经济效益是非常重要的,质量成本管理的目标是使这四类质量成本的综合达到最低值。因此,对软件开发成本效益而言,质量并非越高越好,超过合理水平时,属于质量过剩。无论是质量不足或过剩,都会造成质量成本的增加,开发团队都必须要通过质量成本管理与控制加以调整。
②工期损失成本:在软件开发中,如何处理工期与成本的关系是成本管理的一个重要课题。它主要表现在:一是项目经理为了使工期提前而采取的费用,包括为缩短工期而必须增加的额外费用。例如,为缩短工期的加班费、奖金等人工费用等。二是发生软件开发延期而增加的费用。因为延期会导致人员工资、补助,和相应的水电费、办公费等其他费用增加,更严重的还会因为延期造成应收流动资金运转积滞。三是如果工期拖延从而导致客户索赔成本。出现这种情况,不光是经济上受到直接损失,而且在信誉上也要受损失,而这种无形资产的损失往往比经济上的损失更严重。以上这些引起的工期费用,可统称其为工期损失。
避免外延成本泛滥成灾的思路与对策
成本管理是纵向贯穿软件开发、测试活动的全过程,横向涉及项目经理、技术、财务等职能部门。笔者结合软件开发成本管理的经验,在这里提出避免外延间接成本管理漏洞的思路与对策。
(1)建立项目成本责任制
项目经理的成本责任,不同于工作责任。有时工作责任已经完成,甚至还完成得相当出色,但成本责任却没有完成。因此,实行项目成本负责制,就是要求项目经理对项目进度、质量、成本等全面负责。
在软件开发过程中以项目经理为责任人,按照不同的成本要求将目标成本进行细分,纵向分解到各技术人员(开发和测试人员),横向分解到各职能部门,形成全员、全方位、全过程的项目成本管理格局,并把个人利益与成本指标密切挂钩,项目经理依据细化和分解的成本责任,与各责任人签订合同,明确成本考核指标,努力降低外延间接成本,如工期损失和质量控制成本,做到奖罚分明。
(2)成本管理由事后审计改为动态控制
在传统成本管理模式中,成本管理部门虽然在项目初期会给开发团队制订一个简单的项目预算成本目标,但是由于不能有效地根据项目实际情况对项目预算进行动态调整,从而不能使预算成本符合开发环境的变化。由于没有及时的成本信息支持,就不能及时了解项目实际成本,就难以和预算成本进行对比分析,当然也就不能对实际目成本进行有效的管控。
因此,在传统管理模式下,成本管理是在项目结束后对实际发生的成本进行审计。但既不可能改变项目盈亏的事实,又不能分析项目盈亏是成本控制不严还是由于环境变化所导致的。因此,传统模式下的成本管理并不能真正有效的控制项目成本,只是项目结束后审查项目盈亏状况而已。因此,需要改为按开发进展分解成本指标,对成本进行动态控制和管理。
(3)从质量管理上要成本效益
质量成本管理可分为四种类型,分别是质量预防成本、质量测试和鉴定成本、内部与外部质量保障成本和内部质量故障成本。一般来说,质量预防费用往往较低,虽然随着质量要求的提高逐渐会增加,但该项成本往往能发挥最大效益。而质量测试和鉴定成本一般是随着软件开发内容和范围的增加而有一定程度的增长,但这项是必要的测试成本支出。
但质量损失成本则不然,主要是因为软件开发质量较差造成大量的BUG需要修正,这类成本损失的花费往往是最大的,也是最值得我们关注的一项外延间接成本损失。因此,要想从质量管理上获得成本效益,必须做到四者交叉结合,找出一个质量损失成本最低的理想点。
(4)控制工期损失,获得最大成本效益
如何处理工期与成本的关系,核心在于寻找出两者结合的平衡点。即工期成本的管理与控制对软件开发和项目经理来说,并不是越短越好,更不能随时延期。而是需要通过对工期的合理调整来寻求非常好的工期成本点,把工期损失成本控制在最低点,工期损失成本最低点往往就是成本效益的最大产生点。
总之,一个软件开发项目的成功与否,最终是要反映到成本管理的效益上。只按功能需求和按质量完成的软件开发,如果缺乏成本效益,并不能算是成功的开发项目管理。