千里之行,始于规划。好的项目规划是软件项目成功的先决条件。而预算是项目规划的重要环节。因此,合理的预算是软件项目成功的必要条件,预算过低不足以保障项目成功,有可能因为资源匮乏导致项目早产或夭折。而预算过高又有可能导致审批不能通过,致使项目搁浅,亦或造成资源浪费。那么如何才能作出合理的项目预算呢?
一、合理的预算建立在对项目全局特别是项目需求的准确把握的基础之上
软件项目规划的重点是对人员角色、任务进度、经费、设备资源、工作成果等等做出合适的安排,制定出计划,使大家按照计划行事,最终顺利地达到预定目标。
要做预算先要对软件项目的规模有一个预估。软件需求和估算是软件项目的基础。因为只有准确的了解客户的需求,以此为基础,使用科学的方法对目标软件系统的规模、工作量和进度做出合理的估算,我们才能在预算内按时按质顺利的完成项目。
首先要确定软件范围,就是确定目标软件的数据和控制、功能、性能、约束、接口以及可靠性。这项工作和需求分析是很类似的,如果之前已经达成需求分析规约,那么可以直接从《需求分析说明书》中把有用的部分拿来使用。如果还没有开始需求分析,关于确定软件范围的方法方面,我们可以采用许多需求分析技术(如需求诱导),从客户那里得到一个具体的软件范围。当然如果是一次全新的软件边界探索,就应当考虑软件本身可行性问题,包括团队是否具备在技术、财务、时间、资源上游可靠的保障,软件本身在市场上是否有可靠的竞争优势等等。
接下来需要确定工作资源。软件工作所需资源包括:工作环境(软硬件环境、办公室环境)、可复用软件资源(构件、中间件)、人力资源(包括不同各种角色的人员:分析师、设计师、测试师、程序员、项目经理……)。这三种资源的组成比例,可以看作一个金字塔的模式,最上面是人力资源、其次是可复用软件资源、最下面是工作环境。最上面的是组成比例最小的,最下面的是组成比例最大的部分。
■ 人力资源
一个项目到底需要多少种职务的人员构成、多少数量的人员总量,才能成为最有创造力的团队呢?这恐怕是最让项目经理头疼的事情了。任何一个软件工程,都必须在确定软件的工作量之后,才能清楚地知道究竟需要多少人力才能以最小成本和最高效率完成任务。
■ 可复用软件资源
这是一个容易在计划阶段被忽视的重要资源,很多人总是进入编码阶段才发现可复用资源的价值和存在。经过长期的项目积累或是购买,公司的软件资源库中或许已经积累了大量的可复用资源,但在当前任务中,只能选择有价值的资源。根据不同的应用、时间、来源,可复用软件资源被分为以下几种:
可直接使用的构件:已有的,能够从第三方厂商获得或已经在以前的项目中开发过的软件。这些构件已经经过验证及确认且可以直接用在当前的项目中。
具有完全经验的构件:已有的为以前类似于当前要开发的项目建立的规约、设计、代码、或测试数据。当前软件项目组的成员在这些构件所代表的应用领域中具有丰富的经验。因此,对于这类构件进行所需的修改其风险相对较小。
具有部分经验的构件:已有的为以前与当前要开发的项目相关的项目建立的规约、设计、代码、或测试数据,但需做实质上的修改。当前软件项目组的成员在这些构件所代表的应用领域中仅有有限的经验,因此,对于这类构件进行所需的修改会有相当程度的风险。
新构件:软件项目组为满足当前项目的特定需要而必须专门开发的软件构件。
在采用构件的时候,应当以低成本、低风险为使用前提。如果任何一个漂亮的构件的应用,可能会带来潜在出错的风险或者必须经过复杂修改或者效率低下时,我们都应当毫不犹豫地把它抛弃。我们只采用那些能够满足项目的需要且可直接使用的构件,或者具有完全经验的构件,或者经过稍微修改便可使用的构件。
■ 环境资源
“工欲善其事,必先利其器”,要得到高效的开发过程,就必须向工作人员提供良好的软硬件环境,包括开发工具、开发设备、工作环境、管理制度。一般管理人员都会购买可以满足需要的软件开发工具和硬件平台,但是工作环境和管理制度往往被忽视。
向工作人员提供更轻松自在、安静舒适的办公环境的公司员工往往比整天在狭小隔间中工作的公司员工,产生更高的工作效率。而那些拥有灵活人性化的管理制度的公司,比整天加班的公司更能留住高技术的人才。所以如何在有限资金中,规划一个合理的环境是很重要的事情。
到此为止,项目规模预估工作已经完成,已形成一个工程开发框架。这是一个有界限的框架,虽然还不够精确,但足以进行相对合理的预算。
二、合理的预算基于科学的预算方法与工具
由于软件项目的复杂性、多变性,要做出合理的预算不可能依赖历史或者个人经验。要作出合理的预算,首先要保证估算的相对准确性。一般来说,依靠历史或个人经验的规模估算方法都有一定的局限性。原因是很难在项目分析和计划阶段就对软件的规模进行相对准确的估算。因为估算是依靠评估人员的经验,所以对评估人员的能力要求比较强,并且难以由第三方对评估人员的工作偏差作出修正。另外,不同软件项目使用的技术不一样,这一点也非常影响到软件规模的估算。例如同一个功能,使用JAVA语言和使用Ruby语言所涉及的代码行相差数十行,甚至数百行。即使同为JAVA语言,使用不用的框架所需要编写的代码行也不一样。
估算是建立在客观事实上对未来可能发生的事情的一种合理性预测。估算本身的不确定性,决定了它不可能是百分之百准确无误的,但是依据某种方法进行合理估计显然比瞎猜好得多。软件估算方法有很多,大致分为基于技术分解模型和基于经验模型两大类。目前基于技术分解模型的方法有:功能点估算法、LOC估算法、MARKII等;基于经验模型的方法有:IBM模型、普特南模型、COCOMO模型等。目前基于技术分解的常用方法是FP功能点估算法和LOC代码行估算法。还有许多其它的估算方法。不同的方法适用于不同的具体环境,有些方法虽然很好但并不一定适合当前的任务。因此,建议至少使用两种方法进行规模估算,不要依赖于任何一种方法。只有量体裁衣,具体问题具体分析,才能得到尽量合理的规模估算。
三、合理的预算基于预算的弹性与韧性
合理的项目预算应该与目标计划相关联,并且需要同时兼顾质量目标与进度目标。而由于需求变更的反复出现与项目不可控因素的切实存在,我们在做项目预算时必须要保证预算的切实可行还要留有一定的弹性空间。另外项目预算其本质上也是一种约束控制机制。项目管理人员或者高层管理人员可以在不同范围内充分利用这一调节工具来控制项目质量与项目进度。
四、合理的预算依赖良好的成本控制与过程跟踪
项目预算强调选取实现目标的最佳途径,也就是要对各种可能的方案进行费效分析。因为规划中的失误是不能通过其后的计划和预算来弥补的。所谓费效分析,是对不同方案实现目标的效果和所需的费用进综合的对比分析,然后根据一定的标准来选取最佳方案。选择的标准可能是:以最少的费用实现一个既定目标,或以现有的资源实现最大的效果。因而,项目规划阶段的成本控制很重要,几乎起到决定性的作用。
预算的合理与否更依赖于项目实施过程中的成本控制与过程跟踪。无论项目前期作了如何完美准确的预算,项目实施过程中如果缺乏有效地监控,所有的付出将都毁于一旦。项目实施过程中需要监控的对象有范围、成本、进度、资源、质量和风险,在此不作赘述。
综上可以看出,想做出合理的预算并不是很容易的事。必须对行业有深刻理解对技术要有准确的把握,同时还要有足够的项目管控能力才能够做出尽可能准确的项目预算,从而保障项目的高效成功。
工程建设网首页 | 关于我们 | 联系我们 | 管理案例 | 会议活动 | 施工企业管理杂志 | 我要投稿
版权所有:北京华信捷投资咨询有限责任公司《施工企业管理》杂志社
地址:北京市丰台区南四环西路186号汉威国际广场二区9号楼5M层西区邮编:100070电话:010-68520349传真:010-68570772E-mail:sgqygl@chinacem.com.cn
京公网安备 11010202007072号 京ICP备09092133号-1 Copyright ©2000-2015 工程建设网 保留所有权利