王斌 韓雷
摘要:估算軟件規模是軟件研制計價中非常重要的一環。傳統的源代碼行法在估算軟件規模方面有諸多的不便之處,因此今年新下發的《軍用軟件研制概算計價規范(試行)》采用了改進的“快速功能點法”進行軟件功能規模估算。本文對此方法的基本概念進行了介紹,給出了實施方法和具體步驟,并給出了一個應用舉例,可為軟件研發部門估算軟件功能規模提供參考。
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.
關鍵詞:功能點分析;軟件規模估算;軟件計價
Key words: function point analysis;software size estimation;in terms of software
中圖分類號:TP311.5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1006-4311(2020)14-0220-02
0? 引言
中央軍委裝備發展部在2019年初下發了《軍用軟件研制概算計價規范(試行)》(以下簡稱“規范”)。“規范”中明確規定了軍用軟件研制計價由綜合費用、直接非人力成本、收益三部分組成。其中綜合費用中軟件研發工作量部分采用改進的基于功能點的軟件功能規模估算方法進行計算。因此,正確熟練地應用該方法,是正確估算軍用軟件研制費用的基礎。
1? 軟件功能規模估算方法介紹
1.1 源代碼行法估算軟件功能規模的不足
目前,業界主流度量軟件規模最常用的方法是“源代碼行法”。該方法雖然簡單直觀,但存在著明顯不足。
1.1.1 沒有代碼行規模度量標準? 即使相同功能、相同技術實現的軟件,由于開發人員不同,其代碼行數量也會存在較大差異;
1.1.2 人為增加代碼行,性能質量下降? 通常情況下相同功能的軟件,代碼行越少,性能越好、質量越高,以代碼行為基礎計算軟件開發成本,不能正向牽引軟件編碼質量的提高;
1.1.3 開發完成前難以度量? 對于軟件計價,開發前必須進行度量。源代碼行法完成軟件編程后才能得到代碼行,無法及時開展軟件規模度量;
1.1.4 不利于項目管理? 代碼行法是從技術實現的角度度量軟件規模,不便于客戶和管理人員理解。
1.2 “快速功能點法”概述
功能點分析法(FPA),是一種以功能點(Function Point)為單位測量軟件功能規模的度量方法,最早由Daich[1]和Kitchenharm[2]提出。該方法是一種分解類的規模度量方法[3],即把復雜系統分解成子系統進行評估的方法。它主要是基于軟件文檔對功能性需求進行分析和度量,使用內部邏輯文件(Internal Logical Files,ILF)、外部接口文件(External Interface Files,EIF)、外部輸入(External Inputs, EI)、外部輸出(External Outputs,EO)、外部查詢(External Query,EQ)等5種組件分解系統功能,以功能點數的形式表示軟件規模[4]。它從用戶視角出發,定義明確,便于計算,不同計算著計算結果誤差在10%以內。“規范”中采用“快速功能點法 (Fast Function Point Method,FFPM)”進行軟件功能規模估算。此方法是參考NESMA等國際標準進行軟件功能規模估算的方法,刪除了國際標準中不適用軍用軟件的內容,統一了復雜度權值,對規模調整因子進行了優化,可操作性更強,易于理解和掌握。
2? 實施方法
“快速功能點法”對應NESMA標準中的估算功能點計數,主要分為五個步驟:確定估算范圍、分解軟件功能需求、估算功能點數、用戶驗證、專家審核。
2.1 確定估算范圍
①收集支撐用戶功能需求的文檔。包括立項綜合論證報告、軟件研制總要求、軟件需求規格說明、軟件概要/詳細設計等文檔,上述文檔應按照有關規定通過評審或者有效性審查。
②確定計數類型。按照新研、改進項目或升級項目區分對待劃定功能規模估算范圍。
③劃分度量邊界。從用戶視角將被度量軟件劃分成若干個估算對象,厘清每個估算對象的邏輯用戶及相互間接口關系,確定度量邊界。
2.2 分解軟件功能需求
①需求功能分解。在確定的軟件功能規模估算范圍內,將用戶功能需求分解到可以被估算的最小功能單元。
②識別數據功能。根據數據功能的定義及特征,逐一識別每個估算對象包含的數據功能并分類,主要包括ILF和EIF。
③識別事務功能。根據事務功能的定義及特征,逐一識別每個估算對象包含的事務功能并分類主要包括EI、EO、EQ。
2.3 估算功能點數
①估算原始功能點數(UFP)。根據公式
UFP=7×ILF+5×EIF+4×EI+5×EO+4×EQ? ?(1)
估算出原始功能點數量。
②確定規模調整因子(VAF)。
VAF=1.3+0.1×(F1+F2+F3+F4+F5+F6+F7)? ? ? (2)
其中F1~F7為從關鍵性、分布式處理、性能、計算機資源限制、復雜處理、可重用性、多環境等7個方面描述軟件特性的調整因子,其描述和評分標準詳見“規范”,VAF取值范圍一般為1.3~2.7。
③估算調整后功能點數(FP)。
FP=269.6446+0.7094×UFP×VAF? ? ?(3)
最終得到調整后的功能點數即為軟件功能規模。
2.4 用戶驗證
估算完成后,將估算結果和最終用戶和相關干系人(使用者、所有者、其他系統)對項目的功能規模進行確認和核實。驗證包括:結果正確性、對于需求規格說明的解釋和假設,必要時應對估算結果做出修正。
2.5 專家審核
軟件功能規模估算一般由軟件研發單位實施,得到軟件功能規模后,應編制相應文檔,將和用戶確認過的估算結果交由功能規模度量專家進行審核和驗證。
3? 應用舉例
以某信息管理系統為例,介紹本方法的應用過程。首先根據軟件需求規格說明,確定估算范圍;然后基于本系統尚處在需求分析階段的實際情況,決定“快速功能點法”進行功能點數估算;再根據《軟件需求規格說明》分解功能單元,并計算數據功能和事務功能。計數結果見表1。
計數結束后,根據公式(1)估算出原始功能點數UFP。
UFP=7×ILF+5×EIF+4×EI+5×EO+4×EQ=70+35+80+25+64=274FP
隨后,需確定軟件規模調整因子。根據軟件安全關鍵等級以及需求和用戶的描述,確定軟件規模調整因子分值,見表2。
根據公式(2),本例中規模調整因子VAF的計算結果為:
VAF=1.3+0.1×(F1+F2+F3+F4+F5+F6+F7)=1.3+0.1×2=1.5
根據公式(3),計算調整后功能點數(FP)
FP=269.6446+0.7094×UFP×VAF=269.6446+0.7094×274×1.5=561.208FP
最后,需將估算結果(含數據功能和事務功能的原始值)一并上報給專家進行審核驗證。需要注意的是,軍方審核結果只核減不核增,這就研發單位的估算人員細致工作,務必將數據功能和事務功能統計清楚。
4? 結束語
“快速功能點法”在以原始功能點數作為衡量軟件規模的主要依據的同時,還考慮了軟件基本特征對研發工作量的影響,這些影響通過規模調整因子體現。相對于基于代碼行的方法,基于功能點的軟件規模估算方法易于用戶理解,可以在項目早期使用,有相關標準支持,運用一致性較好。
但是本方法仍存在一定的不足之處。比如,當軟件中存在大量復雜算法、數學模型、概念創新等復雜智力勞動時,其價值不能通過功能規模估算方法體現。此時可考慮補充采用類比法、類推法等其他方法估算軟件功能規模;公式(3)中的系數269.6446和0.7094是通過大量實際項目數據分析得到的經驗參數,不一定適用于所有的軟件,可以進一步擴大統計范圍,根據不同軟件類型確定不同的參數值。
參考文獻:
[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,軟件工程 軟件開發成本度量規范[S]. 國家市場監督管理總局,中國國家標準化管理委員會,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.