曹楊華 曹健 李虎/中國航空無線電電子研究所
隨著軟件和信息技術(shù)應(yīng)用的飛速發(fā)展,我們正在進入一個“軟件定義一切”的時代,全球軟件行業(yè)處于成長期向成熟期轉(zhuǎn)變的階段,我國的軟件行業(yè)正處于高速發(fā)展的水平[1]。裝備軟件作為信息化裝備的靈魂,其比重不斷增大,作用日益突出,軟件研制的復(fù)雜度也越來越高,使得軟件成本逐漸升高,軟件復(fù)雜度和價格已經(jīng)成為產(chǎn)品和系統(tǒng)研發(fā)的重要風(fēng)險來源。

表1 規(guī)模估計方法優(yōu)缺點比較
由于軟件本身的復(fù)雜度,估算人員經(jīng)驗的缺乏和人為的錯誤、估算工具的缺乏等原因,軟件項目的成本估算和實際情況相差甚遠(yuǎn),因此,軟件估算錯誤已經(jīng)被列為軟件項目失敗的四大主要原因之一[1]。軟件的規(guī)模是軟件度量體系中重要的度量指標(biāo),它是決定軟件成本的重要因素,業(yè)界提出了很多規(guī)模估計方法,常用的有專家法、代碼行(Line of Code,LOC)、COCOMOII 模型、功能點分析(Function Point Analysis,F(xiàn)PA)等方法,這些方法各有優(yōu)缺點,具體如表1所示。
功能點分析方法是一種以功能點(Function Point)為單位測量軟件功能規(guī)模的度量方法,根據(jù)Daich和Kitchenharm提出的分類方法,功能點分析方法是一種分解類的規(guī)模度量方法,即把復(fù)雜系統(tǒng)分解成子系統(tǒng)進行評估的方法,它主要基于軟件文件對功能性需求進行分析與度量,其結(jié)果以功能點的形式表示功能規(guī)模,功能點分析方法經(jīng)過近40年的發(fā)展,以IFPUG 方法為主線,演化了NESMA、COSMIC和MarkII這三種主要方法和十幾個分支方法[1]。功能點分析法已于2007 年被納入ISO14143標(biāo)準(zhǔn)系統(tǒng),目前符合ISO 標(biāo)準(zhǔn)的功能點方法共有5種,如表2所示。
裝備軟件計價依據(jù)的《某軟件研制概算計價規(guī)范(試行)》中軟件功能規(guī)模估算參考了NESMA標(biāo)準(zhǔn)。

表2 符合ISO標(biāo)準(zhǔn)的功能點方法

圖1 NESMA方法六步驟
NESMA 方法借鑒IFPUG,主要分為6 個步驟[1],如圖1所示。
根據(jù)使用階段和收集到文檔清晰度不同,NES‐MA 方法提供了三種類型的功能點估算方法,依次是:指示功能點計數(shù)、估算功能點計數(shù)、詳細(xì)功能點計數(shù),三類方法的計數(shù)比較如表3所示。
軟件成本估算有兩個基本的要求:一是估算要有一定的準(zhǔn)確性,不夠精確的估算只會給軟件開發(fā)帶來危機和災(zāi)難,二是估算方法要力求節(jié)省勞動力。由于指示功能點誤差較大,詳細(xì)功能點需要完善的文檔材料,一般采用估算功能點計數(shù),將用戶功能需求分解到可以被估算的最小功能單元。
《某軟件研制概算計價規(guī)范(試行)》中軟件功能規(guī)模估算借鑒了NESMA中的估算功能點計數(shù)的類型,如表4所示,根據(jù)估算功能點計數(shù)的參數(shù)設(shè)置,原始功能點計數(shù)公式為:
UPF=N1×nILF+N2×nEIF+N3×nEI+N4×nEO+N5×nEQ
其中:nILF、nEIF、nEI、nEO、nEQ 分別為ILF、EIF、EI、EO、EQ的數(shù)量。
以規(guī)模為基礎(chǔ)估算工時,需要考慮相關(guān)的一些調(diào)整因素。規(guī)模調(diào)整因子:

表3 NESMA三種類型功能點估計方法[1]

