韓 珊,李華北
(工業和信息化部電子第五研究所,廣州 510610)
功能點估算法在彩票行業的應用
韓 珊,李華北
(工業和信息化部電子第五研究所,廣州 510610)
本文主要介紹了基于NESMA功能點估算法的軟件成本度量,及其在彩票行業軟件項目中的應用。軟件的規模大小在項目的早期計劃與實踐過程中具有指導作用,NESMA功能點法是一種基于用戶需求并且獨立于開發語言的估算方法,能夠比較準確地度量規模。本文首先闡述了應用NESMA功能點法估算軟件規模的詳細方法和步驟,并結合彩票行業軟件開發的實際情況,以及參考軟件行業基準數據,對其在彩票軟件開發成本估算中的實際應用進行了總結,并以實例說明該方法在彩票行業的適用性和局限性。
軟件成本度量;NESMA;功能點;彩票
隨著當代信息時代的快速發展,彩票行業也在不斷發生變革,不再只限于線下銷售,而是不斷的尋求發展,與軟件相結合,追求更方便快捷的銷售方式[1]。因此,在一個軟件項目的早期階段,如果可以對該項目的規模大小、工作量、成本等做出一個合理的估算,那么這是非常必要的。是否能在軟件項目開發早期階段進行有效的成本估算并在開發過程中進行合理的管理控制成為了項目成敗至關重要的因素。
舉個例子,對于一個比較復雜的項目來講,為預算開發成本[2],可以以度量項目規模為基礎,通過模型方程得出所需要的工作量和成本估計。
國際上,已經有很多種度量軟件產品規模的方法,比如:代碼行數(Line of Code)估算法、功能點(Function Point)估算法、特征點(Feature Point)估算法、對象點(Object Point)估算法、德爾菲(Delphi)估算法、模糊邏輯(Fuzzy Logic)估算法、標準構件法(Standard Component )估算法、用例點(Use Case Point)估算法等。每個模型都有其適用的情景與限制,功能點估算法是一種從用戶角度來看的規模估算方法,是通過量化數據文件類型與數據輸入、輸出、查詢動作等有關的功能性處理信息,來度量軟件規模大小的方法[3-5]。
功能點分析(Function Point Analysis)法是由IBM 的 Albrecht在 1979 年提出的[6],這種方法是一種與程序語言無關,能夠有效地度量軟件規模大小的方法。國際功能點用戶協會提出的 IFPUG 方法、荷蘭軟件度量協會提出的NESMA方法,英國軟件度量協會提出的 Mark IIFPA方法以及通用軟件度量國際協會提出的COSMIC方法,都屬于功能點分析法。本文主要研究如何結合實際情況,利用目前國際主流的軟件規模測算法NESMA功能點分析法來對彩票軟件的規模進行估算。
按照行業標準《軟件研發成本度量規范》[7],在規模估算之后還要進行工作量估算和成本估算,最終才能得出我們想要的軟件項目開發成本預算。簡要的實施流程如下,如圖1所示。
在整個估算過程中涉及到了一些調整因子及生產率費率等數據,這些都是基于眾多軟件行業項目中收集到的歷史數據,經過統計分析得出的。

