软件项目开发报价指南

 

公司一直以来都在接新开发的,定制化的解决方案开发项目,在和客户取得了互信以后,首先会遇到的问题就是:多少钱?报个价吧。往往,我们的销售经理就蔫吧了,具体研发需要多少钱?我得去问问项目经理,那项目经理又是如何预估研发费用呢?

 

公司近期有好几个人都在问我这个问题,以下为我的经验之谈。

 

首先,估计研发成本1

开发成本就是从零开始开发这么一套软件的研发费用。一般来讲,如果报价低于研发成本,那么公司就赔钱了,因为这个数目的钱大致会支付给研发工程师,公司又收不回这么多钱,公司就赔钱了。

 

一个解决方案,可以用其包含的功能的多少作为一个复杂度的度量,这里介绍功能预估成本法。

 

功能预估成本法也就是把所有的功能需求列出来,估计出所需要的研发时间,再根据人员费用计算出成本的方法。

 

举例来讲,如果一个方案,包含了100个具体的功能需求,每个需求的粒度大致需要1个工程师1天完成,那么就是100人日,我们按一个工程师1万每月的人员费用来计算,需要100/20*1=5万元,20就是每月20个工作日,即这个方案的开发,研发成本为5万元。

 

等等,这么成本这么低,会不会有问题?从开发阶段来看,又分成需求分析,系统设计,开发实现,测试,部署等多个环节。除了功能,我们还需要做性能,还需要做UI,这些东西都没有算进去呢!

 

是的,实际的工作量应该在上面的100人日的基础上直接乘以2.5,也就是(100*2.5/20)*1=12.5万。这里的2.5是一个系数,是一个外籍大牛在某书籍里写出来的,具体哪本书我都忘记了,不过这么多年我都是用这个系数,感觉还是比较准确的。

 

最后,重复一下公式:研发成本=工作量(人日)乘以2.5 乘以研发人员平均月薪除以20

 

 

其次,估计研发成本2

在上面的公式中,我们成本是否准确,最大影响是对工作量的估计,可是,实际上很多项目最不好估计的就是工作量,如果要将工作量能估计到人日,也是需要大量的分析工作的。因此我们这里介绍更加快捷的参考成本估计方法。

 

参考成本估计方法也就是参考团队过去开发所消耗的时间,来估计同类型的项目可能花掉的时间。

例如,平台科做的水务项目后台,人力成本消耗可以大致评估为4个人9个月,这个项目里有如下几大要素:表计,网关,多租户,接口,报表,也可以理解成有5大模块,那么每个模块的工作量约为:4*9/5 = 7.2人月

 

那么假设新的解决方案有4大模块,那么可以预估为7.2 * 4= 4 28.8人月,成本估计为7.2 * 4 * 1 = 28.8万。

 

最后,重复一下公式:研发成本=当前生产率(7.2)乘以模块数乘以研发人员平均费用

 

 

第三,估计研发成本3

我最常听到的一句话是,“客户的需求很简单”,哦,对了,如果有功能很难实现,那个是要加钱的哦!上面只是对于没有难点的常规开发的估计公式。对于像“需要支持千万设备在线”这样的需求,我们要保持敏感性,这个一般人是做不到的,好吧。

 

不要因为大家都在用微信了,就觉得微信很好做,对于国内大部分的研发团队,是没有能力独立做一个微信,或者淘宝的后台的。(当然随着技术的发展,可以借用其他公司的技术和服务来开发)

 

这里只表述一件事情:量变会引起质变,用户规模的扩大会导致架构的变化,架构的变化会导致研发工具,研发模式的变化,需要的人的素质也不是一个层次的了。

 

另外,上述的基于要素的估计方法忽视了要素之间的关联,N个要素之间有N*N/2个连接,在系统要素增多,或者在分布式场景下,这个连接带来的开发量就指数级地增长了。

 

总之,如果系统的体量上了量级,那么开放工作量也会上量级。经验地,我们可以将解决方案分成小型(50万用户/设备),中型(500万用户/设备),大型(5000万用户/设备),所需要的工作量分别在之前的工作量上乘以1,乘以44中有一个2是给工作量的,一个2是给人员成本的),乘以16

 