表4 NESMA功能需求名稱及含義
VAF=1.3+0.1×(關(guān)鍵性F1+分布式處理F2+性能F3+計算機資源限制F4+復(fù)雜處理F5+可重用性F6+多環(huán)境F7)
其中:F 為0 或1 或2,規(guī)模調(diào)整因子取值范圍為1.3~2.7。
調(diào)整后的功能點計算公式。
FP=UPF×VAF
工作量AE=FP×PDR
其中:PDR 為功能點消耗率,單位為人時每功能點。
某態(tài)勢系統(tǒng)軟件,具備態(tài)勢顯示和計劃制定功能,由態(tài)勢組件和計劃組件兩個模塊組成。態(tài)勢組件主要顯示實時航跡信息、航線信息、空域信息、氣象信息,可以開展手工態(tài)勢標(biāo)注;計劃組件主要具備飛行計劃的編輯、制定,航線的增加、修改、刪除,航點信息的增加、修改、刪除等功能。對此系統(tǒng)開展基于功能點模型,計算軟件工作量;依據(jù)組織資產(chǎn)數(shù)據(jù),估算軟件工作量,統(tǒng)計實際工時系統(tǒng)數(shù)據(jù),并對這三種方法開展比較。
1.收集現(xiàn)有文檔:一般功能點計數(shù)根據(jù)經(jīng)過正式評審的文件為依據(jù),本項目根據(jù)軟件研制任務(wù)書。
2.確定軟件用戶:軟件用戶為系統(tǒng)操作員、關(guān)聯(lián)系統(tǒng)。
3.確定估算類型:估算功能點計數(shù)。
4.識別功能部件并確定復(fù)雜度,見表5:

表5 功能部件
原始功能點:UPF=386
調(diào)整因子:VAF=1.3+0.1×(關(guān)鍵性1+分布式處理2+性能2+計算機資源限制1+復(fù)雜處理0+可重用性1+多環(huán)境1)=2.1
根據(jù)《某軟件研制概算計價規(guī)范(試行)》計算功能點數(shù)為:
FP=844.6842
工作量:
AE=FP×PDR=844.6842×7.12=6014.1518人時
5.與用戶驗證結(jié)果:與系統(tǒng)操作員確認(rèn)功能點數(shù)。
6.與功能點分析專家驗證估算結(jié)果:與估算專家討論功能點識別,并驗證結(jié)果。
此軟件功能為新研產(chǎn)品,根據(jù)組織的項目經(jīng)驗數(shù)據(jù),估算的代碼行為64200 行,軟件的開發(fā)效率為0.2小時/行。
在最后一層灰土壓實后,進行墊層放線。為了進一步控制基礎(chǔ)水平,在墊層模板支設(shè)過程中,技術(shù)人員要使用水準(zhǔn)儀對模板四角進行標(biāo)高測量,以保證工程質(zhì)量。
組織項目總工作量=項目工程活動工作量+項目管理與支持工作量=項目工程活動工作量+0.22×項目工程活動工作量=(開發(fā)效率×新研代碼行+開發(fā)效率×復(fù)用因子×復(fù)用代碼行)×1.22=(0.2×64200+0.2×0.7×0)×1.22=15664.8人時
此軟件功能已基本完成,根據(jù)工時系統(tǒng)數(shù)據(jù)統(tǒng)計,如表6所示。
綜合費用采取基于軟件功能規(guī)模和行業(yè)平均費用水平的估算方法,按照軟件研發(fā)工作量乘以軟件研發(fā)人月綜合費率計算,人月按照176 人時等于1人月計算,根據(jù)中國電子技術(shù)標(biāo)準(zhǔn)化研究院等三家單位聯(lián)合發(fā)布的2019年中國軟件行業(yè)基準(zhǔn)數(shù)據(jù),上海軟件開發(fā)人月費率2.85萬元/人月。計算出的綜合費用見表7。
可以看出,此軟件采用功能點計數(shù)法估算的工作量和實際數(shù)據(jù)有一定的差別,三種方法估算的軟件成本相當(dāng)于用三種不同的標(biāo)尺對軟件的度量,采用功能點計數(shù)是從用戶的角度對軟件的功能進行度量,國外研究已有豐富的經(jīng)驗積累,方法相對科學(xué),從內(nèi)部邏輯文件、外部接口文件、輸入、輸出、查詢等五個維度度量軟件的價值,用戶易于理解和認(rèn)同,但在我國裝備軟件領(lǐng)域使用時,缺少相關(guān)經(jīng)驗值,標(biāo)尺的刻度還需要適當(dāng)調(diào)整。采用組織經(jīng)驗數(shù)據(jù)對工作量估算采用的是經(jīng)驗法,是組織數(shù)據(jù)的平均值,是不同類型軟件的歷史數(shù)據(jù)總結(jié)整理而來,具有一定的不準(zhǔn)確性。工時數(shù)據(jù)的統(tǒng)計是站在開發(fā)者的角度衡量工作時間,不同開發(fā)人員的效率不一,不能直接體現(xiàn)軟件本身的價值輸出,在裝備軟件領(lǐng)域中,工時數(shù)據(jù)包含的內(nèi)容較多,比如保密性、數(shù)據(jù)交換輸入輸出工時等人員的管理時間也包含在統(tǒng)計范圍中。

