軟件開發成本有哪些?
所謂售前成本,就是在合同簽訂前,乙方為這個項目做商務、做演示、做售前調研等付出的成本(人工費、辦公費、差旅費等)。倒霉的是,并不是每個售前項目都可以簽單,更倒霉的是,一般情況下丟單的比簽單的多,這些丟單的售前項目,成本往哪里去呢,自然需要由簽下的項目彌補。
直接人工成本。
每個開發團隊包括很多崗位,如項目實施經理、需求分析師、系統架構師、程序員、測試工程師、美工、客服等,這些崗位的人,都是需要吃飯的,都需要發工資、交五險一金。一個項目要做好,離不開這些崗位通力合作。即使只看直接人工成本,也遠遠不止程序員的工資社保。
開發工具及設備成本。
團隊在開發過程中需要各種開發工具,有些工具是開源免費的,但也有很多工具是要收費的。當然,一般來說,每個團隊都有很多開發項目,這個成本分攤到每個項目并不高,幾乎可以忽略不計。但是,有的時候,有些特殊的設備是為這個項目專門采購的,那么這個成本就不能忽視了。
間接人工成本。
軟件開發成本屬于什么科目
開發軟件費用為什么這么貴
軟件開發費用非常高,要想降低軟件開發成本,首先要知道軟件開發成本是怎樣產生的。
軟件開發成本 = 軟件工程師人力成本 + 項目管理人力成本 + 返工成本 + 其它成本。其中,軟件工程師人力成本,包括與需求獲取、架構設計、編碼和測試、交付、輔助文檔等活動相關的人力成本。
項目管理人力成本,包括與項目計劃和跟蹤、解決問題和管理風險等活動相關的人力成本。返工成本,包括與需求變更和bug修復等活動相關的人力成本。其它成本,包括設備采購、工具費用、差旅等額外成本。
占比較大的軟件開發成本
這些成本中,哪個占大頭?有人說當然是軟件工程師和項目經理的人力成本占大頭。有這種想法的人是想當然了。權威數據顯示,返工成本占整體軟件開發成本的40%-80%!【1,2】就是說,軟件開發費用的大部分都花在了修復缺陷和需求變更上。覺得掙錢少的老板們是不是可以算一下自己公司的返工成本?
知道了“要降低研發成本,必須首先降低返工成本”的道理以后,那如何降低返工成本呢?本文給出4點建議。
如何降低返工成本?
1、提高人員能力
開發軟件,不管是設計還是編碼,爭取第一遍就要做對。這就需要軟件工程師和項目經理有很強的專業能力。提升能力的方法無外乎培訓和招聘有能力的人。其中,加強培訓是很多公司常用的做法。
2、選對開發方法
過程決定結果。方法錯了,再有經驗的人,結果也不會好。例如,軟件開發方法從70年代的瀑布,一步步從迭代、快速原型等進化到現在的敏捷、規?;艚?、DevOps等。統計數字顯示,使用敏捷方法,平均上市時間加快了37%,團隊效率平均提高了16%【3】。這只是其中一個例子。
需求、設計、編碼、測試、交付等各個開發環節中,都有很多好的方法。那么怎樣確保選對好的開發方法?答案是要么自學成為軟件過程專家,要么聘請有經驗的軟件過程專家來幫助自己。
3、使用輔助工具
俗話說,“好記性不如爛筆頭”、“再破的自行車也比走路快”。使用工具使我們事半功倍,軟件開發也是如此。常見的軟件編程工具例如Eclip、IntelliJ IDEA、VSCode、SVN、Git等自不必說,是必須用的。項目管理工具、測試管理工具、持續集成和持續構建工具、自動化測試工具等也是很多企業常用的輔助工具。有些工具使用成本極低,但是收益極高,達到了四兩撥千斤的效果,是開發團隊的首選。
CoCode軟件眾包平臺的評審分析工具
例如CoCode軟件眾包平臺的評審分析工具【4】,能自動預測代碼里的缺陷數,讓項目在第一時間消除大多數缺陷,從而降低返工成本。數據顯示,這一個工具的使用,就能使整個開發成本降低20%【5】。那么怎樣獲得好的輔助工具?首先應該了解公司的具體情況,包括已有的工具情況,同時參考軟件過程專家的建議,選擇最適合公司情況的輔助工具,然后采用自研、開源、購買等方式獲得。
4、持續改進
羅馬不是一天建成的。降低開發成本也不是通過一次培訓、一個方法、一個工具而達成,而是需要不斷地改進,直至達到期望的結果。持續改進的動力來自目標。所以期望降低開發成本的老板們應該首先設一個改進目標,例如降低20%的開發成本,然后鍥而不舍地改進,直至目標達成。等一個目標達成后,再設定更高的目標。這樣在目標驅動下,開發能力不斷螺旋上升,軟件開發成本才能真正降下來,軟件企業才能達到期望的盈利水平。
道 法 術 器 人
最后記住“道、法、術、器、人”這五個字,您將在“降低成本、提升能力”的戰斗中,無往而不勝!
道:過程決定結果。結果無法直接改變,但我們可以通過改變過程來影響結果。
法:選對方法很重要。做軟件開發可以參考CMMI、敏捷、DevOps等經過業界驗證的好方法。
術:只有好的方法是不夠的,還需要落地的手段。這時候需要的是經驗。
器:好的工具讓落地實施事半功倍。
人:找到做事的人,尤其是找到有能力的人,才能心想事成!
參考資料:
1.IBM White Paper. (2009). Reducing rework througheffective requirements management.
2. MarkusSprunck, SoftwareEngineering Candies - Selected Rules of Thumb in Software Engineering(sw-engineering-candies.com)
3. https://apiumhub.com/tech-blog-barcelona/benefits-of-agile-project-management/
4. https://www.co-code.cn/tool
5. https://mp.weixin.qq.com/s?__biz=MjM5NjY1OTEzMg==&mid=2649781830&idx=1&sn=4022dbbc58ca580a573ddadef20840a4&chksm=bee13c958996b5838906bd915c1be930d7897f61e902a7e14d9d9eb449dda04da7ac86d40247&token=790976633&lang=zh_CN&scene=21#wechat_redirect
6. 睿思得咨詢提供專業的軟件過程輔導和CMMI認證服務,敬請關注。http://raysdom.cn
如何確定軟件的開發成本價格?
軟件開發成本估算過程可進一步細分為軟件規模估算、工作量估算、成本估算和確定軟件開發成本等四個過程。
其中成本估算需要對直接人力成本、間接人力成本、間接非人力成本及直接非人力成本分別進行估算。
國家標準《GB/T 36964-2018 軟件工程 軟件開發成本度量規范》中建議的軟件開發成本估算基本流程如下圖所示:
國家準中的四個估算過程,層層遞進,逐步細化,最終達到科學、一致的成本估算。
一、軟件規模估算
通常情況下,規模估算是軟件成本估算過程的起點。
估算規模是后續計算軟件項目的工作量、成本和進度的主要輸入,是項目范圍管理的關鍵,因此,在條件允許的情況下,應首先進行規模估算。
在規模估算過程中,需要注意以下情況:
1.在規模估算開始前,應根據可行性研究報告或類似文檔明確項目需求及系統邊界。項目需求除包含最基本的業務需求外,還應進行初步的子系統/模塊劃分,并對每一子系統或模塊的基本用戶需求進行說明,以保證可以根據項目需求進行規模預估。
2.依據項目特點和需求詳細程度不同,通常估算人員在選擇估算方法時應采用納入國際標準的功能點方法進行功能規模估算,在適用IFPUG或NESMA方法時,可以根據需求的粒度和管理需要,選擇預估功能點方法、估算功能點方法或者詳細功能點方法。
3.若當前的項目需求極其模糊或不確定,可不進行規模估算,而直接采用類比法或類推法估算工作量和成本。
二、工作量估算
在完成規模估算后,應當開展工作量估算工作,若當前項目未開展規模估算,也可直接啟動工作量估算工作。
工作量估算時,可采用方程法、類比法、類推法、功能點法:
方程法:即基于基準數據建立參數模型,通過輸入各項參數,確定估算值。
類比法:即將待估算項目的部分屬性與類似的一組基準數據進行比對,進而確定估算值。
類推法:即將待估算項目的部分屬性與高度類似的一個或幾個已完成項目的數據進行比對,并進行適當調整后確定估算值。
功能點法:從用戶視角出發,通過量化系統功能來度量軟件的規模,這種度量主要基于系統的邏輯設計。功能點規模度量方法在國際上的應用已經比較廣泛,并且已經取代代碼行成為最主流的軟件規模度量方法。
在開展工作量估算的過程中,需要注意以下情況:
1.當需求極其模糊或不確定時,如果此時具有高度類似的歷史項目,則可直接采用類推法,充分利用歷史項目數據來粗略估算工作量。
2.當需求極其模糊或不確定時,如果此時具有與本項目部分屬性類似的一組基準數據,則可直接采用類比法,充分利用基準數據來粗略估算工作量。
3.對于規模估算已經開展的項目,可采用方程法,通過輸入各項參數,確定待估算項目的工作量。若客戶或高層對項目的工期有明確的要求時,在采用方程法估算工作量時,工期要求有可能是方程的參數之一。
4.為追求估算的準確性,建議在條件允許的情況下,可采用兩種估算方法,對估算結果進行交叉驗證,若估算結果差別不大,可直接使用兩種估算結果的平均值或以某種估算結果為準,若差別較大,需進行差異分析。
5.工作量的估算結果宜為一個范圍而不是單一的值。
三、成本估算
在獲得了工作量估算結果后,可采用科學的方法進行成本估算。
在成本估算過程中,應需要注意的情況:
1.類比法和類推法,同樣適用于需求極其模糊或不確定時的成本估算;
2.間接成本是否與工作量估算結果相關取決于間接成本分攤計算方式。在絕大多數組織,項目周期越長,項目組成員越多,其分攤的間接成本就越高,此時項目的間接成本與工作量估算結果直接相關;
3.直接非人力成本通常與工作量估算結果無關,宜單獨分項測算;
4. 成本估算結果,也通常為一個范圍,而不是單一的值。
四、確定軟件開發成本
在《軟件工程 軟件開發成本度量規范》中,將軟件開發成本分為四類,主要是為便于對成本構成(即哪些成本屬于開發成本,哪些不屬于開發成本)進行清晰界定。
而在實際確定軟件開發成本時,通常并不是分別測定四類成本,加和后獲得總成本,而是通常采用以下兩種方式確定總成本:
1.根據人力成本費率及工作量估算直接人力成本和間接成本之和,再加上直接非人力成本,獲得總成本;
2.根據規模綜合單價和軟件規模,測算出直接人力成本和間接成本之和,再加上直接非人力成本,獲得總成本。
在進行軟件的規模、工作量、成本估算時應遵循以下原則:
1.在規模估算時,應根據項目特點和需求的詳細程度選擇合適的估算方法;
2.充分利用基準數據,采用方程法、類比法或類推法,對工作量和成本進行估算;
3.工作量和成本的估算結果宜為一個范圍值;
4.在進行成本估算時,如有明確的工期要求,應充分考慮工期對項目成本的影響,可以根據項目實際情況以及工期對項目的影響程度,對成本的估算結果進行調整;
5.成本估算過程中宜采用不同的方法分別估算并進行交叉驗證。如果不同方法的估算結果產生較大差異,可采用專家評審方法確定估算結果,也可使用較簡單的加權平均方法;
6.在軟件項目的不同場景下(如預算、招投標、項目計劃和變更管理等)采用國家標準時,相關要求見國家標準中附錄A。
除了上述主要原則外,我們還需注意在使用基準數據時:
1. 對于委托方和第三方,建議使用或參考軟件行業基準數據進行估算。估算模型的調整因子的增減或取值有可能隨著行業基準數據的變化而變化。
2.對于開發方,在引入行業基準數據的基礎上,可逐步建立組織級基準數據庫,以提高估算精度。組織級基準數據定義應與行業基準數據定義保持一致,以便于與行業基準數據進行比對分析,并持續提升組織能力。
開一家軟件開發公司,大概需要多少投入?
做軟件開發的成本究竟如何估算
軟件成本評估的6個步驟:
1、軟件規模評估:
軟件規模評估是軟件成本評估的基礎,是為了保證軟件成本評估結果的客觀性和透明性,軟件規模信息必不可少。
在軟件規模評估過程中,如果能夠以軟件功能點方法作為主要的軟件規模評估方法,同時輔以其他的非標準評估方法,例如代碼行方法、用例數方法等,應用不同的軟件規模評估方法對規模評估結果進行真實性交叉檢驗,一方面可以提高軟件規模評估結果的可信度;另一方面,也可以對不同類型的項目干系人也會具有更強的說服力。
在實際的軟件規模評估過程中,軟件組織或者個人也可以根據自身的特點采用有別于上述評估方法的其他方法。但要注意的是,不管采用哪種軟件規模評估方法,都要盡可能的保證這個方法所評估結果的一致性和客觀性。
2、軟件工作量評估
如果說我們能夠算出開發軟件、維護軟件所投入的人員工作量,那么我們也就相當于得到了相應的軟件成本。在軟件行業中的絕大多數項目里面,影響軟件工作量的最主要因素還是軟件規模因素,當軟件規模越來越大時,也就意味著我們需要投入的工作量越多,這兩者之間是存在著正相關的關系。
在軟件工作量的評估中,還包含了五個小步驟,也就是收集歷史工作量數據、分析歷史工作量數據、建立工作量評估模型、評估工作量、工作量模型的標定和更新。通過這些步驟可以積累更多關于軟件組織開發工作量和維護工作量的數據,在此基礎之上,建立相應的工作量評估模型,從而為后續的工作量評估任務提供支持方法。
3、軟件階段工作量評估
在這個步驟中,軟件成本評估團隊應該充分考慮軟件項目的工期因素,對軟件項目總工作量安排和各個階段工作量安排進行優化分析,將軟件項目的總工作量以合理可行的方式分解為各個階段的工作量。
不僅如此,還要考慮軟件項目工期所面臨的各種工期約束條件,例如一些來自客戶的強制工期要求、市場競爭性、可用的人力資源、項目各階段人力資源分配的合理比例等約束條件,都在這個步驟中明確介紹了一系列階段工作量安排的改進和優化方法,包括階段工作量匯總法、資源平滑法、快速跟蹤法、趕工法以及軟件階段工作量的可行性評估方法等。
這些方法的主要目的就是在于將軟件工作總量以合理、可行的方式分配到軟件項目的各個階段,確保在不超出工作總量的前提下,盡可能降低人員成本、優化人力資源配置,為軟件預算、軟件開發計劃制定等管理活動提供充分的決策支持信息。
4、軟件人員成本評估
在這個步驟里面,我們將會詳細說明如何在軟件開發和維護所需的工作量轉換為對應的費用信息,以便為相關的項目外部干系人提供更直接的決策依據。在軟件人員成本評估中,也包含有單一人員成本評估法、分類人員成本評估法和行業人員成本評估法。
5、軟件風險評估
在軟件開發的過程中,許多軟件組織明確認識到軟件行業的開發人員已經默認和接受了無償加班這一行業事實,這樣一來,就算沒有識別相應的風險信息,但也沒有嚴重后果,也就是說,如果風險發生了,那就加班。
這個步驟中通過應用不同的風險評價方法,將軟件項目的風險信息轉換為項目的成本信息,從而建立軟件項目的風險預算。
6、軟件成本報告與更新
軟件項目在開發過程中時,經常容易發生各種軟件需求變更、人員變更、工期變更等多種類型的變更,這些變更無一例外地將對軟件成本產生明顯的影響。
在這個步驟中,可以分析軟件成本更新面臨的困難,有哪些典型的軟件成本更新的信息來源,從機制設計的角度確保盡可能全面獲取軟件成本變更信息。最后遵循軟件組織所建立的軟件成本更新過程,將軟件成本變更信息反映到更新后的軟件成本評估結果中。
本文發布于:2023-02-28 19:04:00,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167759675951043.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:軟件開發成本(軟件開發成本度量規范).doc
本文 PDF 下載地址:軟件開發成本(軟件開發成本度量規范).pdf
| 留言與評論(共有 0 條評論) |