大多客户在寻找软件开发服务商时, 都会对价格比较关注, 特别是市场上竞争, 虽然得有便宜的报价, 但并无法实施, 那么, 我们应当如何能计算出一个软件开发合理的费用呢?有没有一个通行的计算方式?
答案是有的, 按照软件工程实施的理论, 我们通常按照功能点估算法来进行项目的报价. 具体公式如下:
定制软件开发服务费用=功能点数×软件开发生产率基准/人月折算系数×软件开发基准人月费率+直接非人力成本
其中:
单位为个,计算公式如下:
功能点数=未调整功能点数量(UFP)×软件类别调整因子×复用系数。
未调整功能点数量(UFP)可采用预估功能点计数和估算功能点计数两种方式进行计算。
——采用预估功能点计数方法,未调整功能点数量计算公式如下:
UFP=35×ILF+15×EIF
ILF:内部逻辑文件的数量;
EIF:外部接口文件的数量。
——采用估算功能点计数方法,未调整功能点数量计算公式如下:
FP=10×ILF+7×EIF+4×EI+5×EO+4×EQ
其中:
ILF:内部逻辑文件的数量;
EIF:外部接口文件的数量;
EI:外部输入的数量;
EO:外部输出的数量;
EQ:外部查询的数量。
功能点的识别与计算比较复杂,具体请参考网上的其它文档,(可以参考这个知乎回答https://zhuanlan.zhihu.com/p/96629679,写的很详细)在此简单列一个例子:
功能点估算法将功能点分为以下5类:
1. ILF:Internal Logical File内部逻辑文件
2. EIF: External Interface File外部接口文件
3. EI: External Input外部输入
4. EO: External Output外部输出
5. EQ: External Inquiry外部查询
其中,ILF和EIF属于数据类型的功能点,EI、EO、EQ属于人机交互事务类型的功能点。
以外贸订单系统项目为例:
录入订单、修改订单、删除订单是EI;
查询订单是EO
统计订单是EQ
汇率查询转换系统为EIF
订单和客户是ILF
公式中的35、15、10、7等数字代表了每个项目对应的功能点数量,数值是NESMA评估方法的默认数值,也可以根据实际情况进行评估。具体评估方法也很复杂,具体也可以参考上面提到的知乎回答
软件类别调整因子和复用系数取值参考下表:
序号 |
软件类别 |
范围 |
调整因子 |
复用度调整系数 |
1 |
业务处理 |
各类业务应用系统、政务服务系统、协同办公系统等。 |
1.0 |
高复用度:1/3 中复用度:2/3 低复用度:1 |
2 |
应用集成和科学计算 |
应用集成、公共支撑平台、企业服务总线、地理信息系统等;科学计算、模拟、统计等。 |
1.2 |
|
3 |
大数据、多媒体 |
图形、影像、声音等多媒体应用领域;大数据分析系统。 |
1.3 |
|
4 |
人工智能 |
自然语言处理、深度学习等。 |
1.5 |
备注:
软件类别调整因子,根据定制开发软件类型因素进行取值。对于定制软件开发内容包含多种软件类型的情况(例如系统中包含了业务处理和部分人工智能),原则上按照主体功能的类型取值,如多种类型功能占比比较均衡,可取各类型调整因子平均值。凡取值超过1的,需列明具体取值依据。
复用度调整系数,对功能复用情况进行分析,识别出可复用的功能及可复用的程度,并根据复用程度对规模进行量化调整。在预算阶段,新建项目的复用度调整系数默认取值为1(复用度低),根据实际情况进行调整;在已有软件系统或功能模块基础上进行优化完善或调整改造的,复用度调整系数默认取值为2/3(复用度中),根据实际情况进行调整。
说白了,根据软件的复杂程度、复用程度,要给功能点乘上系数。
单位为人时/功能点,每个功能点花费多少工时,根据2018年中国软件行业基准数据分析报告(CSBMK-201809版本)数据,电子政务领域软件开发生产率基准数据取中位值P50(6.65人时/功能点),根据实际情况可上下浮动20%。
单位为人时每月,就是每人每月工作多少小时,取值为174(174=21.75×8)。(请问955的工作哪里找?)
单位为元每人月。根据人社部门发布的本地软件和信息技术服务业工资水平,结合国内软件行业基准数据核算,软件开发基准人月费率取值24000元/人月(包含软件开发的直接人力成本、间接成本及合理利润,不包含直接非人力成本)。
是指服务提供方必须为服务项目支出的非人力费用,包括办公费、差旅费、培训费、采购费和设备折旧费等。其中办公费包括办公用品、印刷、会议等;差旅费包括交通、住宿等;培训费包括为满足服务项目特殊培训需求产生的费用;采购费包括为服务项目特殊需求所采购的资产或服务费用,包括专用设备费、专用软件费、技术协作费和专利费等。直接非人力成本一般情况不进行计列,特殊情况需要计列时应明确说明原因及测算依据。
以估算功能点计数方法为例,FP=10×ILF+7×EIF+4×EI+5×EO+4×EQ
假设ILF等都是10,FP=300
价格=功能点数×软件开发生产率基准/人月折算系数×软件开发基准人月费率+直接非人力成本
=300*6.65(每功能点6.65工时)/174(每月工作174小时)*24000(月薪)+(办公费、差旅费、培训费等)
=275,172.41+直接非人力成本