① 一個軟體項目如何評估工作量和成本
軟體開發成本估算過程可進一步細分為軟體規模估算、工作量估算、成本估算和確定軟體開發成本等四個過程。
其中成本估算需要對直接人力成本、間接人力成本、間接非人力成本及直接非人力成本分別進行估算。
國家標准《GB/T 36964-2018 軟體工程 軟體開發成本度量規范》中建議的軟體開發成本估算基本流程如下圖所示:
國家准中的四個估算過程,層層遞進,逐步細化,最終達到科學、一致的成本估算。
一、軟體規模估算
通常情況下,規模估算是軟體成本估算過程的起點。
估算規模是後續計算軟體項目的工作量、成本和進度的主要輸入,是項目范圍管理的關鍵,因此,在條件允許的情況下,應首先進行規模估算。
在規模估算過程中,需要注意以下情況:
在規模估算開始前,應根據可行性研究報告或類似文檔明確項目需求及系統邊界。項目需求除包含最基本的業務需求外,還應進行初步的子系統/模塊劃分,並對每一子系統或模塊的基本用戶需求進行說明,以保證可以根據項目需求進行規模預估。
依據項目特點和需求詳細程度不同,通常估算人員在選擇估算方法時應採用納入國際標準的功能點方法進行功能規模估算,在適用IFPUG或NESMA方法時,可以根據需求的粒度和管理需要,選擇預估功能點方法、估算功能點方法或者詳細功能點方法。
若當前的項目需求極其模糊或不確定,可不進行規模估算,而直接採用類比法或類推法估算工作量和成本。
二、工作量估算
在完成規模估算後,應當開展工作量估算工作,若當前項目未開展規模估算,也可直接啟動工作量估算工作。
工作量估算時,可採用方程法、類比法、類推法、功能點法:
方程法:即基於基準數據建立參數模型,通過輸入各項參數,確定估算值。
類比法:即將待估算項目的部分屬性與類似的一組基準數據進行比對,進而確定估算值。
類推法:即將待估算項目的部分屬性與高度類似的一個或幾個已完成項目的數據進行比對,並進行適當調整後確定估算值。
功能點法:從用戶視角出發,通過量化系統功能來度量軟體的規模,這種度量主要基於系統的邏輯設計。功能點規模度量方法在國際上的應用已經比較廣泛,並且已經取代代碼行成為最主流的軟體規模度量方法。
在開展工作量估算的過程中,需要注意以下情況:
當需求極其模糊或不確定時,如果此時具有高度類似的歷史項目,則可直接採用類推法,充分利用歷史項目數據來粗略估算工作量。
當需求極其模糊或不確定時,如果此時具有與本項目部分屬性類似的一組基準數據,則可直接採用類比法,充分利用基準數據來粗略估算工作量。
對於規模估算已經開展的項目,可採用方程法,通過輸入各項參數,確定待估算項目的工作量。若客戶或高層對項目的工期有明確的要求時,在採用方程法估算工作量時,工期要求有可能是方程的參數之一。
為追求估算的准確性,建議在條件允許的情況下,可採用兩種估算方法,對估算結果進行交叉驗證,若估算結果差別不大,可直接使用兩種估算結果的平均值或以某種估算結果為准,若差別較大,需進行差異分析。
工作量的估算結果宜為一個范圍而不是單一的值。
三、成本估算
在獲得了工作量估算結果後,可採用科學的方法進行成本估算。
在成本估算過程中,應需要注意的情況:
類比法和類推法,同樣適用於需求極其模糊或不確定時的成本估算;
間接成本是否與工作量估算結果相關取決於間接成本分攤計算方式。在絕大多數組織,項目周期越長,項目組成員越多,其分攤的間接成本就越高,此時項目的間接成本與工作量估算結果直接相關;
直接非人力成本通常與工作量估算結果無關,宜單獨分項測算;
成本估算結果,也通常為一個范圍,而不是單一的值。
四、確定軟體開發成本
在《軟體工程 軟體開發成本度量規范》中,將軟體開發成本分為四類,主要是為便於對成本構成(即哪些成本屬於開發成本,哪些不屬於開發成本)進行清晰界定。
而在實際確定軟體開發成本時,通常並不是分別測定四類成本,加和後獲得總成本,而是通常採用以下兩種方式確定總成本:
根據人力成本費率及工作量估算直接人力成本和間接成本之和,再加上直接非人力成本,獲得總成本;
根據規模綜合單價和軟體規模,測算出直接人力成本和間接成本之和,再加上直接非人力成本,獲得總成本。
在進行軟體的規模、工作量、成本估算時應遵循以下原則:
在規模估算時,應根據項目特點和需求的詳細程度選擇合適的估算方法;
充分利用基準數據,採用方程法、類比法或類推法,對工作量和成本進行估算;
工作量和成本的估算結果宜為一個范圍值;
在進行成本估算時,如有明確的工期要求,應充分考慮工期對項目成本的影響,可以根據項目實際情況以及工期對項目的影響程度,對成本的估算結果進行調整;
成本估算過程中宜採用不同的方法分別估算並進行交叉驗證。如果不同方法的估算結果產生較大差異,可採用專家評審方法確定估算結果,也可使用較簡單的加權平均方法;
在軟體項目的不同場景下(如預算、招投標、項目計劃和變更管理等)採用國家標准時,相關要求見國家標准中附錄A。
除了上述主要原則外,我們還需注意在使用基準數據時:
對於委託方和第三方,建議使用或參考軟體行業基準數據進行估算。估算模型的調整因子的增減或取值有可能隨著行業基準數據的變化而變化。
對於開發方,在引入行業基準數據的基礎上,可逐步建立組織級基準資料庫,以提高估算精度。組織級基準數據定義應與行業基準數據定義保持一致,以便於與行業基準數據進行比對分析,並持續提升組織能力。