范朝陽 胡 欣
(1.北京市西三環(huán)中路19號 北京 100841)(2.武漢數(shù)字工程研究所 武漢 430205)
隨著信息技術(shù)在軍用產(chǎn)品中的廣泛應(yīng)用,軟件已經(jīng)成為武器裝備的重要組成部分,軍用軟件在某種程度上已經(jīng)能夠直接影響裝備戰(zhàn)斗力的形成和保持。因此,高效研發(fā)高質(zhì)量的軟件對于國防建設(shè)至關(guān)重要。隨著軟件的比重越來越大,軍用軟件作用和地位日益突顯,費用需求不斷增加,軍用軟件單獨計價非常必要。軟件是否有必要計價?如何進入裝備價格管理體系?軟件成本如何科學(xué)核算?等相關(guān)問題已經(jīng)擺在裝備價格管理工作者的面前,必須盡早提出解決方法[1]。總結(jié)軍用軟件計價的必要性主要基于以下四點:
1)隨著信息技術(shù)的軍用產(chǎn)品中的廣泛應(yīng)用,軟件已成為武器裝備的重要組成部分,在裝備所占的比重不斷提高,在某種程度上直接影響裝備戰(zhàn)斗力的形成和保持。
2)伴隨計算機技術(shù)和裝備的發(fā)展,一些軍用軟件已經(jīng)不再是硬件的附屬產(chǎn)品,而作為單獨的產(chǎn)品應(yīng)用于武器裝備中。其地位的重大變化和不斷提高的費用也要求裝備管理工作必須將軍用軟件納入裝備價格管理體系之中。
3)軟件的開發(fā)、標(biāo)準化以及使用后的維護、升級等工作與硬件產(chǎn)品有較大不同,當(dāng)前缺乏對軟件產(chǎn)品研發(fā)、升級等各類工作的成本進行合理評價的標(biāo)準。
4)海軍武器系統(tǒng)中包含大量的軟件,由于歷史原因,軟件產(chǎn)品沒有單獨列裝、單獨計價,而是隨硬件產(chǎn)品研制和定價。存在一些研究單位為提高收益,刻意增加硬件研制,造成了臺位冗余的現(xiàn)象,影響了整個裝備體系的經(jīng)濟性。
綜上所述,研究科學(xué)的軟件計價標(biāo)準,合理評價軟件開發(fā)費用并將硬件與軟件的費用分離,十分必要。
市場上軟件成本計價估算方法主要有算法模型、專家判定、類比法、差別法、自頂向下法、自底向上法等[2~5],其技術(shù)可分為六類,主要為基于模型的技術(shù)、面向?qū)W習(xí)的技術(shù)、基于線性回歸的技術(shù)、基于神經(jīng)網(wǎng)絡(luò)的技術(shù)、多種組合技術(shù)等[6~9]。而這些方法和技術(shù)主要用于民用方面,如何結(jié)合軍用軟件自身高安全性、高可靠性、高適應(yīng)性、實時性等特點進行合理的計價,是軍工企業(yè)軟件管理亟待解決的問題,本文利用COCOMO-Ⅱ模型研究了軍用軟件計價方法,文中第二部分對基本COCOMO模型和COCOMO-Ⅱ模型進行了介紹,然后結(jié)合軍用軟件特點對COCOMO-Ⅱ模型進行了修正;文中第三部分結(jié)合具體實例,進行了某軍工企業(yè)軟件的COCOMO-Ⅱ模型計價;最后給出了相關(guān)結(jié)論。
在眾多的軟件成本估算方法中,構(gòu)造性成本模型(COCOMO)是目前影響最大、最具代表性的模型方法,該模型采用一種自底向上的微觀參數(shù)估計方法,使用成本驅(qū)動因素從低端對軟件環(huán)境進行描述,最早由Barry Boehm為軟件項目提供準確的成本和進度估算的一個構(gòu)造性的標(biāo)準化模型而提出,將軟件進行分割,估算出各部分的工作量和開發(fā)時間,最終匯總為項目預(yù)算。后來,Boehm和南加州大學(xué)USE軟件工程中心不斷對COCOMO模型進行改進,以適應(yīng)在軟件生命周期、技術(shù)、組件和技術(shù)等方面的明顯變化,并發(fā)布了COCOMO-Ⅱ模型[1]。在民用商用軟件成本計價估算中運用COCOMO-Ⅱ模型在實踐中估算的軟件開發(fā)成本與實際成本相差不到20%,進度相差不到46%,已經(jīng)成為世界上使用最廣泛、成本估算最準確的模型之一,本文即研究該模型在我國軍用軟件計價中的應(yīng)用。
COCOMO模型常被分為三個層次,即基本模型、中級模型和高級模型,具體說來:
1)基本COCOMO模型:將軟件開發(fā)工作量作為程序規(guī)模的函數(shù)來進行計算,程序規(guī)模以估算的代碼行來表示。
2)中級COCOMO模型:將軟件開發(fā)工作量作為程序規(guī)模及一組“成本驅(qū)動因子”的函數(shù)來進行計算,成本驅(qū)動因子包括對產(chǎn)品、硬件、人員及項目屬性的主觀評估。
3)高級COCOMO模型:包含了中級模型的所有特性,并結(jié)合了成本驅(qū)動因子對軟件工程過程中每一個步驟(分析、設(shè)計等)的影響的評估。
COCOMO模型都采用相同的計算形式:
其中,Effort以人月為單位的工作量;Size是以千源代碼行(KLOC)計數(shù)的程序規(guī)模;EAF是一個工作量調(diào)整因子,在基本模型中取值1;a和b是兩個隨開發(fā)模式而變化的因子。
根據(jù)計算出的工作量,可以由式(2)計算所需的開發(fā)時間:
其中,Effort是式(1)中求出的以人月為單位的工作量,c、d是隨開發(fā)模式而改變的因子。
通過基本的COCOMO模型,就可以快速預(yù)測出軟件其成本和進度等信息。COCOMO基本模型能給出一個快速而簡略的估計,但其結(jié)果的精度不夠。它沒有考慮到開發(fā)技術(shù)、人員水平等環(huán)境因素的變化。因此Boehm在中級模型中引入了15個成本驅(qū)動因素來把軟件其的環(huán)境因素考慮進來。成本驅(qū)動因素分為四個主要類型:產(chǎn)品屬性、硬件屬性、人員屬性及項目屬性。每個成本驅(qū)動因素在六個級別上取值(從“很低”到“很高”)??梢詮腂oehm提供的表中來確定工作量乘數(shù)。所有工作量乘數(shù)的乘積就是工作量調(diào)整因子EAF,即:
其中,EMi是從公認的值表中得到成本驅(qū)動因子的值。
20世紀90年代以來,隨著計算機技術(shù)的發(fā)展軟件工程領(lǐng)域發(fā)生了巨大變化,出現(xiàn)了快速應(yīng)用開發(fā)模型、軟件重利用、再工程、CASE和面對對象方法及軟件過程成熟度模型等一系列軟件工程方法和技術(shù)。原始的COCOMO模型已無法適應(yīng)新的軟件成本估算和過程管理的需求,因此Boehm根據(jù)未來軟件市場的發(fā)展趨勢提出了COCOMO-Ⅱ模型。相較于COCOMO,新型的COCOMO-Ⅱ中主要的變化如下:
1)用三個螺旋式的生命周期模型,即用于估算早期原形工作量的應(yīng)用組合模型、早期設(shè)計模型和后體系結(jié)構(gòu)模型。在現(xiàn)代軟件工程研究結(jié)果的基礎(chǔ)上,軟件市場可劃分為基礎(chǔ)條件、系統(tǒng)集成、程序自動化生成、應(yīng)用集成、最終用戶編程五個部分,COCOMO-Ⅱ模型通過三個螺旋式的生命周期模型支持上述的五種軟件項目。
2)使用五個規(guī)模因子計算項目規(guī)模經(jīng)濟性的指數(shù),代替了原始模型中按基本、中級、詳細模型分別固定指數(shù)的方法。
3)刪除的成本驅(qū)動因素有虛擬機場失性(VIRT)、計算機周轉(zhuǎn)時間(TURN)、虛擬機經(jīng)驗(VEXP)、語 言 經(jīng) 驗 (LEXP)、現(xiàn) 代 編 程 實 踐(MODP)。
4)新增了成本驅(qū)動因素有文檔編制(DOCU)、要求的重復(fù)使用(RUSE)、平臺易失性(PVOL)、平臺經(jīng)驗(PEXP)、語言和工具經(jīng)驗(LTEX)、人(SITE)。
COCOMOⅡ模型中應(yīng)用組合模型是基于對象點的度量模型,它通過計算屏幕、報表、第三代語言(3GL)模塊等對象點的數(shù)量來確定基本的規(guī)模,每個對象點都有權(quán)重,由一個三級的復(fù)雜性因子表示,將各個對象點的權(quán)值累加起來得到一個總體規(guī)模,然后再針對復(fù)用進行調(diào)整;早期設(shè)計模型,在項目開始后的一個階段或者螺旋周期通常包括探索體系結(jié)構(gòu)的可供選擇方案或增量開發(fā)測量,為支持這一活動,提出了一個早期設(shè)計模型,這一模型使用功能點和等價代碼行估算規(guī)模;后體系結(jié)構(gòu)模型,一旦項目進入開發(fā)階段,就必然確定一個具體的生命周期體系結(jié)構(gòu),此時項目就能夠為估算提供更多更準確的信息,COCOMO-Ⅱ提出的后體系結(jié)構(gòu)模型即是為這一階段提供支持。下面對應(yīng)用組合模型和后體系結(jié)構(gòu)模型進行重點介紹:
1)應(yīng)用組合模型
應(yīng)用組合模型用來解決人機交互、系統(tǒng)接口、技術(shù)成熟度等具有潛在高風(fēng)險的內(nèi)容,通過計算屏幕、報表、第三代語言組件的對象點數(shù)來確定一個初始的規(guī)模測量。屏幕對象和報告對象被設(shè)成簡舉、中等或困難,然后給各類對象點數(shù)加上權(quán)重,得到總對象點數(shù)。若還要考慮重復(fù)使用情況,假定項目中有3%的對象是重用以前的,則總的新對象點數(shù)NOP計算如下:
計算工作量的公式為
其中,E是以人月為單位的工作量,PROD為對象
其中Fi是成本驅(qū)動變量的不同狀態(tài)下的取值。
后體系結(jié)構(gòu)模型使用17個工作量乘法因子來調(diào)整工作量,它們被分為四類:產(chǎn)品、計算機、人員和項目,每一類又進行細分,并按照六個等級進行評分。通過COCOMO-Ⅱ模型,軟件估計者就可以快速預(yù)測出軟件的開發(fā)成本和進度等信息。
通過COCOMO-Ⅱ模型,軟件估計者就可以快速預(yù)測出軟件的開發(fā)成本和進度等信息。但由于COCOMO模型是模型設(shè)計者依據(jù)當(dāng)時的軟件行業(yè)歷史項目數(shù)據(jù)所計算,模型內(nèi)的參數(shù)以及成本驅(qū)動因子都與當(dāng)時的軟件環(huán)境相關(guān)。運用本模型來計算軍用軟件行業(yè)成本時,就會出現(xiàn)模型中因子與軟件環(huán)境不匹配的問題,在我們運用該模型時,就要考慮我國獨特的軍用軟件行業(yè)背景,對模型中與行業(yè)環(huán)境相關(guān)的因子進行校正,改善它的適用背景點數(shù)/人月,即軟件生產(chǎn)效率。
2)后體系結(jié)構(gòu)模型
后體系結(jié)構(gòu)模型是指在項目確定開發(fā)之后,對軟件功能結(jié)構(gòu)已經(jīng)有了一個基本了解的基礎(chǔ)上,通過源代碼行數(shù)或功能點數(shù)來計算軟件工作量和進度,使用5個規(guī)模度量因子和17個成本驅(qū)動因素進行調(diào)整。
工作量計算公式為
其中,wi為規(guī)模度量因子,也成為定標(biāo)因素。
工作調(diào)整因子EAF根據(jù)設(shè)定的17個成本驅(qū)動因子的評分來計算:與環(huán)境,從而使該模型服務(wù)于我國軍用軟件行業(yè),幫助軍用軟件行業(yè)估算出項目的工作量和進度并協(xié)同決定項目可行性。
在對COCOMO-Ⅱ模型進行修正時,主要是考慮由于經(jīng)驗得出的在模型中設(shè)定的成本驅(qū)動因子。對這方面根據(jù)我國軍用軟件行業(yè)的特性和軍用軟件業(yè)的大量數(shù)據(jù)進行修正。
在對成本驅(qū)動因子進行修正時,我們主要根據(jù)以下原則來進行完善:
1)環(huán)境影響原則。在軍用軟件行業(yè)中,對有些因素并不能直接劃分來對軟件開發(fā)產(chǎn)生影響,這些因素在設(shè)立時,是國外軟件環(huán)境下的產(chǎn)物,我國的軍用軟件環(huán)境并不顯著。
2)適用性原則。對成本驅(qū)動因子,并不因為用歷史數(shù)據(jù)檢驗過就認為其對軍用軟件業(yè)有影響,關(guān)鍵是看這個指標(biāo)在軍用軟件行業(yè)下的作用是否顯著,以及在軍用軟件行業(yè)下的因素影響。
3)主成分原則。軟件開發(fā)過程中,各種因素會對其產(chǎn)生不同的影響,但是一些因素是偶然的還有一些是必然的,在這里主要關(guān)注的是對所有項目會產(chǎn)生影響的因素,且這些因素的影響有大有小,過于微弱的影響我們可以暫時忽略不計,我們選擇成本驅(qū)動因子時,主要關(guān)注對軟件開發(fā)產(chǎn)生較大的影響程度的因素,并且這些因素對所有項目均有影響。
4)軟件分類原則。軟件是企業(yè)開發(fā)的文檔和計算機程序,不同的作用需要開發(fā)不同類型的軟件,一般軟件分為系統(tǒng)軟件和應(yīng)用軟件,但是也會根據(jù)軟件的規(guī)模進行劃分,不同軟件類型和不同規(guī)模下的軟件在進行成本估算時,需要重點考慮的因素會有所不同,因此在對成本驅(qū)動因子進行修正時,要將軟件類型規(guī)模與修正方式結(jié)合運用。
1.闊盤吸蟲病。免疫等綜合預(yù)防措施有 (1)加強飼養(yǎng)管理,搞好牛舍的環(huán)境衛(wèi)生,增強抗病能力; (2)每年的初冬和早春各進行1次預(yù)防性驅(qū)蟲;(3)可實行劃區(qū)放牧,以避免感染; (4)注意消滅第一宿主蝸牛。
5)客觀性原則。在對軟件成本驅(qū)動因子進行分析修正時,主要依據(jù)軍用軟件行業(yè)目前的特性進行分析,但是不同的軍工企業(yè)面對的問題是有所不同的,在不同軍工企業(yè)下進行分析時,可依據(jù)基本修正方式結(jié)合本軍工企業(yè)的特性來進行分析運用。
常數(shù)A可以運用大量的歷史數(shù)據(jù),并進行回歸分析來進行修正,使之符合我國軍用軟件行業(yè)特性。目前國外計算主要是依據(jù)當(dāng)時歷史環(huán)境中大量的軟件數(shù)據(jù)估算得到,在COCOMO后體系結(jié)構(gòu)模型中,通常取值2.55,在COCOMOⅡ中模型的校正常量是2.94,但是在國內(nèi)軍用軟件由于難以取材于大量的歷史數(shù)據(jù),估算時存在一定的困難,未來可以在軟件行業(yè)發(fā)展的基礎(chǔ)上,采取大量歷史數(shù)據(jù)回歸的方法估算。
指數(shù)因子B反映了項目的規(guī)模經(jīng)濟性,當(dāng)它大于1時所需的工作量的增加速度大于軟件規(guī)模的增加速度,體現(xiàn)出規(guī)模非經(jīng)濟性;當(dāng)它小于1則表示規(guī)模經(jīng)濟性。
指數(shù)因子B主要是由規(guī)模度量因子w決定的,而定標(biāo)因素在COCOMO模型中主要設(shè)定了五個方面:已有項目經(jīng)驗(PREC)、開發(fā)過程的靈活性(PLEX)、是否需要風(fēng)險分析(RESL)、團隊合作狀況(TEAM)和軟件過程凝聚力(PMAT)。依據(jù)我國軍用軟件行業(yè)的特性,對這五個因素進行分析并修正,使之適合我國軍用軟件業(yè)特性。
下面以我國某軍工企業(yè)申請的內(nèi)部核心資產(chǎn)庫四項軟件著作權(quán)進行COCOMO-Ⅱ模型計價分析,以說明本文的模型和方法在軍用軟件計價方面的應(yīng)用,軟件如下:
1)**信息管理系統(tǒng)V1.0
2)**信息管理系統(tǒng)V2.0
3)**信息管理系統(tǒng)軟件,簡稱“標(biāo)準版C1.0”;
4)**信息管理系統(tǒng)軟件,簡稱“專業(yè)版C1.01”;
以上四項軟件著作權(quán)中第1項是最基本的軟件,第2項是在第1項的思路框架基礎(chǔ)上開發(fā)成功的,第3項在第2項的基礎(chǔ)上進行了修改和擴展,第4項在第3項的基礎(chǔ)上進行了修改和擴展。因此第4項軟件著作權(quán)登記表中登記的源程序量(行)涵蓋了這四項計算機軟件的全部工作量,這四項軟件全部實際投入的成本也可以說是第4項軟件的投入成本,因此,對第4項軟件著作權(quán)的評估價值也就是這四項計算機軟件著作權(quán)的評估價值。**信息管理系統(tǒng)軟件(專業(yè)版C1.01)是一個復(fù)雜程度較低的通用軟件,主要應(yīng)用在軍工企事業(yè)單位內(nèi)部財務(wù)業(yè)務(wù)。軟件使用的編程語言是Visual C++,編程語言的版本號是Visual Studio 2005,源程序量(行)是969620行。
采用COCOMO-Ⅱ模型進行上述軟件的成本估算,針對**信息管理系統(tǒng)軟件(專業(yè)版C1.01),利用如下的成本公式進行估算:
其中,P是估算的軟件價格;Effort是以人月為車位的人力工作量,可通過上述的COCOMO-Ⅱ模型計算得到;U是軟件開發(fā)階段單位工作量成本;ACT為維護參數(shù);k是軟件行業(yè)平均利潤率。
1)常數(shù)A
A是校正常數(shù),在后體系結(jié)構(gòu)模型中,模型的校正常量取值為2.94,**信息管理系統(tǒng)軟件屬于復(fù)雜程度較低的通用軟件,選擇常數(shù)基本取值,因此A取值為2.94。
2)指數(shù)因子B
指數(shù)因子B反映的是規(guī)模經(jīng)濟,可根據(jù)規(guī)模度量因子的等級劃分及取值利用公(7)進行計算
3)KLOC
KLOC是以千源代碼行計數(shù)的程序規(guī)模。**信息管理系統(tǒng)軟件介紹中注明的源程序量(行)為969620行。經(jīng)了解,該軍工企業(yè)的注釋行為總量的20%,故源程序指令行為775.7千行。
4)EAF
工作調(diào)整因子EAF根據(jù)設(shè)定的成本驅(qū)動因子的評分來計算的,我們在上節(jié)中介紹COCOMO-Ⅱ模型時,模型中的17個成本驅(qū)動因子分別劃分不同等級,在此我們對成本驅(qū)動因子的級別根據(jù)**信息管理系統(tǒng)軟件(專業(yè)版C1.01)的特性進行判定取值。
5)U
U是軟件開發(fā)階段單位工作量成本,是由軟件開發(fā)階段的總成本除以當(dāng)時的實際工作量。即:
F是軟件開發(fā)的直接成本、間接成本、期間費用的總和,一般主要考慮人員工資、軟硬件投入主要費用。G是實際工作量,一般為開發(fā)人員與計算機軟件實際工作時間之積,單位為人月。經(jīng)了解,該軍工企業(yè)在開發(fā)(專業(yè)版C1.01)軟件上共投入了10名開發(fā)人員,總費用為2512170按照正常工作量折算,歷時4個月。實際工作量為40人/月。因此根據(jù)公式可得到U=2512170/40=62804.25元/人月
6)ACT
系統(tǒng)軟件的維護成本為糾正性維護、預(yù)防性維護、適應(yīng)性和完善性更改,由于該軟件為應(yīng)用性軟件,并且只是應(yīng)用于初級適用,用于行業(yè)內(nèi)的內(nèi)部管理工作,因而維護成本相對較低。但是在使用過程中還發(fā)生部分改錯糾正成本。依據(jù)軟件規(guī)模的大小來判定維護參數(shù)的值,軟件規(guī)模小,且軟件復(fù)雜程度較低,因此軟件的維護成本相對較低,依據(jù)查表成本維護參數(shù)ACT取值0.15[1]。
經(jīng)過一系列計算,該軍工企業(yè)開發(fā)的**信息管理系統(tǒng)軟件(專業(yè)版C1.01)真實的成本是625.18萬元,用本文方法評估的計價為719.52萬元。由計算結(jié)果可知,采用本文方法計算的軍用軟件計價誤差在15.09%,可以很好地滿足軍用軟件計價需求,表明了本文方法的有效性,值得推廣和應(yīng)用。
軍用軟件成本估算在軍用軟件項目管理中占據(jù)重要地位,針對軍工企業(yè)軍用軟件開發(fā)管理中的軟件計價問題,文中結(jié)合軍用軟件自身的特點利用COCOMO-Ⅱ模型進行了軍用軟件計價方法研究,并給出了多個模型參數(shù)的計算方法,最后結(jié)合實例進行了軍用軟件計價。文中的實例軟件計價結(jié)果誤差在15.09%,表明了COCOMO-Ⅱ模型在軍用軟件計價中的有效性,這對實際中軍工企業(yè)軍用軟件計價具有較強的指導(dǎo)意義。
[1]Barry W.Boehm.Software Engineering Economics[M].New York:Prentice Hall,1991.
[2]Lee Anita,Cheng Chun Hung,Balakrishnan J.Software development cost estimation:Integrating neural network with cluster analysis[J].Infonnation & Management,1998,34(1):1-9.
[3]Iman Attarzadeh,Siew Hock Ow.Proposing a New Software Cost Estimation Model Based on Artificial Neural Networks[J].IEEE Software Engineering,2010:487-491.
[4]K.Vinay Kumar,V.Ravi,Mahil Cart,et al.Software development cost estimation using wavelet neural networks[J].The Journal of Systems and Software,2008(81):1853-1867.
[5]Sternberg,R.Component Processes in Analogical Reasoning[J].Psychological Reviea,1977,84:353-378.
[6]X.S HUANG,Luiz F.Capretz,Jing Ren.ANeuro-Fuzzy Model for Software Cost Estimation[J].Computer Society,2003:1-5.
[7]Nasser Tadayon.Neural Network Approach for Software Cost Estimation[C]//Proceedings of the IEEE International Conference on Information Technology:Coding and Computing,2005,4(2):815-818.
[8]Wolfhart B.Goethert,Elizabeth K.Bailey,Mary B.Busby.Software Effort &Schedule Measurement:A Framework for Counting Staff-h(huán)ours and Reporting Schedule Information[D].Pittsburgh:Carnegie Mellon University,1992.
[9]Williani A.Florac,Robert E.Park,Anita D.Carleton.Practical Software Measurement:Measuring for Process Management and Improvement[D].Pittsburgh:Carnegie Mellon University,1997.