武秋實
項目成本估算一直是信息系統開發項目的重大困擾。某些企業利用信息不對稱虛報軟件規模和成本,使業主蒙受巨大的經濟損失;個別企業壓低價格,惡性競爭,擾亂市場秩序;大量項目預算不足,帶來成本風險,甚至造成項目失敗。為此,IT項目的成本估算一直是企業、學術界、用戶、政府、第三方等各方重點關注的問題,研究并提出了眾多的估算方法,基本可以分為模型驅動、數據驅動和經驗驅動三類。
本文就模型驅動的估算方法進行闡述和研究,為項目工作量以及人工成本的管理和控制提供理論依據,有效應對成本風險。
進行IT項目成本估計的模型很多,1977年IBM公司的Walston和Felix提出了最早的軟件成本估算模型,又稱IBM模型。模型基于對源代碼行數L的計數。

該方法給出了工作量、工期、人數、文檔量等變量與代碼行的關系,具有較好的點估計效果。
1981年,Barry Boehm提出COCOMO模型,該模型經過長期發展,經歷了COCOMO81、COCOMOII,目前已經發展成為一組模型套件。其核心公式為工作量與代碼行的指數關系。

從以上兩個典型模型可見國外的模型主要依據代碼行數進行成本的點估計。
國內的模型研究起步較晚。2013年,中國軟件行業協會系統與軟件過程改進分會發布了《軟件研發成本度量規范》,提出了依據功能點數進行區間估計的方法;中國系統與軟件度量用戶組還建立了中國軟件過程基準數據庫,截至2014年3月1日,該數據庫包含國內外項目數據4 634套。
《軟件研發成本度量規范》的核心公式是功能點數S與工作量AE的轉換。

其中PDR為功能點耗時率,SWF為軟件因素調整因子,RDF為開發因素調整因子。依據數據庫中不同項目的功能點耗時率,可以將功能點S轉換成一個工作量AE的區間,從而進行區間估計。
《軟件研發成本度量規范》模型的提出為軟件項目預算、立項審批、招投標、項目計劃、變更管理等工作提供了模型支撐,基準數據庫為模型提供了數據支撐。
SPI模型對軟件成本的計算過程分為測算規模、測算工作量、測算工期和測算費用4個步驟。
2.1.1 測算規模
規模S的測算主要包括功能點度量和規模調整兩部分。功能點度量采用預估功能點計數法,數出項目的內部邏輯文件ILF和外部接口文件EIF數量。然后,進行復用度調整和需求變更調整。復用度調整因子RUF的取值為0~1的任意實數,需求變更調整因子CF的取值為1~2的任意實數。
采用預估功能點計數法測算規模的方法見公式(7)。

假設某項目有15個內部邏輯文件ILF,10個外部接口文件EIF,復用度調整因子RUF為1,需求變更調整因子CF為1.5,則規模S的取值為1 012.5功能點,即S=35×15+15×10)×1×1.5。
2.1.2 測算工作量
測算工作量AE的方法是根據功能點耗時率PDR,將以功能點測算的規模S轉換為人時工作量UE,然后根據軟件因素SWF和開發因素RDF對工作量進行調整。

功能點耗時率的取值見表1。

表1 功能點耗時率基準數據
軟件因素SWF受軟件規模SF、應用類型AT和質量特征QR的影響,幾個變量的關系見公式(9)。

軟件規模調整因子SF的取值方法見公式(10)。

應用類型調整因子AT的取值見表2。

表2 應用類型調整因子取值表
質量特征調整因子QR的取值方法見表3。

表3 質量特征調整因子取值表
開發因素RDF受開發語言SL和開發團隊項目經驗DT的影響,幾個變量的關系見公式(11)。

開發語言調整因子SL的取值見表4。

表4 開發語言調整因子取值表
開發團隊項目經驗影響因子DT的取值見表5。