以上面的例子,假设解决方案有4大模块,那么可以预估为7.2 * 4= 4 28.8人月,成本估计为7.2 * 4 * 1 = 28.8万。如果要做成中型系统,那么成本估计为28.8*4=115.2万,如果要做成大型系统,那么成本估计为460.8万。

 

 

 

对工作量的估计需要落实到纸面上

一个物联网方案,大多都涉及到端,中间件,云好多层,一个要注意的事项就是要把需求落实到纸面上。

 

以一个例子作为解释,将用户的需求落到纸面上是多么重要:

 

例如近期的一个定位跟踪项目中和后台相关的只有一个需求:“可通过远程配置电源,使电源利用最大化”,单看这个需求,就会得出“特别简单”,容易有平台派一个兄弟弄一天,应该就能搞定了的想法。可是一天真搞不定的。我最终给出功能分解如下:评估为20人日完成。对应研发成本为1万元,这个评估中还没有包括App的开发,只是纯后台的开发。

 

把各个方面的需求落到纸面上,跟客户面对需求来谈价格,客户比较能能接收,价格也会比较公道。

 

 

项目的服务器端开发部分功能与评估如下:

远程功能设置(Remote feature set)

可通过远程配置电源,使电源利用最大化(Power supply via remote configuration, to maximize power utilization)

 

项目服务器端功能:

  • 建立一个BS服务器端,用户可以通过浏览器访问服务
  • 用户登录
  • 用户手动新建Tag信息记录
  • 用户查询Tag的状态
  • 用户下发对Tag电量的配置

 

手机APP接口,服务器端提供接口支持手机App的如下功能:

  • 手机可以通过App登录,
  • 查询Tag列表
  • 为每个Tag配置电源使用参数

 

网关接口

  • 网关登录
  • 网关更新Tag状态信息

  

 

 

最后,研发报价中的一些法则

边际成本为零的法则

这个原则是说,如果开发出来的软件可以重复卖给无穷多的人,那么边际开发成本为零,所以,我们考虑软件成本的时候,还可以考虑下,这套东西能否再卖给另外一家;或者我们在和客户谈研发成本的时候,发现这套东西还适用于其他客户,那么报价可以便宜一点,适用的客户越多,就可以越便宜。当然,我们要跟客户讲好,这个价格,并不包含软件产品的所有权,甚至不会给出源码。

 

如果用户需要的方案可以在以前的方案的基础上改,那么也是可以降低方案的价格的,但是,具体情况就得具体分析了。

 

 

最优报价不是最低报价

这个法则是说,软件产品报价最低的那位,往往是软件产品质量最差的那位,因此性价比并不高,现在国内使用正版软件的思想已经被越来越多地被接收,好的软件能提高生产率,能更快地赚钱,或者更多地节约成本,因此在软件市场里,最优报价并不是最低报价。

 

那最优报价是多少呢?个人认为是在成本价格的150%200%区间内,这个价格是客户可以将这个方案外包出去的价格,一般的外包承包商也是也是在这个区间报价的。也就是说,如果我们的报价高于这个价格,客户会想,我外包给一个外包公司更划算。这个区间进行报价,能够使得我们赚取尽可能多的研发利润。

 

 

时间缩短一半,成本增加一倍的原则

这个法则是说,在我们设定的时间点的基础上,如果要求提前交付,这个也是额外的成本,我们可能不得不逼迫员工加班,或者临时招聘,或者部分工作外包,因此意味着成本的增加。

 

从客户的角度来讲,产品研发也存在时间成本,如果他自己开发需要6个月的时间,50万,而目前我们直接能提供同样的产品,价格也是50万,那么客户更倾向于购买我们的产品,因为多出来的这6个月的时间,可以为他在市场上占有先机

 

 

市场价值影响

某些产品的研发成本可能很低,但是市场价值可能很高,非常典型的如hao123,最终卖了1千万人名币。所以软件产品的报价,还需要参考市场价值。

 

市场价值在于产品创意带来的价值,产品外围给客户带来的价值,同类产品的参考价值等。通常市场价值高的产品,我们在报价的时候应该适当上调。

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/lihongzhai/article/details/52430585