王斌 韓雷
摘要:估算軟件規(guī)模是軟件研制計(jì)價(jià)中非常重要的一環(huán)。傳統(tǒng)的源代碼行法在估算軟件規(guī)模方面有諸多的不便之處,因此今年新下發(fā)的《軍用軟件研制概算計(jì)價(jià)規(guī)范(試行)》采用了改進(jìn)的“快速功能點(diǎn)法”進(jìn)行軟件功能規(guī)模估算。本文對此方法的基本概念進(jìn)行了介紹,給出了實(shí)施方法和具體步驟,并給出了一個(gè)應(yīng)用舉例,可為軟件研發(fā)部門估算軟件功能規(guī)模提供參考。
Abstract: Estimation of software scale is a very important part in software development and valuation. The traditional source line method has many disadvantages in estimating software scale. Therefore, the newly issued "Military Software Development Budget Valuation Specification (trial)" uses the improved "Fast Function Point Method(FFPM)" to estimate the software function scale. This paper introduces the method and the concrete steps, and gives an example of application, which can provide a reference for the software research and development department to estimate the software function scale.
關(guān)鍵詞:功能點(diǎn)分析;軟件規(guī)模估算;軟件計(jì)價(jià)
Key words: function point analysis;software size estimation;in terms of software
中圖分類號:TP311.5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1006-4311(2020)14-0220-02
0? 引言
中央軍委裝備發(fā)展部在2019年初下發(fā)了《軍用軟件研制概算計(jì)價(jià)規(guī)范(試行)》(以下簡稱“規(guī)范”)?!耙?guī)范”中明確規(guī)定了軍用軟件研制計(jì)價(jià)由綜合費(fèi)用、直接非人力成本、收益三部分組成。其中綜合費(fèi)用中軟件研發(fā)工作量部分采用改進(jìn)的基于功能點(diǎn)的軟件功能規(guī)模估算方法進(jìn)行計(jì)算。因此,正確熟練地應(yīng)用該方法,是正確估算軍用軟件研制費(fèi)用的基礎(chǔ)。
1? 軟件功能規(guī)模估算方法介紹
1.1 源代碼行法估算軟件功能規(guī)模的不足
目前,業(yè)界主流度量軟件規(guī)模最常用的方法是“源代碼行法”。該方法雖然簡單直觀,但存在著明顯不足。
1.1.1 沒有代碼行規(guī)模度量標(biāo)準(zhǔn)? 即使相同功能、相同技術(shù)實(shí)現(xiàn)的軟件,由于開發(fā)人員不同,其代碼行數(shù)量也會(huì)存在較大差異;
1.1.2 人為增加代碼行,性能質(zhì)量下降? 通常情況下相同功能的軟件,代碼行越少,性能越好、質(zhì)量越高,以代碼行為基礎(chǔ)計(jì)算軟件開發(fā)成本,不能正向牽引軟件編碼質(zhì)量的提高;
1.1.3 開發(fā)完成前難以度量? 對于軟件計(jì)價(jià),開發(fā)前必須進(jìn)行度量。源代碼行法完成軟件編程后才能得到代碼行,無法及時(shí)開展軟件規(guī)模度量;
1.1.4 不利于項(xiàng)目管理? 代碼行法是從技術(shù)實(shí)現(xiàn)的角度度量軟件規(guī)模,不便于客戶和管理人員理解。
1.2 “快速功能點(diǎn)法”概述
功能點(diǎn)分析法(FPA),是一種以功能點(diǎn)(Function Point)為單位測量軟件功能規(guī)模的度量方法,最早由Daich[1]和Kitchenharm[2]提出。該方法是一種分解類的規(guī)模度量方法[3],即把復(fù)雜系統(tǒng)分解成子系統(tǒng)進(jìn)行評估的方法。它主要是基于軟件文檔對功能性需求進(jìn)行分析和度量,使用內(nèi)部邏輯文件(Internal Logical Files,ILF)、外部接口文件(External Interface Files,EIF)、外部輸入(External Inputs, EI)、外部輸出(External Outputs,EO)、外部查詢(External Query,EQ)等5種組件分解系統(tǒng)功能,以功能點(diǎn)數(shù)的形式表示軟件規(guī)模[4]。它從用戶視角出發(fā),定義明確,便于計(jì)算,不同計(jì)算著計(jì)算結(jié)果誤差在10%以內(nèi)。“規(guī)范”中采用“快速功能點(diǎn)法 (Fast Function Point Method,F(xiàn)FPM)”進(jìn)行軟件功能規(guī)模估算。此方法是參考NESMA等國際標(biāo)準(zhǔn)進(jìn)行軟件功能規(guī)模估算的方法,刪除了國際標(biāo)準(zhǔn)中不適用軍用軟件的內(nèi)容,統(tǒng)一了復(fù)雜度權(quán)值,對規(guī)模調(diào)整因子進(jìn)行了優(yōu)化,可操作性更強(qiáng),易于理解和掌握。
2? 實(shí)施方法
“快速功能點(diǎn)法”對應(yīng)NESMA標(biāo)準(zhǔn)中的估算功能點(diǎn)計(jì)數(shù),主要分為五個(gè)步驟:確定估算范圍、分解軟件功能需求、估算功能點(diǎn)數(shù)、用戶驗(yàn)證、專家審核。
2.1 確定估算范圍
①收集支撐用戶功能需求的文檔。包括立項(xiàng)綜合論證報(bào)告、軟件研制總要求、軟件需求規(guī)格說明、軟件概要/詳細(xì)設(shè)計(jì)等文檔,上述文檔應(yīng)按照有關(guān)規(guī)定通過評審或者有效性審查。
②確定計(jì)數(shù)類型。按照新研、改進(jìn)項(xiàng)目或升級項(xiàng)目區(qū)分對待劃定功能規(guī)模估算范圍。
③劃分度量邊界。從用戶視角將被度量軟件劃分成若干個(gè)估算對象,厘清每個(gè)估算對象的邏輯用戶及相互間接口關(guān)系,確定度量邊界。
2.2 分解軟件功能需求
①需求功能分解。在確定的軟件功能規(guī)模估算范圍內(nèi),將用戶功能需求分解到可以被估算的最小功能單元。
②識(shí)別數(shù)據(jù)功能。根據(jù)數(shù)據(jù)功能的定義及特征,逐一識(shí)別每個(gè)估算對象包含的數(shù)據(jù)功能并分類,主要包括ILF和EIF。
③識(shí)別事務(wù)功能。根據(jù)事務(wù)功能的定義及特征,逐一識(shí)別每個(gè)估算對象包含的事務(wù)功能并分類主要包括EI、EO、EQ。
2.3 估算功能點(diǎn)數(shù)
①估算原始功能點(diǎn)數(shù)(UFP)。根據(jù)公式
UFP=7×ILF+5×EIF+4×EI+5×EO+4×EQ? ?(1)
估算出原始功能點(diǎn)數(shù)量。
②確定規(guī)模調(diào)整因子(VAF)。
VAF=1.3+0.1×(F1+F2+F3+F4+F5+F6+F7)? ? ? (2)
其中F1~F7為從關(guān)鍵性、分布式處理、性能、計(jì)算機(jī)資源限制、復(fù)雜處理、可重用性、多環(huán)境等7個(gè)方面描述軟件特性的調(diào)整因子,其描述和評分標(biāo)準(zhǔn)詳見“規(guī)范”,VAF取值范圍一般為1.3~2.7。
③估算調(diào)整后功能點(diǎn)數(shù)(FP)。
FP=269.6446+0.7094×UFP×VAF? ? ?(3)
最終得到調(diào)整后的功能點(diǎn)數(shù)即為軟件功能規(guī)模。
2.4 用戶驗(yàn)證
估算完成后,將估算結(jié)果和最終用戶和相關(guān)干系人(使用者、所有者、其他系統(tǒng))對項(xiàng)目的功能規(guī)模進(jìn)行確認(rèn)和核實(shí)。驗(yàn)證包括:結(jié)果正確性、對于需求規(guī)格說明的解釋和假設(shè),必要時(shí)應(yīng)對估算結(jié)果做出修正。
2.5 專家審核
軟件功能規(guī)模估算一般由軟件研發(fā)單位實(shí)施,得到軟件功能規(guī)模后,應(yīng)編制相應(yīng)文檔,將和用戶確認(rèn)過的估算結(jié)果交由功能規(guī)模度量專家進(jìn)行審核和驗(yàn)證。
3? 應(yīng)用舉例
以某信息管理系統(tǒng)為例,介紹本方法的應(yīng)用過程。首先根據(jù)軟件需求規(guī)格說明,確定估算范圍;然后基于本系統(tǒng)尚處在需求分析階段的實(shí)際情況,決定“快速功能點(diǎn)法”進(jìn)行功能點(diǎn)數(shù)估算;再根據(jù)《軟件需求規(guī)格說明》分解功能單元,并計(jì)算數(shù)據(jù)功能和事務(wù)功能。計(jì)數(shù)結(jié)果見表1。
計(jì)數(shù)結(jié)束后,根據(jù)公式(1)估算出原始功能點(diǎn)數(shù)UFP。
UFP=7×ILF+5×EIF+4×EI+5×EO+4×EQ=70+35+80+25+64=274FP
隨后,需確定軟件規(guī)模調(diào)整因子。根據(jù)軟件安全關(guān)鍵等級以及需求和用戶的描述,確定軟件規(guī)模調(diào)整因子分值,見表2。
根據(jù)公式(2),本例中規(guī)模調(diào)整因子VAF的計(jì)算結(jié)果為:
VAF=1.3+0.1×(F1+F2+F3+F4+F5+F6+F7)=1.3+0.1×2=1.5
根據(jù)公式(3),計(jì)算調(diào)整后功能點(diǎn)數(shù)(FP)
FP=269.6446+0.7094×UFP×VAF=269.6446+0.7094×274×1.5=561.208FP
最后,需將估算結(jié)果(含數(shù)據(jù)功能和事務(wù)功能的原始值)一并上報(bào)給專家進(jìn)行審核驗(yàn)證。需要注意的是,軍方審核結(jié)果只核減不核增,這就研發(fā)單位的估算人員細(xì)致工作,務(wù)必將數(shù)據(jù)功能和事務(wù)功能統(tǒng)計(jì)清楚。
4? 結(jié)束語
“快速功能點(diǎn)法”在以原始功能點(diǎn)數(shù)作為衡量軟件規(guī)模的主要依據(jù)的同時(shí),還考慮了軟件基本特征對研發(fā)工作量的影響,這些影響通過規(guī)模調(diào)整因子體現(xiàn)。相對于基于代碼行的方法,基于功能點(diǎn)的軟件規(guī)模估算方法易于用戶理解,可以在項(xiàng)目早期使用,有相關(guān)標(biāo)準(zhǔn)支持,運(yùn)用一致性較好。
但是本方法仍存在一定的不足之處。比如,當(dāng)軟件中存在大量復(fù)雜算法、數(shù)學(xué)模型、概念創(chuàng)新等復(fù)雜智力勞動(dòng)時(shí),其價(jià)值不能通過功能規(guī)模估算方法體現(xiàn)。此時(shí)可考慮補(bǔ)充采用類比法、類推法等其他方法估算軟件功能規(guī)模;公式(3)中的系數(shù)269.6446和0.7094是通過大量實(shí)際項(xiàng)目數(shù)據(jù)分析得到的經(jīng)驗(yàn)參數(shù),不一定適用于所有的軟件,可以進(jìn)一步擴(kuò)大統(tǒng)計(jì)范圍,根據(jù)不同軟件類型確定不同的參數(shù)值。
參考文獻(xiàn):
[1]Daich T G, Price G, Dawood W. Metric Tools; Size, In: CROSSTALK, Aril 1995:21-25.
[2]Kitchenham B. Marking Process Predictions. In: Fenton N E, ed. Software Metrics: A Rigorous Approach. UK, Chapman & Hall, 1991,337.
[3]GB/T 36964-2018,軟件工程 軟件開發(fā)成本度量規(guī)范[S]. 國家市場監(jiān)督管理總局,中國國家標(biāo)準(zhǔn)化管理委員會(huì),2018.
[4]ABRAN A ROBILLARD P N. Function points: A Study of Their Measurement Processes and Scale Transformations[J]. Systems Software, 1994, 25: 171-184.