(中國(guó)艦船研究設(shè)計(jì)中心 武漢 430064)
基于領(lǐng)域空間的軟件復(fù)用成本估算模型*
劉敏
(中國(guó)艦船研究設(shè)計(jì)中心 武漢 430064)
作為軟件成本控制管理的重要措施,軟件開發(fā)成本的估算技術(shù)已經(jīng)成為軟件工程領(lǐng)域的一個(gè)重要課題,當(dāng)前基于復(fù)用的軟件開發(fā)正在成為軟件工程的主流。論文通過(guò)對(duì)COCOMOII模型的改造,建立基于領(lǐng)域空間的軟件復(fù)用成本估算模型,分析復(fù)用技術(shù)及復(fù)用粒度引起的成本變化,并通過(guò)引入領(lǐng)域空間的概念,分析復(fù)用成本與時(shí)間的關(guān)系。之后給出了對(duì)模型系數(shù)進(jìn)行本地化校準(zhǔn)的方法并通過(guò)實(shí)例驗(yàn)證模型的適用性。
軟件復(fù)用;成本估算;COCOMO模型;復(fù)用粒度
ClassNumberTP311.5
目前軍用裝備的研制及采購(gòu)定位在系統(tǒng)級(jí),即一次性包含了裝備的軟、硬件成本、試驗(yàn)成本、后期維護(hù)成本等,軟件產(chǎn)品的計(jì)價(jià)往往附著在系統(tǒng)或硬件中,缺乏成熟、合理的計(jì)價(jià)依據(jù),不利于軟件研制的成本核算和發(fā)展要求。
軍用裝備軟件研制具有很強(qiáng)的領(lǐng)域性特點(diǎn),非常適合應(yīng)用軟件復(fù)用技術(shù),以提高工作效率、縮短開發(fā)周期、降低開發(fā)成本?;趶?fù)用的軟件開發(fā)技術(shù)通常具有一致的技術(shù)體制,標(biāo)準(zhǔn)的接口描述語(yǔ)言,完善的自描述性,是目前較為理想的軟件復(fù)用方法。然而,采用基于復(fù)用的軟件研發(fā)模式在實(shí)施過(guò)程中將產(chǎn)生如下成本增量:
1)增加軟件設(shè)計(jì)成本。對(duì)軟件或模塊進(jìn)行領(lǐng)域、功能、和結(jié)構(gòu)的可復(fù)用設(shè)計(jì),進(jìn)行適當(dāng)粒度的拆分及可復(fù)用的接口設(shè)計(jì)[1~2];
2)增加維護(hù)和管理成本。建立構(gòu)件數(shù)據(jù)庫(kù)及其管理組件,完善文檔及檢索描述[1,3];
3)增加系統(tǒng)構(gòu)建成本。主要是對(duì)復(fù)用構(gòu)件的應(yīng)用理解,包括與開發(fā)目標(biāo)的一致性及適應(yīng)性修改分析等[1,3~4]。
正是這些成本增量以及對(duì)未來(lái)復(fù)用化預(yù)期的不確定性,使得企業(yè)軟件研制對(duì)復(fù)用持觀望態(tài)度。目前主要的軟件成本評(píng)估模型主要有:專家判定法[2~3,5]、類比估算法[2~3,5~6]、回歸分析法[2~3,5]、COCOMOII[1,5]等。專家判定法帶有很強(qiáng)的主觀性,類比估算法無(wú)法對(duì)差異部分進(jìn)行準(zhǔn)確的估計(jì),回歸分析法要求回歸變量間不能有較強(qiáng)的關(guān)聯(lián)性,COCOMOII成本估計(jì)模型通過(guò)成本驅(qū)動(dòng)因子和大量實(shí)測(cè)項(xiàng)目數(shù)據(jù)估算軟件成本,具有適用性強(qiáng)、可操作性好等特點(diǎn),是較為廣泛采用的一種軟件成本估算模型。
本文將在COCOMOII模型的基礎(chǔ)上,建立基于領(lǐng)域空間的軟件復(fù)用成本估算模型,并通過(guò)引入領(lǐng)域空間的概念,分析復(fù)用技術(shù)及復(fù)用粒度[7~9]引起的成本變化,以及復(fù)用成本[1,10~11]與時(shí)間的關(guān)系。估算企業(yè)在多個(gè)開發(fā)周期中的基于復(fù)用的軟件開發(fā)成本。
COCOMOII模型中以PM(人月)為單位對(duì)軟件成本進(jìn)行估算,將每個(gè)成本驅(qū)動(dòng)因子(EM)設(shè)定為很高、高、標(biāo)稱等不同的等級(jí),表征不同的值,以方便估算者主觀判斷。估算者根據(jù)項(xiàng)目運(yùn)行環(huán)境為每個(gè)成本驅(qū)動(dòng)因子及標(biāo)度因子確定一個(gè)等級(jí),并將該等級(jí)對(duì)應(yīng)的數(shù)值代入公式,即得到估算的結(jié)果。在不考慮自動(dòng)化轉(zhuǎn)換工具等效成本及需求變化引起的等效成本的情況下,其估算模型如式(1):
(1)
其中A及式(2)中的B為常數(shù),推薦值由COCOMOII統(tǒng)計(jì)給出,EMi為成本驅(qū)動(dòng)因子,Size為等效代碼量。在考慮軟件復(fù)用的情況下,參數(shù)E及Size的計(jì)算如式(2)、(3)。
(2)
Size=KNSLOC+KASLOC×(AAM)
(3)
式中參數(shù)定義如表1,各因子取值參考COCOMOII模型。
表1 模型參數(shù)
由上述兩式可以看出,在軟件規(guī)模及各成本驅(qū)動(dòng)因子一定的情況下,軟件開發(fā)成本取決于新開發(fā)代碼量與復(fù)用代碼量的規(guī)模,即復(fù)用率的大小。在基于復(fù)用的軟件生產(chǎn)模式下,復(fù)用的最小單元是軟件單元,因此,軟件單元的粒度在一定上決定了未來(lái)可復(fù)用的程度,與此同時(shí),軟件單元的粒度也影響著設(shè)計(jì)和開發(fā)的成本增量。
定義1 基本復(fù)用單元:不可再分的軟件單元,即其復(fù)用粒度為1。
定義2 最小復(fù)用單元:可通過(guò)復(fù)用化設(shè)計(jì)進(jìn)行再分的軟件單元,多個(gè)基本復(fù)用單元的聚合。
假設(shè)某領(lǐng)域軟件應(yīng)用環(huán)境中,涵蓋其所有需求的全局復(fù)用集為US,其等價(jià)代碼量可表示為
(4)
其中,Ei表示全局空間內(nèi)的基本復(fù)用單元,若軟件單元C的粒度COE為包含基本復(fù)用單元的數(shù)量,且軟件單元為最小復(fù)用單元,則其可復(fù)用等價(jià)代碼量為
(5)
隨著領(lǐng)域內(nèi)軟件研發(fā)活動(dòng)的不斷進(jìn)行,全局復(fù)用集US中的可復(fù)用軟件單元數(shù)將逐漸增加,軟件研制過(guò)程中的新研代碼量將逐步減少。若假定基本復(fù)用單元等價(jià)代碼量相等,且定義每次軟件研制的平均等價(jià)代碼量ESLOC(AVG)為αESLOC(US),α為規(guī)模比例因子(每次開發(fā)等價(jià)代碼量與全局空間等價(jià)代碼量的比例)。假設(shè)軟件復(fù)用過(guò)程中可復(fù)用軟件單元的命中概率符合均勻分布,則第n次與第n-1次開發(fā)過(guò)程中的復(fù)用代碼量如式(6)。
(6)
上式中第1項(xiàng)為n-1次開發(fā)中可復(fù)用的代碼量,第2項(xiàng)為n-1次開發(fā)中新生成的可復(fù)用代碼量與命中率的乘積。將等價(jià)代碼量轉(zhuǎn)換為代碼行數(shù),并推導(dǎo)可知第n次開發(fā)的代碼行數(shù)的通項(xiàng)如式(7)。
(7)
由此,由式(3)及式(1)可得到第n次軟件開發(fā)的復(fù)用化成本為
(8)
式(8)即為基于復(fù)用的領(lǐng)域軟件成本估算模型,從該模型可以看出,在其他復(fù)用因子一定的情況下,復(fù)用粒度在增加當(dāng)前軟件生產(chǎn)成本的同時(shí),也增加了領(lǐng)域空間內(nèi)未來(lái)軟件生產(chǎn)的復(fù)用率。由此,建立了基于復(fù)用的軟件生產(chǎn)成本與時(shí)間的關(guān)系。
如果軟件開發(fā)組織的所有項(xiàng)目中的某些因子總是擁有相同的等級(jí),應(yīng)該從模型中消除該因子,改用校準(zhǔn)常數(shù)來(lái)說(shuō)明。另外,模型參數(shù)都帶有主觀因素,且度量、參數(shù)的選取和確定均依據(jù)統(tǒng)計(jì)信息或經(jīng)驗(yàn)判斷,因此,可采用歷史數(shù)據(jù)對(duì)模型常數(shù)A、B進(jìn)行校準(zhǔn)。令:
(9)
設(shè)A=eβ0,B=β1,對(duì)式(8)進(jìn)行對(duì)數(shù)變換可得:lnPMn=β0+β1(lnsize+lnCn)+0.01∑SF(lnsize+lnCn)+ln∏EM
(10)
表2 歷史數(shù)據(jù)表
若有歷史項(xiàng)目數(shù)據(jù)如表2,令式(9)中COE=5,α=0.1,AAM=0.003(該值計(jì)算參考COCOMOII模型),采用線性回歸方式對(duì)A、B進(jìn)行校準(zhǔn)可得A=2.76,B=1.09。
以某裝備軟件研制為例,由于該企業(yè)長(zhǎng)期從事該領(lǐng)域軟件系統(tǒng)開發(fā),具有豐富的開發(fā)、實(shí)踐經(jīng)驗(yàn)和較為穩(wěn)定的人員,但對(duì)產(chǎn)品的可靠性要求高,部分功能具有相當(dāng)?shù)膹?fù)雜度,對(duì)產(chǎn)品的研制進(jìn)度常常有很嚴(yán)格的要求。另外,由于領(lǐng)域空間較小,十分適合復(fù)用化開發(fā),因此對(duì)可復(fù)用性要求較高。通過(guò)對(duì)研制任務(wù)的細(xì)化和分解,用基于復(fù)用的領(lǐng)域軟件成本估算模型對(duì)研制成本進(jìn)行估算,模型中個(gè)參數(shù)取值如下。
若軟件的總代碼行數(shù)KLSOC=60,由表3計(jì)算可得EM=2.668,SF=18.97,采用章節(jié)3中的模型參數(shù)及校準(zhǔn)值,由式(9)計(jì)算得C11=0.82,帶入計(jì)算可得PM11=1073.22人月。
表4記錄了該項(xiàng)目四種成本估算方式與實(shí)際使用成本的對(duì)比情況,可以看出使用本地校準(zhǔn)的參數(shù)能夠更加準(zhǔn)確地估算軟件成本,并且在當(dāng)前狀態(tài)下軟件開發(fā)成本還未能體現(xiàn)出復(fù)用化帶來(lái)的成本縮減,這是由較低的開發(fā)復(fù)用率以及較高的“可再用性”成本驅(qū)動(dòng)因子導(dǎo)致,隨著生產(chǎn)商開發(fā)活動(dòng)的持續(xù)進(jìn)行,領(lǐng)域空間內(nèi)的復(fù)用率也將逐漸,軟件復(fù)用帶來(lái)的成本效益也將逐漸明顯。
表3 成本驅(qū)動(dòng)因子與規(guī)模因子取值
表4 計(jì)算結(jié)果對(duì)照表
本文研究提出了一種基于領(lǐng)域空間的軟件復(fù)用成本估算模型,建立了領(lǐng)域空間、復(fù)用粒度、復(fù)用率、時(shí)間之間的關(guān)系,從而不僅描述了單次復(fù)用化軟件開發(fā)的項(xiàng)目成本,而且反映了企業(yè)在采用軟件復(fù)用技術(shù)進(jìn)行項(xiàng)目開發(fā)過(guò)程中多次開發(fā)對(duì)項(xiàng)目成本的影響。采用線性回歸和歷史項(xiàng)目數(shù)據(jù)對(duì)模型中的系數(shù)進(jìn)行修正,從而得到最符合軟件開發(fā)環(huán)境的系數(shù)用于下一次的成本估算。最后,通過(guò)實(shí)際數(shù)據(jù)驗(yàn)證了校準(zhǔn)系數(shù)、復(fù)用化對(duì)估算準(zhǔn)確性的影響。
[1]Dr. Barry Boehm. COCOMOII Model Definition Manual[S]. University of Southern California,2002.
[2]王紅真,李竹林.軟件開發(fā)成本估算模型的研究[J].計(jì)算機(jī)與數(shù)字工程,2012,40(3):4-6.
[3]田永青.COCOMOII模型方法的研究與改進(jìn)[D].上海:同濟(jì)大學(xué)學(xué)位論文,2008:25-34.
[4]李倩,馬永杰,杜亞江.軟件成本估算技術(shù)及應(yīng)用[J].蘭州交通大學(xué)學(xué)報(bào),2009,28(3):66-68.
[5]李莉.基于功能點(diǎn)的COCOMOII估算模型研究和應(yīng)用[D].廈門:廈門大學(xué)學(xué)位論文,2008:33-36.
[6]蔣國(guó)萍,魏汝祥.基于主成分分析的軍用軟件成本類比估算[J].艦船電子工程,2011,31(4):112-113.
[7]Reifer DJ.軟件復(fù)用實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2005:48-51.
[8]于林宇,孫文靖.王愛莉.一種基于構(gòu)件軟件仿真的成本估算方法[J].計(jì)算機(jī)仿真,2006,23(12):93-95.
[9]李讓.軟件開發(fā)成本估算的研究與應(yīng)用[J].艦船電子工程,2009(9):152-155.
[10]張冰,張汝波.一種軟件成本估算方法的評(píng)價(jià)方法[J].哈爾濱工業(yè)大學(xué)學(xué)報(bào),2009(3):149-151.
[11]馬青,徐如志,田茂圣.非基于軟件復(fù)用的成本估算模型的復(fù)用改造模型及模型系數(shù)修正策略[J].計(jì)算機(jī)科學(xué),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日
劉敏,女,高級(jí)工程師,研究方向:軟件工程。
TP311.5DOI:10.3969/j.issn1672-9730.2014.05.022