摘 要:國(guó)內(nèi)外有關(guān)軟件成本估算技術(shù)的研究,文獻(xiàn)數(shù)量從多到少,依次可以分為五類:基于算法模型的估算技術(shù)、基于功能點(diǎn)的估算技術(shù)、基于類比法的估算技術(shù)、基于專家經(jīng)驗(yàn)的估算技術(shù)和其它類技術(shù)。其它類技術(shù)包括回歸分析技術(shù)、神經(jīng)網(wǎng)絡(luò)技術(shù)、動(dòng)態(tài)技術(shù)、貝葉斯分析技術(shù)、模糊理論技術(shù)、組合方法技術(shù)等等。本文首先綜述了各類軟件成本估算技術(shù),然后總結(jié)了各類軟件成本估算技術(shù)的優(yōu)點(diǎn)和缺點(diǎn)。
關(guān)鍵詞:軟件成本估算 算法模型 功能點(diǎn) 類比法
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2013)06(c)-0201-03
早在20世紀(jì)60年代末,美國(guó)國(guó)防部門和軟件界有關(guān)人士首先提出了“軟件危機(jī)”的警告。軟件危機(jī)首要體現(xiàn)在“難以正確的估計(jì)軟件開發(fā)的成本和進(jìn)度”[1]。因此,國(guó)內(nèi)外學(xué)者對(duì)軟件成本估算技術(shù)進(jìn)行了大量的研究。從作者收集到的文獻(xiàn)看,現(xiàn)有的研究軟件成本估算技術(shù)可以分為五類,根據(jù)文獻(xiàn)數(shù)量的從多到少,依次為:基于算法模型的估算技術(shù)、基于功能點(diǎn)的估算技術(shù)、基于類比法的估算技術(shù)、基于專家經(jīng)驗(yàn)的估算技術(shù)和其它類技術(shù)。其中,基于算法模型的估算技術(shù)包括COCOMO模型、PRICE-S模型、SLIM模型、SEER-SEM模型等等;基于功能點(diǎn)的估算技術(shù)包括IFPUG功能點(diǎn)、MarkⅡ功能點(diǎn)、COSMIC-FFPⅠ、COSMIC-FFPⅡ等等;基于專家經(jīng)驗(yàn)的估算技術(shù)包括Delphi法、WBS法等等;其它技術(shù)包括回歸分析技術(shù)、神經(jīng)網(wǎng)絡(luò)技術(shù)、動(dòng)態(tài)技術(shù)、貝葉斯分析技術(shù)、模糊理論技術(shù)、組合方法技術(shù)等等。圖1為軟件成本估算技術(shù)的分類圖。
1 基于算法模型的軟件成本估算技術(shù)
所謂算法模型是指從參數(shù)得到成本估算的一系列規(guī)則、公式。基于算法模型的軟件成本估算技術(shù)的基本思想是:找到軟件工作量的各種成本影響因子,并判定它對(duì)工作量所產(chǎn)生的影響程度是可加的、乘數(shù)的還是指數(shù)的。不同的算法模型不僅在因子的選取上各不相同,而且在成本因子的關(guān)系表達(dá)式上也有所區(qū)別[2]。
1.1 COCOMO模型
在軟件成本估算的模型方面,最具有影響力的算法模型是由南加里福尼亞大學(xué)軟件工程中心計(jì)算機(jī)科學(xué)系主任Barry Boehm博士為首的團(tuán)隊(duì)提出的COCOMO模型(結(jié)構(gòu)型成本估算模型)。Barry Boehm博士在他編著的兩本經(jīng)典著作—— 《軟件工程經(jīng)濟(jì)學(xué)》(1981年出版)和《軟件成本估算:COCOMOⅡ模型》(2000年出版)中,介紹了世界上應(yīng)用范圍最為廣泛的成本估算模型—— COCOMO模型?!盾浖こ探?jīng)濟(jì)學(xué)》以經(jīng)濟(jì)學(xué)的觀點(diǎn)來(lái)研究和分析軟件開發(fā),以探討軟件成本估算技術(shù)與成本估算模型。該書是原版COCOMO模型(COCOMO
81)最完整的信息資源,提供了理解與應(yīng)用COCOMOⅡ模型的大量素材。COCOMOⅡ模型是對(duì)COCOMO81的改進(jìn)版本,在諸多方面進(jìn)行了重要更新和擴(kuò)展。Barry Boehm博士的這兩本著作既是國(guó)內(nèi)外的學(xué)者們研究COCOMO模型的理論起源,也是研究軟件成本估算技術(shù)的重要參考文獻(xiàn)。
COCOMO模型的通用的計(jì)算公式如下[3]:
其中,PM表示工作量(單位通常為人月),Size表示軟件規(guī)模,E表示對(duì)工作量呈指數(shù)級(jí)影響的比例因子,EM表示工作量的乘數(shù)因子。
COCOMO模型共經(jīng)歷了三次發(fā)展,按照時(shí)間順序分別是COCOMO81、COCOMOⅡ、COCOMO模型擴(kuò)展。
1.2 PRICE-S模型
PRICE-S模型最初是由RCA公司為阿波羅登月計(jì)劃的軟件項(xiàng)目而開發(fā)的,僅供內(nèi)部使用,然后于1977年作為專利模型獲得版權(quán),在美國(guó)國(guó)防部、美國(guó)宇航局等其它政府的軟件項(xiàng)目中推廣使用。盡管該模型的個(gè)別核心算法已經(jīng)公開,但是尚未公布全部?jī)?nèi)容[4]。美國(guó)國(guó)防部采用PRICE-S模型進(jìn)行軟件成本估算的項(xiàng)目有:F-22戰(zhàn)斗機(jī)(ATF)、F-35聯(lián)合攻擊機(jī)(ISF)、Tanker Program美國(guó)空軍新型空中加油機(jī)等[5]。
1.3 SLIM模型
SLIM模型(the Software of Life-cycle Model)是由Quantitative Software Measurement的Larry Putnam于二十世紀(jì)七十年代末開發(fā)的、建立在Putnam采用一種被稱為項(xiàng)目個(gè)人水平與時(shí)間的瑞利(Rayleigh)分布對(duì)軟件生存期分析基礎(chǔ)上的模型[6]。
1.4 SEER-SEM模型
SEER-SEM[7]是由Galorath Inc.公司提供的產(chǎn)品,該模型是建立在原始Jensen模型基礎(chǔ)上,推向市場(chǎng)已經(jīng)有15年左右。在此期間,該產(chǎn)品已經(jīng)演化為一個(gè)支持自頂向下和自底向上評(píng)估方法的成熟工具,其建模公式具有專利,但是它們采用的是參數(shù)估算方法。該模型的應(yīng)用范圍很廣,覆蓋了項(xiàng)目生存期的所有階段,從早期定義,到設(shè)計(jì)、開發(fā)、交付和維護(hù)??梢蕴幚砀鞣N環(huán)境和應(yīng)用,如客戶機(jī)-服務(wù)器、單機(jī)、分布式、圖像等等。開發(fā)模式覆蓋面向?qū)ο?、重用、COTS、螺旋、瀑布、原型、增量型。
2 基于功能點(diǎn)的軟件成本估算技術(shù)
功能點(diǎn)方法是在需求分析階段基于系統(tǒng)功能的一種規(guī)模度量方法,是基于應(yīng)用軟件的外部、內(nèi)部特性以及軟件性能的一種間接的規(guī)模測(cè)量[8]。功能點(diǎn)方法可以細(xì)分為功能點(diǎn)、功能擴(kuò)展點(diǎn)(包含特征點(diǎn)、3D功能點(diǎn)、全功能點(diǎn))、對(duì)象點(diǎn)和用例點(diǎn)。具有影響力的功能點(diǎn)方法有以下幾點(diǎn)。
2.1 IFPUG功能點(diǎn)分析法
1984年,功能點(diǎn)度量已得到廣泛應(yīng)用,形成了“國(guó)際功能點(diǎn)用戶組”(International Function Point Users Group,簡(jiǎn)稱IFPUG),現(xiàn)在已成為世界上最大的軟件測(cè)量聯(lián)盟,很多國(guó)家的大批軟件機(jī)構(gòu)都加入了IFPUG。該組織提出的“IFPUG功能點(diǎn)分析方法”是使用最為廣泛的功能點(diǎn)分析方法,已經(jīng)成為這一領(lǐng)域的標(biāo)準(zhǔn),2004年該組織發(fā)布了《IFPUG功能點(diǎn)計(jì)數(shù)實(shí)踐手冊(cè)4.2版》[9]。
2.2 MarkⅡ功能點(diǎn)分析法
1987年,Charles Symons正式提出了MarkⅡ功能點(diǎn)方法[10]。該方法由英國(guó)軟件度量協(xié)會(huì)(United Kingdom Software Metrics Association,簡(jiǎn)稱UKSMA)研究和推廣,主要在英國(guó)使用。MarkⅡ功能點(diǎn)方法是一種定量的、針對(duì)應(yīng)用軟件的測(cè)量分析方法。該方法的輸入是《需求規(guī)格說(shuō)明書》、《概要設(shè)計(jì)》、《數(shù)據(jù)庫(kù)設(shè)計(jì)》和《業(yè)務(wù)說(shuō)明書》,輸出是未調(diào)整功能點(diǎn)、技術(shù)復(fù)雜度調(diào)整和已調(diào)整功能點(diǎn)。MarkⅡ方法在IFPUG方法的基礎(chǔ)上精簡(jiǎn)組件模型,使用連續(xù)性的度量使計(jì)算結(jié)果更精確[11]。
2.3 COSMIC-FFPⅠ
1997年,魁北克大學(xué)軟件項(xiàng)目風(fēng)險(xiǎn)管理研究實(shí)驗(yàn)室提出COSMIC-FFPⅠ方法[12]。該方法后來(lái)由國(guó)際組織軟件度量共同協(xié)會(huì)(Common Software Measurement International Consortium, COSMIC)繼承并進(jìn)行完善。FFP是指全功能點(diǎn)(full function point),COSMIC-FFPⅠ是IFPUG方法的擴(kuò)展,針對(duì)實(shí)時(shí)系統(tǒng)軟件增加了度量控制進(jìn)程的分析規(guī)則,處理實(shí)時(shí)系統(tǒng)中大量存在的一次性數(shù)據(jù)。
2.4 COSMIC-FFPⅡ
COSMIC-FFPⅡ是COSMIC-FFPⅠ方法的升級(jí),但其分析規(guī)則與COSMIC-FFPⅠ完全不同,其計(jì)算規(guī)則于2001年發(fā)布。該方法綜合了其它功能規(guī)模度量方法的優(yōu)點(diǎn),提出了全新的組件模型和分析規(guī)則,適用于MIS系統(tǒng)、實(shí)時(shí)系統(tǒng)、中間件等多種類型系統(tǒng)的功能規(guī)模計(jì)算。
另外,Checkpoint也是采用功能點(diǎn)作為初始輸入。它是由軟件生產(chǎn)率研究所(SPR)根據(jù)Capers Jones的研究開發(fā)的一種基于知識(shí)庫(kù)的、擁有一個(gè)包含大約8000個(gè)軟件項(xiàng)目的數(shù)據(jù)庫(kù)的軟件項(xiàng)目評(píng)估工具[13]。
3 基于類比法的軟件成本估算技術(shù)
使用類比的方法進(jìn)行估算是基于案例推理技術(shù)(Case Based Reasoning,簡(jiǎn)稱CBR),在軟件成本估算中的一種應(yīng)用形式,其主要思想就是通過(guò)待估算的目標(biāo)與一個(gè)或多個(gè)已經(jīng)完成的類似項(xiàng)目的對(duì)比來(lái)預(yù)測(cè)其相應(yīng)屬性[14]。基于案例推理的軟件開發(fā)工作量估算方法的基本思路是:根據(jù)案例推理的基本原理,對(duì)以往發(fā)生的、歷史的、具有真實(shí)數(shù)據(jù)的軟件項(xiàng)目進(jìn)行工作量驅(qū)動(dòng)因子分析,尋求一般規(guī)律,從而估算當(dāng)前待估算軟件的開發(fā)工作量。估算軟件工作量的關(guān)鍵步驟為:提取軟件工作量驅(qū)動(dòng)因子;計(jì)算待估軟件與各個(gè)案例之間的相似度;估算軟件工作量[15]。
4 基于專家經(jīng)驗(yàn)的軟件成本估算技術(shù)
基于專家經(jīng)驗(yàn)的估算技術(shù)也稱為專家判定法,是指與一位或多位專家進(jìn)行商討,專家根據(jù)自己的經(jīng)驗(yàn)和對(duì)所涉及項(xiàng)目的理解,得出該項(xiàng)目的成本估算值。專家估算法適用于沒(méi)有歷史數(shù)據(jù)的情況下的成本估算,并且在決定其它模型的輸入時(shí)特別有用[16]。
4.1 Delphi技術(shù)
Delphi技術(shù)是最流行的專家評(píng)估技術(shù)。
Delphi技術(shù)是蘭德公司在四十年代末為預(yù)測(cè)未來(lái)事件而開發(fā)的,其名字源于古希臘神使占卜所在Parnassos山南側(cè)的Delphi。標(biāo)準(zhǔn)Delphi技術(shù)不允許小組討論,寬帶Delphi技術(shù)要求在評(píng)估后進(jìn)行小組討論。
4.2 WBS法
工作分解結(jié)構(gòu)WBS(Work Breakdown Structure),通過(guò)將項(xiàng)目元素放置到一定的等級(jí)劃分中來(lái)簡(jiǎn)化預(yù)算估計(jì)與控制的相關(guān)工作。WBS包括兩個(gè)層次的分解:一個(gè)表示軟件產(chǎn)品本身的劃分,把軟件系統(tǒng)分解為各個(gè)功能組件以及其下的各個(gè)子模塊;另一個(gè)表示開發(fā)軟件所需活動(dòng)的劃分,工作活動(dòng)分解為需求、設(shè)計(jì)、編碼、測(cè)試、文檔等大塊以及其下的更具體的細(xì)分。
5 其它類軟件成本估算技術(shù)
軟件成本估算技術(shù)除了基于算法模型、功能點(diǎn)、類比法、專家經(jīng)驗(yàn)的技術(shù)方法之外,還有回歸分析、神經(jīng)網(wǎng)絡(luò)、動(dòng)態(tài)技術(shù)、貝葉斯分析、模糊理論以及將不同的估算技術(shù)進(jìn)行組合等技術(shù)方法。
5.1 回歸分析
回歸分析包括分類回歸樹、最優(yōu)子集回歸、逐步方差分析、普通最小均方回歸、穩(wěn)健回歸等。其中普通最小均方回歸是最傳統(tǒng)的方法。
普通最小均方回歸(Ordinary Least Squares,OLS)也稱作標(biāo)準(zhǔn)回歸,指的是采用最小均方普通線性回歸的經(jīng)典統(tǒng)計(jì)方法,該方法簡(jiǎn)單好用,很多商業(yè)軟件包如Minitab、Splus和SPSS中都有該技術(shù)軟件?!癛obust”回歸是對(duì)標(biāo)準(zhǔn)OLS方法的改進(jìn)。很多現(xiàn)存的參數(shù)成本模型(COCOMO II,SLIM,Checkpoint,等)都使用了各種形式的回歸技術(shù)。
5.2 神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)(Neural Network)(1996年根據(jù)Gray 和McDonell的研究),是最常見的代替最小均方回歸的軟件評(píng)估建模技術(shù),這些模型可以用歷史數(shù)據(jù)來(lái)“訓(xùn)練”,以便形成更好的能自動(dòng)調(diào)整算法參數(shù)值的模型,減少實(shí)際結(jié)果和模型預(yù)算值之間的差異。
5.3 動(dòng)態(tài)技術(shù)
動(dòng)態(tài)技術(shù)(Dynamics-based Techniques)是指軟件項(xiàng)目的成本因子在系統(tǒng)開發(fā)的期間不斷變化,它是一個(gè)連續(xù)的仿真建模方法。該技術(shù)最早是在1961年Jay Forrester研究發(fā)明的,1994年Macdachy提出了系統(tǒng)仿真模型的公式,并用于軟件工程估算。
5.4 貝葉斯分析
貝葉斯分析是允許調(diào)查人員根據(jù)樣本和專家判斷的預(yù)先信息采用邏輯相容的方法產(chǎn)生推論,COCOMO II就采用了該技術(shù)。
5.5 模糊理論
模糊理論一般不會(huì)單獨(dú)用于軟件成本估算中,通常需要與其它的方法結(jié)合使用。
5.6 組合方法
組合方法是指將不同的軟件成本估算技術(shù)組合在一起使用,或者將其它理論與軟件成本估算技術(shù)相組合的方法。典型的組合方法有COBRA(cost estimation, benchmarking, and risk assessment)及其后來(lái)針對(duì)Web應(yīng)用的擴(kuò)展Web-COBRA。除此之外,還有:將貝葉斯網(wǎng)絡(luò)與COCOMO模型組合,將模糊理論與COCOMO模型組合,將神經(jīng)網(wǎng)絡(luò)與COCOMO模型組合等等。
6 各類軟件成本估算技術(shù)的比較
下面通過(guò)表格的形式從估算技術(shù)的基本思想、主要優(yōu)缺點(diǎn)兩個(gè)方面對(duì)不同的軟件成本估算技術(shù)進(jìn)行比較。
參考文獻(xiàn)
[1]總裝備部電子信息基礎(chǔ)部標(biāo)準(zhǔn)化研究中心.軍用軟件工程系列標(biāo)準(zhǔn)實(shí)施指南[M].北京:航空工業(yè)出版社,2006:2.
[2]Barry boehm.Software Engineering Economics[M].Canifornia:New Jersey Prentice Hall.
[3]Barry Boehm.Constructive Cost Model[M].Beijing:China Press,2005:1.
[4]Park Riee.The Central Equations of the PRICE Software Cost Model[C].Price of the 4th COCOMO Users Group Meeting,1988:256.
[5]許道利.基于模型的軟件成本估算技術(shù)研究及工具原型實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2007.
[6]Lawrence Ware Myers.Measures for Excellence[M].New York:Yourdon Press,1992:1.
[7]國(guó)家計(jì)委,財(cái)政部,總參謀部,國(guó)防科工委.軍品價(jià)格管理辦法[S].北京:四部委,1996.
[8]張文華.功能點(diǎn)的計(jì)算方法[J].電腦知識(shí)與技術(shù),2006(4):17-18.
[9]Roger S.Pressman,Software Engineering[M].北京:機(jī)械工業(yè)出版社,2008:37.
[10]姚登峰.基于RUP的軟件測(cè)試[M].北京:清華大學(xué)出版社,2009:33-35.
[11]John C.Hull.Fundamentals of Futures and Options Markets[M].北京:機(jī)械工業(yè)出版社,2009:177,206.