圖1 軟件成本估算流程Fig.1 The process of software cost estimation
功能點分析方法的最主要功能就是度量軟件的規模大小,它主要從用戶的視角出發,對提供給客戶的功能進行量化估計。NESMA功能點分析法[8]的優勢在于其為了應對軟件不同時期的需求特點,增加了快速估算的指示估算法和可以詳細估算的詳細估算法,使其共有三種層級可以選用,極大的方便了人們的使用。
1.1 功能點法估算流程
NESMA功能點法的估算流程主要有以下 7個步驟:
(1)收集可以文檔,確定估算范圍及系統邊界;
(2)確定功能點計數類型(指示法,估算法還是詳細估算法);
(3)確定所有數據功能;
(4)確定所有事務功能;
(5)計算未調整功能點數;
(6)確定各調整因子;
(7)計算已調整功能點數;
其中估算范圍的確定主要取決于計數目的,而邊界則必須是從用戶角度出發,將該系統與其他系統和用戶之間進行劃分,不能從技術角度去看。如果項目關聯到多個系統,那么必須將被估算的系統和多個系統的邊界全部進行區別。由于彩票行業的特殊性,涉及到全國34個省、自治區、直轄市,數據處理量龐大,對于系統邊界尤其要描述清楚。
功能點計數類型的選擇則是基于軟件項目所處階段決定的。在軟件項目最早期,需求粒度較大,功能模糊的時候,適用指示法;當項目進一步推進,需求比較清楚詳細時,建議適用估算法;當項目正式準備開始開發或在開發進行中是,可以使用詳細估算法進行詳細地估算。
1.2 功能點法中五類功能的識別
依據技術規格文件、軟件需求說明書等文檔,在進行功能點識別時要分別識別出數據功能 ILF、EIF和事務功能EI、EO、EQ。
在這里,數據功能主要指的是供更新、查詢和引用的可用邏輯數據,共有兩種類型,分別為:內部邏輯文件(ILF)和外部接口文件(EIF)。
內部邏輯文件指的是從用戶的視角出發,看到的一組永久性數據的邏輯集合。而這組數據是由被估算的系統使用并維護的。
外部接口文件指的是在該系統中使用但由另一個系統維護的一組永久性數據的邏輯集合。被估算的系統直接使用該數據,但不對數據進行維護操作。
而事務功能描述的是系統如何使用或維護數據,具體分為三種:外部輸入(EI),外部輸出(EO)和外部查詢(EQ)。
外部輸入是指數據和或控制信息從系統外部進入到系統內部,是對內部邏輯文件進行維護的動作,例如對數據的增、刪、改。同時處理輸入信號并改變系統的行為也可識別為EI。
外部輸出是跨越了系統邊界的一種獨特的輸出功能,給用戶和或其他系統輸出展示數據的一種操作。外部輸出通常包括復雜的計算和數據處理。
外部查詢指的是被用戶認識到的一個獨特的單純輸出或“輸入/輸出”的組合,系統不需要進一步進行處理的,確定規模的輸出,數據也會穿越邊界。
對于軟件項目最早期最早期,使用指示法進行估算時,只需要識別出數據功能(ILF,EIF)即可,而在使用估算法時,上文介紹的五類功能都要完整的識別出來。本文在進行彩票軟件項目估算時,采用的就是估算法。
至于詳細估算法,不僅要識別出五類功能,還要識別出每個功能分別對應的復雜度。由于本文沒有使用詳細估算法,在這里就不對復雜度的識別進行詳細的描述。
1.3 功能點法的計數及調整
在上述功能分析的基礎上,可以計算系統的未調整功能點數,對于指示法來說,每個內部邏輯文件是35個功能點,每個外部接口文件是15個功能點,相加即可得出總功能點數。對于估算法來說,則可以使用以下公式計算出系統的未調整功能點數:

其中UFP代表未調整功能點數。
由于在軟件系統中,還受到很多非功能因素的影響,所以NESMA功能點方法還提供了14個通用系統特征GSC調整因子。根據系統相關的特性來決定每個GSC的影響程度,可以從無任何影響(容實現)到強烈影響(極難實現),共分為6個檔,估算值從0~5,每個GSC影響程度的估算值之和就是總影響程度(TDI),然后根據TDI 來計算估算調整因子VAF:
VAF=0.65+0.01*TDI (2)
除非功能性需求之外,軟件需求的變更也會對最終功能點的計數造成影響。按照行業標準《軟件研發成本度量規范》,考慮到預算時需求較模糊,未來將有很多隱含需求及需求變更,設置了一個規模變更調整因子CF。在收集到的歷史項目數據庫中,將最終實際功能點數和項目初期進行估算的功能點數做統計比較,得出的結論如下表,在預算階段功能通常會發生2倍左右的變更,招標時CF取值為1.5,投標是CF為1.26:
綜上所述,調整后的軟件規模功能點數可表示為:S=UFP*CF*VAF (3)其中S為調整后的最終軟件規模功能點數。