表5 開發團隊項目經驗調整因子取值表
假設某項目的規模S取值為1 012.5功能點;功能點耗時率PDR取P50,取值為7.31;應用類型調整因子AT取值1.0,質量特征調整因子QR取值1.0,開發語言調整因子SL取值為1.0,開發團隊項目經驗調整因子DT取值為1.0。
則軟件規模調整因子SF為0.98[(269.644 6+1 012.5×0.709 4)/1 012.5],軟件因素調整因子SWF取值為0.98(0.98×1.0×1.0),開發因素調整因子取值為1.0(1.0×1.0),工作量AE取值為7 221.64人時(1 012.5×7.31×0.98×1.0)。
2.1.3 測算工期
工期D的測算是依據工作量AE-工期D模型,將工作量轉換為工期。工作量-工期模型見公式(12)。

假設項目的工作量取值為7 221.64人時,則工期為5.73個月。
2.1.4 測算費用
軟件開發費用P的測算是根據工作量AE和人月成本F計算的,計算方法見公式(13)。

北京市的人月成本F取值為23 100元。以項目工作量為7 221.64人時為例,則項目的開發費用P取值為947 839.92(7 221.64/176×23 100)元。
2014年4月30日,中國系統與軟件度量用戶組依據基準數據庫發布行業基準數據SSMBK-201404,其中功能點耗時率的數據見表1。其中,P10是指基準數據庫中所有歷史項目生產率數據的10分位點,P50為行業生產率的50分位點,即中位數。
在實際運用中,可以用P50來預測最有可能工作量,P25和P75分別預測工作量的下限和上限。如果項目要求特別嚴格,也可以使用P10和P90來預測下限和上限。這樣,就將功能點數轉換成了一個工作量區間,再通過工作量區間轉換為成本區間。
假設某項目功能點數為1 012.5,分別采用P25、P50和P75進行工時下限、最有可能值和上限的預測,則項目所需工作量在3 665.15~12 813.22人時之間,最有可能為7 221.64人時;所需費用在48.11萬~168.17萬元之間,最有可能為94.78萬元。
基于基準數據可以得出一個成本區間,但是對于預算、價格談判等投資決策的情景而言,該區間太廣,對決策的參考意義不大。
根據馬克思主義經濟學,商品的社會價值是由生產商品的社會必要勞動時間決定的。因此,軟件產品的招標價格和預算金額也應該按照行業平均成本來進行計算。個別企業的勞動生產率較高,則其開發本軟件的成本低于招標價格,可以得到盈利;反之,勞動生產率較低的企業,則會虧損。這符合市場經濟的規律。
因此,采用P50作為社會必要勞動生產率來預測最有可能值,采用P45和P55來進行下限和上限的估算,既能合理評估軟件的行業平均成本,又可以給出較小的區間值。
但是,大部分人僅能獲得P25和P75的值,無法獲取P45和P55的值,因此可以采用一定的數據處理方法近似取得。如內插法、回歸分析法等。現采用回歸分析法進行取值。

表6 生產率數據回歸分析相關數據

表7 生產率數據回歸預測
根據表1的數據,以分位點為變量x,以生產率為變量y,進行回歸分析。可得出兩變量的關系如公式(14)所示。

幾個參數的計算如下:

可以認為,回歸分析的效果很理想。據此公式,可以對各個分位點的軟件行業基準生產率數據進行預測。詳見表7。
P45的預測值為6.17人時/功能點,P50的預測值為7.10人時/功能點,P55的預測值為8.13人時/功能點。
采用P45、P50和P55對功能點數為1 012.5的項目進行預測,則項目所需的工作量區間為6 095.42~8 031.73人時,最有可能為7 014.18人時;費用區間為80.00萬~105.42萬元,最有可能為92.06萬元。
此次預測的區間明顯縮小,而且給出的是行業平均生產率水平下的軟件成本,可以作為預算和價格談判等投資決策提供很好的參考。