(中國艦船研究設計中心 武漢 430064)
基于領域空間的軟件復用成本估算模型*
劉敏
(中國艦船研究設計中心 武漢 430064)
作為軟件成本控制管理的重要措施,軟件開發成本的估算技術已經成為軟件工程領域的一個重要課題,當前基于復用的軟件開發正在成為軟件工程的主流。論文通過對COCOMOII模型的改造,建立基于領域空間的軟件復用成本估算模型,分析復用技術及復用粒度引起的成本變化,并通過引入領域空間的概念,分析復用成本與時間的關系。之后給出了對模型系數進行本地化校準的方法并通過實例驗證模型的適用性。
軟件復用;成本估算;COCOMO模型;復用粒度
ClassNumberTP311.5
目前軍用裝備的研制及采購定位在系統級,即一次性包含了裝備的軟、硬件成本、試驗成本、后期維護成本等,軟件產品的計價往往附著在系統或硬件中,缺乏成熟、合理的計價依據,不利于軟件研制的成本核算和發展要求。
軍用裝備軟件研制具有很強的領域性特點,非常適合應用軟件復用技術,以提高工作效率、縮短開發周期、降低開發成本。基于復用的軟件開發技術通常具有一致的技術體制,標準的接口描述語言,完善的自描述性,是目前較為理想的軟件復用方法。然而,采用基于復用的軟件研發模式在實施過程中將產生如下成本增量:
1)增加軟件設計成本。對軟件或模塊進行領域、功能、和結構的可復用設計,進行適當粒度的拆分及可復用的接口設計[1~2];
2)增加維護和管理成本。建立構件數據庫及其管理組件,完善文檔及檢索描述[1,3];
3)增加系統構建成本。主要是對復用構件的應用理解,包括與開發目標的一致性及適應性修改分析等[1,3~4]。
正是這些成本增量以及對未來復用化預期的不確定性,使得企業軟件研制對復用持觀望態度。目前主要的軟件成本評估模型主要有:專家判定法[2~3,5]、類比估算法[2~3,5~6]、回歸分析法[2~3,5]、COCOMOII[1,5]等。專家判定法帶有很強的主觀性,類比估算法無法對差異部分進行準確的估計,回歸分析法要求回歸變量間不能有較強的關聯性,COCOMOII成本估計模型通過成本驅動因子和大量實測項目數據估算軟件成本,具有適用性強、可操作性好等特點,是較為廣泛采用的一種軟件成本估算模型。
本文將在COCOMOII模型的基礎上,建立基于領域空間的軟件復用成本估算模型,并通過引入領域空間的概念,分析復用技術及復用粒度[7~9]引起的成本變化,以及復用成本[1,10~11]與時間的關系。估算企業在多個開發周期中的基于復用的軟件開發成本。
COCOMOII模型中以PM(人月)為單位對軟件成本進行估算,將每個成本驅動因子(EM)設定為很高、高、標稱等不同的等級,表征不同的值,以方便估算者主觀判斷。估算者根據項目運行環境為每個成本驅動因子及標度因子確定一個等級,并將該等級對應的數值代入公式,即得到估算的結果。在不考慮自動化轉換工具等效成本及需求變化引起的等效成本的情況下,其估算模型如式(1):
(1)
其中A及式(2)中的B為常數,推薦值由COCOMOII統計給出,EMi為成本驅動因子,Size為等效代碼量。在考慮軟件復用的情況下,參數E及Size的計算如式(2)、(3)。
(2)
Size=KNSLOC+KASLOC×(AAM)
(3)
式中參數定義如表1,各因子取值參考COCOMOII模型。

表1 模型參數
由上述兩式可以看出,在軟件規模及各成本驅動因子一定的情況下,軟件開發成本取決于新開發代碼量與復用代碼量的規模,即復用率的大小。在基于復用的軟件生產模式下,復用的最小單元是軟件單元,因此,軟件單元的粒度在一定上決定了未來可復用的程度,與此同時,軟件單元的粒度也影響著設計和開發的成本增量。
定義1 基本復用單元:不可再分的軟件單元,即其復用粒度為1。
定義2 最小復用單元:可通過復用化設計進行再分的軟件單元,多個基本復用單元的聚合。
假設某領域軟件應用環境中,涵蓋其所有需求的全局復用集為US,其等價代碼量可表示為
(4)
其中,Ei表示全局空間內的基本復用單元,若軟件單元C的粒度COE為包含基本復用單元的數量,且軟件單元為最小復用單元,則其可復用等價代碼量為

(5)
隨著領域內軟件研發活動的不斷進行,全局復用集US中的可復用軟件單元數將逐漸增加,軟件研制過程中的新研代碼量將逐步減少。若假定基本復用單元等價代碼量相等,且定義每次軟件研制的平均等價代碼量ESLOC(AVG)為αESLOC(US),α為規模比例因子(每次開發等價代碼量與全局空間等價代碼量的比例)。假設軟件復用過程中可復用軟件單元的命中概率符合均勻分布,則第n次與第n-1次開發過程中的復用代碼量如式(6)。