表1 規模變更調整因子CF的取值Table 1 The value of scale change adjustment factor CF
下面以某彩票公司的彩票助手軟件為例,在了解該系統基本功能的前提下,估算該軟件規模,并估算相關工作量及成本。
該軟件的主要功能:
(1)在不同省份,開放不同的彩票游戲,用戶可以自選投注,每個游戲都有自己獨立的投注規則;
(2)展示每個游戲每期的中獎結果及中獎詳情,客戶可以對每個游戲進行驗獎操作;
(3)各種促銷和紅包活動;
依據提供的軟件需求說明書以及網頁設計文件可以看出,整個軟件是由安卓客戶端,IOS客戶端以及Web服務端,三大部分組成的。這三大部分都是我們要估算的系統的內部。需要注意的是,對于在兩種不同的客戶端上要實現的功能要分別獨立計數,系統結構圖如圖2所示。

圖2 彩票助手系統框架圖Fig.2 Frame diagram of lottery assistant system
因為在軟件需求說明書中,對各功能需求的描寫粒度比較詳細,所有在本次估算中,采用的是估算法來估算系統的規模大小。
2.1 未調整功能點的計算
以安卓客戶端的未調整功能點計算為例,識別出的部分功能項實例,如表2所示。

表2 部分功能項識別實例Table 2 Examples of how to recognize the function items
對安卓客戶端中所有子模塊的功能點計數項進行識別統計,最終得出各類別功能項數據為如表 3所示。
則根據公式(1),彩票助手安卓客戶端的未調整功能點數如下,為913個功能點:
UFP安卓=28*7+5*5+34*4+80*5+39*4=913 FP
依據同樣的流程和公式計算,可以得出彩票助手IOS客戶端和Web服務端的未調整功能點數,三者相加即為整個彩票助手軟件的總未調整功能點數,在本實例中,UFP為2123個功能點。
2.2 調整因子及調整后功能點的計算
根據NESMA提供的14個GSC調整因子,為這個彩票助手軟件進行打分,打分結果如表4所示。
最終總影響程度依據公式(2)計算結果為:
VAF=0.65+0.01*54 =1.19
并且由于該軟件項目在估算時尚處于投標階段,則規模變更調整因子CF依據表1取值為1.26。
綜上所述,依據公式(3),估算的該彩票助手軟件其調整后的功能點規模總數為:
S=2123*1.26*1.19=3183 FP
2.3 工作量及成本的估算
在估算出軟件規模之后,有很多種方法可以進一步估算工作量從而得到成本[9-13]。在本次實例中,采用的是方程法來估算工作量。方程法是指利用數學知識,基于統計關系,以過去數據為根據來預測未來。方程法使我們感興趣的輸出結果例如工作量估算值,與一個或多個獨立的變量參數產生一定的可計算的數學函數關系,即所謂數字模型,例如乘法模型,分析模型等,將軟件工作量成本估算轉化為一系列主要成本驅動因子變量的函數。
其核心部分往往是估算方程,方程以影響開發工作量的某些項目因素作為輸入,輸出的則是項目開發的工作量,依據行業標準《軟件研發成本度量規范》,估算工作量的方程如下:

其中 AE即為求出的調整后工作量,單位為人時;PDR代表生產率,單位為人時每功能點;SWF為軟件因素調整因子;RDF為開發因素調整因子。
根據數據庫中14000多套國內外軟件項目歷史數據統計分析,軟件行業的生產率數據如表5所示。

