软件开发报价的计算方法
软件开发价格与工作量、商务成本、国家税收和企业利润等项有关。为了便于计算,给出一个计算公式:
软件开发价格 = 开发工作量 × 开发费用/人·月
软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:
软件开发工作量 = 估算工作量经验值 × 风险系数 × 复用系数
软什开发工作量的计算,曾有人提出以源代码行或功能点来计算,这些方法实施起来均有不少难度。目前国际上仍旧按以往经验的方式加以计算,国内各软件企业也是采用经验的方式加以估算工作量。
为了更好地规范估算方法,建议可按照国家标准“GB/T 8566-2001软件生存周期过程”所规定的软件开发过程的各项活动来计算工作量。
工作量的计算是按一个开发工作人员在一个月内(日历中的月,即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人·月”。
特别要提醒的是软件开发过程中既包括了通常所讲的软件开发,也应包括各类软件测试的活动。
估算工作量经验值亦会存在较大风险,造成软件危机的因素很多,这也是一个方面的因素。特别当软件企业对该信息工程项目的业务领域不熟悉或不太熟悉,而且用户又无法或不能完整明白地表达他们的真实的需求,从而造成软件企业需要不断地完善需求获取,修改设计等各项工作。因此:
l ≤ 风险系数 ≤ 1.5
根据我们对软件企业的了解,超过估算工作量经验值的一半,已是不可接受,所以我们确定“1.5”为极限值。当然这既要看企业的能力,也要看用户能接受的程度。
估算工作量经验值是软件企业承担一般项目来估算的,但如果软件企业已经采用“基于构件的开发方法” ,并己建立起能够复用的构件库(核心资产库),或者已有一些软件产品,仅作二次开发,从而使软件开发工作量减少。因此:
0.25 ≤ 复用系数 ≤ 1
根据国内外软件企业在实施基于构件开发方法(软件产品线)的经验数据,提高工作效率达到25%(最高值)。
1.2开发费用/人·月
开发费用/人·月 =(P+Q+R)× S× τ
1.2.1 P(人头费)
P = B × 1.476
国家规定的公积金 7%,医疗保险金12%,养老金22%,失业金 2%(即通常所说的四金),另外还有按工资总额计征的工伤保证金0.5%,生育保证金0.5%,残疾基金1.6%,工会基金2%,累计为47.6%。
B为平均工资,即企业支付给员工的工资、奖金、物质奖励等多项总和,除以企业员工数,分摊到每个月。
1.2.2 Q(办公费)
Q = B/3
此处办公费用按商务成本的25%计算。
1.2.3 R(国家税收和企业利润)
另外,软件企业的员工不可能全年满负荷地工作,即使一年十二个月都安排工作,但也需抽出时间进行在职培训和提职的岗前培训。据我们的了解,软件企业的员工一年能有10个月到 11个月的工作也是正常的。
R = B/3
此处为我们的建议方案,各软件企业可视情况加以变更。
1.2.4 S(管理系数)
1 ≤ S ≤ 1.2
1.2.5 T(优质系数)
软件企业与其他企业一样,也有诚信和品牌等诸多因素,从而增加企业的开支。
目前我们可以按通过 ISO9000质量体系认证和CMM或CMMI的认证来确定,分别取值1.05、1.1、1.15、1.2。
今后建议可对软件企业的资质分为四级。由软件行业协会根据CMMI的认证、品牌、诚信程度等各种因素加以确定。此体系建设还有待进一步探索。
据此,我们综合上述各点:
开发费用/人·月 =(B × 1.476 + B/3 + B/3)× l.2 × T
= B ×(1.476 + 2/3)× 1.2 × T
= B × 2 .575 × T
= B × λ
当T=1.05时,λ=2.7
当T=1.2时,λ=3.09
因此,2.7 ≤ λ ≤ 3.09
对于承接国外软件外包业务,一方面员工的工资较高,另外工作的安排也较难满负荷工作,用此建议R=B/2。因此
开发费用/人·月 = B(1.476 + 1/3 + 1/2)× 1.2 × T
= B × 2.767 × T
= B × λ
当T=1.05时,λ=2.906
当T=1.2时,λ=3.32
因此,2.9 ≤ λ ≤ 3.32
结论:
软件开发价格 = A × σ × τ × B × λ
A:估算工作量经验值
B:软件企业的平均工资/人·月
Q:风险系数l ≤ Q ≤ 1.5
T:复用系数0.25 ≤ τ ≤ 1
λ:综合系数2.7 ≤ λ ≤ 3.09
2. 软件(系统)维护收费价格估算方法
在正式运行一年后,软件企业应与用户签定软件(系统)维护合同。该合同属技术转让合同,也可属技术开发合同。
根据不同的用户要求,可分四种级别进行软件(系统)维护。
2.1 A级
2.1.1 U(系统建设投资额)
2.1.2 N(技术人员数)
软件(系统)维护费/年 = U × 15% 或 B × λ × N × 12
B、λ参见1.
2.2 B级
软件(系统)维护费/年 = U × 10%
2.3 C级
软件(系统)维护费/年=U × 5%
2.4 D级
2.4.1 B’
这种维护方式要求软件企业需要保存所有的技术档案,更需要软件企业抽出专人来不断熟悉和全面掌握该软件(系统)的各项技术细节。因此,软件企业的这项支出必然要在维护费用收入中得到回报。
以1.1.3节中的B 作为参数,将其人·月单位改为人·天,以B’表示。
2.4.2 τ’
以1.1.3节中的τ 作为参数,以τ’来表示。因此:
软件(系统)维护费/次=B’ × τ’× n
此次n表示所需要的人·天数。τ’的取值是0.2 ≤ τ’≤ 1。
3. 系统集成价格的估算方法
系统集成费应与整个系统的规模、整个系统的复杂程度等项有关。
系统规模往往与系统建设费用密切相关。为了简便计算,以系统建设费用(以U来表示)为参考坐标。复杂程度(以α来表示)可分四种级别来区分。
系统集成费 = U × α × T
T参见1.2.5节
3.1 A级
5% ≤ α ≤ 8%
3.2 B级
7% ≤ α ≤ 10%
3.3 C级
8% ≤ α ≤ 12%
3.4 D级
10% ≤ α ≤ 15%
4. 系统解决方案费用估算方法
目前国内市场对于系统解决方案是一种智力劳动成果的认识不足,以及国内多数招标公司并不熟悉信息技术,从而更加使得系统解决方案收费变得困难。因此,目前的收费处于过渡阶段。
系统解决方案费用与整个系统的规模、复杂程度等项有关。
系统规模往往与系统建设费用密切相关,为了简便计算,以系统建设的总投资(以U来表示)为参考坐标。
复杂程度就是用户的功能、性能要求复杂性、信息接口的类型和数量有关,以β来表示。
解决方案费用=U × β × T
T参见 1.2.5节
关于β我们参照第3节所列各级。
A级: 0.7% ≤ β ≤ 1.2%
B级: 1% ≤ β ≤ 1.8%
C级: 1.5% ≤ β ≤ 2.2%
D级: 2% ≤ β ≤ 3%