現(xiàn)在軟件在大多數(shù)基于計(jì)算機(jī)的系統(tǒng)中已成為最昂貴的部分,如果軟件成本估算的誤差很大,就會(huì)使盈利變成虧損。
軟件項(xiàng)目估算是一種解決問題的形式,在多數(shù)情況下,要解決的問題非常復(fù)雜,想一次性整體解決比較困難。因此,對(duì)問題進(jìn)行分解,把其分解成一組較小的接近于最終解決的可控的子問題,再定義它們的特性。
估算技術(shù)一般有代碼行(LOC)和功能點(diǎn)(FP)估算法,這是兩種不同的估算技術(shù),但有許多共同特性。項(xiàng)目計(jì)劃人員首先給出一個(gè)有界的軟件范圍的敘述,再由此嘗試著把軟件分解成一些小的可分別獨(dú)立進(jìn)行估算的子功能。然后對(duì)每一個(gè)子功能估算其LOC或FP(即估算變量)。接著,把基線生產(chǎn)率度量用做特定的估算變量,導(dǎo)出子功能的成本或工作量。將子功能的估算進(jìn)行綜合后就能得到整個(gè)項(xiàng)目的總估算。
LOC或FP估算技術(shù)對(duì)于分解所需要的詳細(xì)程度是不同的。當(dāng)用LOC作為估算變量時(shí),功能分解是絕對(duì)必要的且需要達(dá)到很詳細(xì)的程度。而估算功能點(diǎn)所需要的數(shù)據(jù)是宏觀的量,當(dāng)把FP當(dāng)做估算變量時(shí)所需要的分解程度可以不很詳細(xì)。LOC是直接估算的,而FP是通過估計(jì)輸入、輸出、數(shù)據(jù)文件、查詢和外部接口的數(shù)目,以及復(fù)雜性校正值間接地確定的。除去所用到的估算變量,項(xiàng)目計(jì)劃人員必須對(duì)每一個(gè)分解的功能提出一個(gè)有代表性的估算值范圍。利用歷史數(shù)據(jù)或憑實(shí)際經(jīng)驗(yàn),計(jì)劃人員對(duì)每個(gè)功能分別按樂觀的、可能的、悲觀的三種情況給出LOC或FP估計(jì)值。
為了反映開發(fā)特性的影響,應(yīng)當(dāng)隨時(shí)修正平均生產(chǎn)率。
1 LOC(Lines of Code,代碼行)估算代碼尺寸
把項(xiàng)目劃分為若干個(gè)功能,分別計(jì)算每個(gè)功能的代碼長(zhǎng)度,所有功能代碼行之和即項(xiàng)目的代碼長(zhǎng)度。
LOC估算表包括:
每個(gè)功能的代碼長(zhǎng)度估算值=(樂觀值+4*可能值+悲觀值)/6
估算工作量=代碼總估算長(zhǎng)度/估算生產(chǎn)率
估算總成本=日薪*估算工作量
估算行成本=估算總成本/估算代碼長(zhǎng)度
估算生產(chǎn)率由經(jīng)驗(yàn)獲得
2 FP(功能點(diǎn))估算代碼尺寸
項(xiàng)目的功能點(diǎn)數(shù)是幾個(gè)測(cè)量參數(shù)(用戶輸入數(shù)、用戶輸出數(shù)、用戶查詢數(shù)、文件數(shù)、外部接口數(shù))的功能點(diǎn)之和。
用戶輸入數(shù):計(jì)算每個(gè)用戶輸入,它們向軟件提供面向應(yīng)用的數(shù)據(jù)。輸入應(yīng)該與查詢區(qū)分開來,分別計(jì)算。
用戶輸出數(shù):計(jì)算每個(gè)用戶輸出,它們向軟件提供面向應(yīng)用的信息。這里,輸出是指報(bào)表、屏幕、出錯(cuò)信息,等等。一個(gè)報(bào)表中的單個(gè)數(shù)據(jù)項(xiàng)不單獨(dú)計(jì)算。
用戶查詢數(shù):一個(gè)查詢被定義為一次聯(lián)機(jī)輸入,它導(dǎo)致軟件以聯(lián)機(jī)輸出的方式產(chǎn)生實(shí)時(shí)的響應(yīng)。每一個(gè)不同的查詢都要計(jì)算。
文件數(shù):計(jì)算每個(gè)邏輯的主文件(如數(shù)據(jù)的一個(gè)邏輯組合,它可能是某個(gè)大型數(shù)據(jù)庫(kù)的一部分或是一個(gè)獨(dú)立的文件)。
外部接口數(shù):計(jì)算所有機(jī)器可讀的接口(如磁帶或磁盤上的數(shù)據(jù)文件),利用這些接口可以將信息從一個(gè)系統(tǒng)傳送到另一個(gè)系統(tǒng)。
FP估算表包括:
每個(gè)測(cè)量參數(shù)的估算FP計(jì)數(shù)=估算值*加權(quán)因子
項(xiàng)目估算FP=各參數(shù)FP計(jì)數(shù)之和*復(fù)雜度調(diào)整因子
估算生產(chǎn)率由經(jīng)驗(yàn)獲得
估算工作量=項(xiàng)目估算FP/估算生產(chǎn)率
估算總成本=日薪*估算工作量
單個(gè)FP估算成本=估算總成本/估算FP