現在軟體在大多數基於電腦的系統中已成為最昂貴的部分,如果
軟體成本估算的誤差很大,就會使盈利變成虧損。
軟體項目估算是一種解決問題的形式,在多數情況下,要解決的問題非常複雜,想一次性整體解決比較困難。因此,對問題進行分解,把其分解成一組較小的接近於最終解決的可控的子問題,再定義它們的特性。
估算技術一般有程式碼(LOC)和功能點(FP)估演算法,這是兩種不同的估算技術,但有許多共同特性。專案計劃人員首先給出一個有界的軟體範圍的敘述,再由此嘗試著把軟體分解成一些小的可分別獨立進行估算的子功能。然後對每一個子功能估算其LOC或FP(即估算變數)。接著,把基準生產率度量用做特定的估算變數,匯出子功能的成本或工作量。將子功能的估算進行綜合後就能得到整個項目的總估算。
LOC或FP估算技術對於分解所需要的詳細程度是不同的。當用LOC作為估算變數時,功能分解是絕對必要的且需要達到很詳細的程度。而估算功能點所需要的資料是宏觀的量,當把FP當做估算變數時所需要的分解程度可以不很詳細。LOC是直接估算的,而FP是通過估計輸入、輸出、資料檔案、查詢和外部介面的數目,以及複雜性校正值間接地確定的。除去所用到的估算變數,專案計劃人員必須對每一個分解的功能提出一個有代表性的估算值範圍。利用曆史資料或憑實際經驗,計劃人員對每個功能分別按樂觀的、可能的、悲觀的三種情況給出LOC或FP估計值。
為了反映開發特性的影響,應當隨時修正平均生產率。
1 LOC(Lines of Code,程式碼)估算代碼尺寸
把項目劃分為若干個功能,分別計算每個功能的代碼長度,所有功能程式碼之和即項目的代碼長度。
LOC估算表包括:
每個功能的代碼長度估算值=(樂觀值+4*可能值+悲觀值)/6
估算工作量=代碼總估算長度/估算生產率
估算總成本=日薪*估算工作量
估算行成本=估算總成本/估算代碼長度
估算生產率由經驗獲得
2 FP(功能點)估算代碼尺寸
項目的功能點數是幾個測量參數(使用者輸入數、使用者輸出數、使用者查詢數、檔案數、外部介面數)的功能點之和。
使用者輸入數:計算每個使用者輸入,它們向軟體提供面嚮應用的資料。輸入應該與查詢區分開來,分別計算。
使用者輸出數:計算每個使用者輸出,它們向軟體提供面嚮應用的資訊。這裡,輸出是指報表、螢幕、出錯資訊,等等。一個報表中的單個資料項目不單獨計算。
使用者查詢數:一個查詢被定義為一次聯機輸入,它導致軟體以聯機輸出的方式產生即時的響應。每一個不同的查詢都要計算。
檔案數:計算每個邏輯的主檔案(如資料的一個邏輯組合,它可能是某個大型資料庫的一部分或是一個獨立的檔案)。
外部介面數:計算所有機器可讀的介面(如磁帶或磁碟上的資料檔案),利用這些介面可以將資訊從一個系統傳送到另一個系統。
FP估算表包括:
每個測量參數的估算FP計數=估算值*加權因子
項目估算FP=各參數FP計數之和*複雜度調整因子
估算生產率由經驗獲得
估算工作量=項目估算FP/估算生產率
估算總成本=日薪*估算工作量
單個FP估算成本=估算總成本/估算FP