1. 程式人生 > >軟體專案開發報價指南

軟體專案開發報價指南

公司一直以來都在接新開發的,定製化的解決方案開發專案,在和客戶取得了互信以後,首先會遇到的問題就是:多少錢?報個價吧。往往,我們的銷售經理就蔫吧了,具體研發需要多少錢?我得去問問專案經理,那專案經理又是如何預估研發費用呢?

公司近期有好幾個人都在問我這個問題,以下為我的經驗之談。

首先,估計研發成本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千萬人名幣。所以軟體產品的報價,還需要參考市場價值。

市場價值在於產品創意帶來的價值,產品外圍給客戶帶來的價值,同類產品的參考價值等。通常市場價值高的產品,我們在報價的時候應該適當上調。