(6)
上式中第1項為n-1次開發中可復用的代碼量,第2項為n-1次開發中新生成的可復用代碼量與命中率的乘積。將等價代碼量轉換為代碼行數,并推導可知第n次開發的代碼行數的通項如式(7)。
(7)
由此,由式(3)及式(1)可得到第n次軟件開發的復用化成本為
(8)
式(8)即為基于復用的領域軟件成本估算模型,從該模型可以看出,在其他復用因子一定的情況下,復用粒度在增加當前軟件生產成本的同時,也增加了領域空間內未來軟件生產的復用率。由此,建立了基于復用的軟件生產成本與時間的關系。
如果軟件開發組織的所有項目中的某些因子總是擁有相同的等級,應該從模型中消除該因子,改用校準常數來說明。另外,模型參數都帶有主觀因素,且度量、參數的選取和確定均依據統計信息或經驗判斷,因此,可采用歷史數據對模型常數A、B進行校準。令:
(9)
設A=eβ0,B=β1,對式(8)進行對數變換可得:lnPMn=β0+β1(lnsize+lnCn)+0.01∑SF(lnsize+lnCn)+ln∏EM
(10)

表2 歷史數據表
若有歷史項目數據如表2,令式(9)中COE=5,α=0.1,AAM=0.003(該值計算參考COCOMOII模型),采用線性回歸方式對A、B進行校準可得A=2.76,B=1.09。
以某裝備軟件研制為例,由于該企業長期從事該領域軟件系統開發,具有豐富的開發、實踐經驗和較為穩定的人員,但對產品的可靠性要求高,部分功能具有相當的復雜度,對產品的研制進度常常有很嚴格的要求。另外,由于領域空間較小,十分適合復用化開發,因此對可復用性要求較高。通過對研制任務的細化和分解,用基于復用的領域軟件成本估算模型對研制成本進行估算,模型中個參數取值如下。
若軟件的總代碼行數KLSOC=60,由表3計算可得EM=2.668,SF=18.97,采用章節3中的模型參數及校準值,由式(9)計算得C11=0.82,帶入計算可得PM11=1073.22人月。
表4記錄了該項目四種成本估算方式與實際使用成本的對比情況,可以看出使用本地校準的參數能夠更加準確地估算軟件成本,并且在當前狀態下軟件開發成本還未能體現出復用化帶來的成本縮減,這是由較低的開發復用率以及較高的“可再用性”成本驅動因子導致,隨著生產商開發活動的持續進行,領域空間內的復用率也將逐漸,軟件復用帶來的成本效益也將逐漸明顯。

表3 成本驅動因子與規模因子取值

表4 計算結果對照表
本文研究提出了一種基于領域空間的軟件復用成本估算模型,建立了領域空間、復用粒度、復用率、時間之間的關系,從而不僅描述了單次復用化軟件開發的項目成本,而且反映了企業在采用軟件復用技術進行項目開發過程中多次開發對項目成本的影響。采用線性回歸和歷史項目數據對模型中的系數進行修正,從而得到最符合軟件開發環境的系數用于下一次的成本估算。最后,通過實際數據驗證了校準系數、復用化對估算準確性的影響。
[1]Dr. Barry Boehm. COCOMOII Model Definition Manual[S]. University of Southern California,2002.
[2]王紅真,李竹林.軟件開發成本估算模型的研究[J].計算機與數字工程,2012,40(3):4-6.
[3]田永青.COCOMOII模型方法的研究與改進[D].上海:同濟大學學位論文,2008:25-34.
[4]李倩,馬永杰,杜亞江.軟件成本估算技術及應用[J].蘭州交通大學學報,2009,28(3):66-68.
[5]李莉.基于功能點的COCOMOII估算模型研究和應用[D].廈門:廈門大學學位論文,2008:33-36.
[6]蔣國萍,魏汝祥.基于主成分分析的軍用軟件成本類比估算[J].艦船電子工程,2011,31(4):112-113.
[7]Reifer DJ.軟件復用實踐[M].北京:機械工業出版社,2005:48-51.
[8]于林宇,孫文靖.王愛莉.一種基于構件軟件仿真的成本估算方法[J].計算機仿真,2006,23(12):93-95.
[9]李讓.軟件開發成本估算的研究與應用[J].艦船電子工程,2009(9):152-155.
[10]張冰,張汝波.一種軟件成本估算方法的評價方法[J].哈爾濱工業大學學報,2009(3):149-151.
[11]馬青,徐如志,田茂圣.非基于軟件復用的成本估算模型的復用改造模型及模型系數修正策略[J].計算機科學,2012,39(9):155-156.
SoftwareCostEstimateModelBasedonReuseandDomainSpatial
LIU Min
(China Ship Development and Design Center, Wuhan 430064)
As an important measure to control and manage software development cost, software cost estimate technology has become an important issue in software engineering. Currently software development based on reuse is becoming mainstream technology of software engineering, This paper modifies the COCOMOII model, establishes the software cost estimate model’s reuse transformation based on domain spatial which is used to analyze the relationship between software reuse, reuse granularity and cost, the concept of domain spatial is introduced to illustrate the relationship between reuse cost and development cycle. The paper also shows the strategy of using historical data to calibrate model coefficients. Finally, a case study proves the validity and applicability of the model.
software reuse, cost estimate, COCOMO model, reuse granularity
2013年11月20日,
:2013年12月28日
劉敏,女,高級工程師,研究方向:軟件工程。
TP311.5DOI:10.3969/j.issn1672-9730.2014.05.022