表5 軟件行業最新生產率數據Table 5 Latest production rate data in software industry
其中,中位數為7.31人時/功能點。同時依據行業標準規定,得出軟件因素調整因子SWF為1.2,開發因素調整因子為1.0。則本次實例中,工作量的估算標準值為:
AE=7.31*3183*1.3*1=27921人時
同樣采用公式(4),但使用生產率的P25和P75值來估算工作量的合理浮動范圍,結果估算出的工作量浮動范圍為14171~49540人時。
根據求出的工作量,帶入以下方程則可進一步得出成本估算值:
P=AE/176*F+DNC (5)
其中P代表預算費用,單位為萬元;176僅僅意味著將工作量的單位由人時換算成人月;F代表人月費率(含開發方直接人力成本、開發方間接成本及開發方毛利潤),單位為萬元每人月,同樣依照數據庫中的行業數據進行的分析結果顯示,北京的人月費率為2.37萬元每人月,本實例使用的該值進行估算;DNC代表開發方直接非人力成本,單位為萬元,在本實例中,依據彩票助手的軟件需求說明書中列舉的各種采購費,差率費等非人力成本需求,得出總非人力成本為3.58萬元。
則依據公式(5)可以得出最終估算的該彩票助手軟件的成本為:
P=39742/176*2.37+3.58= 379.6萬元
其相應的合理浮動范圍為194.4~670.7萬元。
NESMA功能點分析法是目前軟件項目眾多估算方法中比較有技術含量的一種方法,有應用廣泛、易于使用的優點,在彩票行業軟件開發早期成本估算中起到了重要作用。但該方法在實踐中還是存在一些局限性,例如在本實例中,在實際開發彩票軟件時,有一定比例的工作是在做游戲規則的設計,這部分的規模按照傳統功能點識別規則是很難識別出來的,這時就要根據具體情況來和甲方,乙方共同討論確定下雙方都可以接收的識別規則,來進一步得到準確性更高的結果。
因此,雖然NESMA功能點分析法并不是一種十全十美的方法,但它在實際應用中發揮很大的作用,在項目早期為軟件開發項目的成本估算提供依據,從而盡可能早地制定軟件的開發與管理計劃,這是十分重要的。
[1] 張健. 移動互聯網時代的移動商務[J]. 新型工業化, 2011,1(6): 41-48.
[2] 馮文霞, 王廣安. 數據挖掘在服務成本預測方面的應用研究(SDCF-DM)[J]. 軟件, 2013, 34(4): 46-48.
[3] 李幟, 林立新, 曹亞波. 軟件工程項目管理: 功能點分析方法與實踐[M]. 北京: 清華大學出版社, 2005.
[4] 朱坤云, 沈洪明. 功能點方法在軟件項目管理中的應用[J].企業科技與發展, 2008(2): 88-90.
[5] 張俊光, 呂廷杰. 基于規模的軟件工作量估計方法研究[J].中國管理科學, 2008, V16(5): 118-122.
[6] 曹濟. 軟件項目功能點度量方法與應用[M]. 北京: 清華大學出版社, 2012.
[7] SJ/T11463-2013. 軟件研發成本度量規范[S]. 北京: 中華人民共和國工業和信息化部, 2013.
[8] NESMA功能點估算基本方法: http: //www.nesma.org.au/.
[9] 寧靜峰, 童旅楊. 軟件項目功能點估算[J]. 長春工業大學學報: 自然科學版, 2014(3): 309-314.
[10] 任雪利. 協同過率在工作量估算中的應用[J]. 軟件, 2013,34(10): 12-14.
[11] 劉靜, 楊海棟. 淺析功能點估算方法的運用[J]. 電信技術研究, 2014, (6): 33-39.
[12] 馬賢穎, 張敏, 董石磊. 功能點估算方法研究及應用[J].現代電子技術, 2011, 34(8): 58-61.
[13] 王穎, 柳小平, 郭繼光, 等. 基于功能點的軟件度量在項目管理中的應用[J]. 中國電子科學研究院學報, 2013(1):81-85.
Application of Function Point Method in Lottery Industry
HAN Shan, LI Hua-bei
(CEPREI, Guangzhou 510610, China)
This paper mainly introduces the software cost measurement based on NESMA function point method and its application in the lottery industry. The NESMA function point method is based on the needs of users and the estimation method is independent of the development of language, which can accurately measure the size. This paper describes the detailed steps of NESMA function point method and shows a practical example in the lottery industry. Finally, this paper summary and discuss the applicability and limitations when using function point method in the lottery industry.
Cost measurement; NESMA; Function point; Lottery
TP311
A
10.3969/j.issn.1003-6970.2017.11.018
本文著錄格式:韓珊,李華北. 功能點估算法在彩票行業的應用[J]. 軟件,2017,38(11):90-94
韓珊(1991-),女,技術經理,廣州賽寶認證中心服務有限公司,主要研究方向:軟件成本度量;李華北(1961-),男,技術總監,廣州賽寶認證中心服務有限公司,主要研究方向:CMMI以及軟件成本度量。