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