表6 某態(tài)勢系統(tǒng)軟件工時統(tǒng)計

表7 基于功能點的成本與實際成本比較
軟件計價有助于武器裝備發(fā)展,軟件在裝備中占比不斷提高,在某種程度上直接影響裝備戰(zhàn)斗力的形成和保持[3],高效研發(fā)高質(zhì)量的軟件對國防建設(shè)至關(guān)重要,《某軟件研制概算計價規(guī)范(試行)》的出臺對裝備軟件的優(yōu)質(zhì)發(fā)展帶來好的時機,裝備軟件向高效、高質(zhì)、高端人才引入邁進。
1.軟件計價的核心是通過功能點數(shù)計算工時,依據(jù)現(xiàn)有規(guī)范試算,實際工時和功能點估算的工時偏差較大,倒逼提升開發(fā)效率,高效的團隊會有更高的利潤,從而在競爭中勝出。
2.軟件計價有助于體現(xiàn)軟件價值,價值的引領(lǐng)會促進研發(fā)的投入,從而加速智能化高質(zhì)量裝備的進化。
3.裝備軟件價值的體現(xiàn)能吸引高端軟件人才流入武器裝備軟件行業(yè)。
基于功能點方法的軟件計價在民用領(lǐng)域發(fā)展已有近四十多年,數(shù)據(jù)積累豐富,引入NESMA 方法到我國裝備軟件領(lǐng)域要考慮其特殊性:
1.在我國裝備領(lǐng)域并沒有經(jīng)驗數(shù)據(jù)積累,應(yīng)注重基礎(chǔ)數(shù)據(jù)的長期積累,根據(jù)實際情況逐步修正功能點計算因子,尤其在嵌入式航空電子領(lǐng)域,NES‐MA 方法估算的結(jié)果低于實際工作量,要通過功能點方法體現(xiàn)工作量,應(yīng)進一步增加影響因子,提升因子權(quán)重。
2.建議增加成熟度研制等級的影響因子,如在裝備領(lǐng)域GJB5000三級及以上單位的軟件質(zhì)量和可靠性相對較高,過程控制的工作量也比僅按照二級要求的多20%以上,應(yīng)考慮將類似因子引入。
3.對嵌入式實時系統(tǒng)的影響權(quán)重應(yīng)再提高,嵌入式實時系統(tǒng)應(yīng)用模型時原始功能點的方法計算基數(shù)相對較少,需要通過提升調(diào)整因子來彌補方法的先天不足。
1.注重數(shù)據(jù)的積累,根據(jù)不同專業(yè)不同領(lǐng)域的軟件特性分別統(tǒng)計,積累工時數(shù)據(jù),為準(zhǔn)確調(diào)整因子提供基礎(chǔ)依據(jù)。
2.當(dāng)前裝備軟件開發(fā)工程中,變更頻繁已經(jīng)是常態(tài),變動帶來的成本在功能點計數(shù)中很難體現(xiàn)。由于需求獲取不準(zhǔn)確而導(dǎo)致的工作量浪費將會直接體現(xiàn)在成本增加中,亟需提升系統(tǒng)及需求的獲取準(zhǔn)確性。
3.功能點估算主要依據(jù)軟件文檔對功能性需求進行分析與度量,一般根據(jù)正式評審的文件為依據(jù)。當(dāng)前武器裝備軟件研制任務(wù)書的描述相對簡單,并不利于識別計價,應(yīng)特別關(guān)注前期方案及任務(wù)書等文檔的質(zhì)量,著重明確軟件實現(xiàn)的功能。