侯成功+譚裴+葉敏
摘要:傳統(tǒng)的IFPUG功能點分析方法對行業(yè)應用軟件項目進行軟件規(guī)模度量時,調(diào)整因子考慮的是系統(tǒng)整體特征。該方法對典型的管理信息系統(tǒng)較為有效,但當系統(tǒng)或者系統(tǒng)的部分模塊具有一些其它技術(shù)特征時,度量結(jié)果會出現(xiàn)較大偏差。針對行業(yè)應用軟件專業(yè)化和復雜化的特點,首先按照軟件應用的業(yè)務流程和技術(shù)特征,對軟件進行模塊分解,針對不同模塊分別考慮通用系統(tǒng)特征和調(diào)整因子,提出模塊分解的基本過程和改進的通用調(diào)整因子計算方法;然后基于不同的模塊權(quán)重計算加權(quán)后的功能點總數(shù);最后利用上述方法選取了實際項目進行軟件規(guī)模度量分析。實驗結(jié)果表明,與傳統(tǒng)的IFPUG功能點分析方法相比,改進后的功能點計算結(jié)果與項目實際功能點數(shù)更為接近。
關(guān)鍵詞:軟件規(guī)模度量; IFPUG-FPA; 模塊分解; 調(diào)整因子; 權(quán)重
中圖分類號: TP319
文獻標識碼:A
文章編號:16727800(2017)004015904
0引言 隨著企業(yè)信息化的不斷發(fā)展和升級,各行業(yè)軟件應用呈現(xiàn)數(shù)量多、應用專業(yè)化、系統(tǒng)復雜化等特點,不同行業(yè)間的軟件應用也存在不同特征。在眾多的軟件項目中,有效地度量軟件規(guī)模正成為項目管理過程中越來越重要的環(huán)節(jié)。合理的軟件規(guī)模度量能夠有助于管理部門最大程度地利用預算資金,同時有助于生產(chǎn)部門準確地把握項目時間和項目進度等。目前,國際流行的軟件規(guī)模度量方法是功能點分析方法。本文主要基于軟件模塊分解,研究改進適用于不同軟件特征的功能點分析方法。1IFPUG功能點分析方法概述
1.1功能點分析方法 功能點分析方法[1](Fuction Point Analysis,F(xiàn)PA)對于軟件功能規(guī)模的度量主要從用戶需求方面考慮,并不考慮軟件的具體物理實現(xiàn)和采用的技術(shù)手段。目前,常用的FPA方法[2]包括Mark II-FPA、COSMIC-FPA和IFPUG-FPA,其中IFPUG-FPA應用最為廣泛。 Mark II-FPA認為整個應用軟件應該是一系列邏輯事務的集合,各個邏輯事務應當包含輸入、過程和輸出3個部分;COSMIC-FPA是將應用軟件系統(tǒng)看作是一系列功能過程的集合,每個功能過程分別進行功能規(guī)模的度量,最終對所有功能規(guī)模進行累加,就可以計算出整個應用軟件的整體規(guī)模;而IFPUG-FPA認為應用軟件是由功能組件和數(shù)據(jù)組件構(gòu)成,通過以IFPUG定義的功能點為單位對每類組件進行軟件規(guī)模的度量,從而計算出整個應用軟件的總功能點數(shù),利用該功能點數(shù)來體現(xiàn)應用軟件規(guī)模大小。1.2IFPUG-FPA處理過程 IFPUG-FPA通常的處理過程[3~5]如圖1所示。
主要包括以下幾個步驟: Step1:確定功能點的計數(shù)類型,包括新開發(fā)項目和二次開發(fā)項目兩種計數(shù)類型。 Step2:識別計數(shù)范圍及應用系統(tǒng)邊界,明確哪些功能應被計數(shù)。
Step3:確定未調(diào)整的功能點數(shù)UFP。從業(yè)務角度考慮應用系統(tǒng)開發(fā)的功能點數(shù),包括事務處理功能點數(shù)和數(shù)據(jù)功能點數(shù)。事務功能分為外部輸入(External Input,EI)、外部輸出(External Output,EO)和外部查詢(External Query,EQ);數(shù)據(jù)功能分為內(nèi)部邏輯文件(Internal Logic File,ILF)和外部接口文件(External Interface File,EIF)。確定功能點類型后判斷其對應的復雜度,復雜度轉(zhuǎn)換表[6]如表1所示。計算未調(diào)整功能點數(shù):其中, [K]{x}={F(t)}為根據(jù)不同的復雜度而定的5個部分的加權(quán)因子,X為應用中每個部分的數(shù)量。(1)確定調(diào)整因子VAF。從系統(tǒng)特征的角度考慮對應用系統(tǒng)開發(fā)功能點數(shù)的影響,IFPUG-FPA考慮了14項基本系統(tǒng)特征(General System Characteristic,GSC),分別是:數(shù)據(jù)通信、分布式數(shù)據(jù)處理、性能、重度配置、處理速率、在線數(shù)據(jù)輸入、最終用戶使用頻率、在線升級、復雜處理、可重用行、易安裝性、易操作性、多場所和支持變更。每項按照其對系統(tǒng)的重要程度分為6個級別:無影響、影響較小、有一定影響、重要、比較重要和很重要,相應的賦予數(shù)值為0、1、2、3、4和5。計算調(diào)整因子:其中,DI為GSC的影響程度。(2)計算調(diào)整后功能點數(shù)(FP)。綜合考慮業(yè)務和技術(shù)因素,用調(diào)整系數(shù)VAF對未調(diào)整的功能點數(shù)UFP進行調(diào)整,得到應用系統(tǒng)的最終功能點數(shù)FP。
1.3IFPUG-FPA分析與其它軟件規(guī)模度量方法相比,IFPUG-FPA分析方法更適用于管理信息系統(tǒng),功能點的計算獨立于編程語言等技術(shù)因素,通用性較強、計算方便,比較容易理解和使用,且僅與用戶需求相關(guān)。明確軟件需求后就可以完成軟件規(guī)模的度量,為軟件項目管理帶來便利。當然,IFPUG-FPA的簡單易用性也存在一定局限,例如調(diào)整因子考慮的是整個系統(tǒng)的綜合因素,默認各項GSC關(guān)聯(lián)功能的軟件工作量權(quán)值相當,實際上可能存在這樣一種情況,系統(tǒng)內(nèi)的某些功能模塊的軟件工作量權(quán)值較大,其對應的某些GSC對調(diào)整因子的影響也應該占有較大的權(quán)重;調(diào)整因子所考慮的14項GSC是否仍然適用于目前的各類應用軟件;對于非管理信息系統(tǒng)特征的軟件規(guī)模度量,其準確度存在一定的偏差,現(xiàn)有調(diào)整因子的各個項目不能很好地適用于此類系統(tǒng)。
2基于模塊分解的IFPUG功能點分析方法改進
2.1模塊分解IFPUG-FPA通常的做法是計算出整個系統(tǒng)的UFP,然后評估整個系統(tǒng)的VAF,最后得出總功能點FP。所評估的VAF是針對整個系統(tǒng)而言,考慮的是各項因素的平均影響,當某一部分功能的某些GSC對功能點結(jié)果影響比較大時,這些影響將會被平衡、抵消,從而導致度量結(jié)果產(chǎn)生偏差。基于此,文獻[6]提出在VAF中增加一項權(quán)值因子,以權(quán)衡不同的GSC在VAF中的占比影響。本文考慮針對待度量的軟件系統(tǒng)進行模塊分解,對分解后的模塊分別計算VAF,利用模塊本身的UFP作為權(quán)重,更具有合理性,分解過程為:(1)功能模塊分解,根據(jù)業(yè)務功能進行初步模塊分解。(2)模塊間局部調(diào)整,將不同模塊中GSC影響程度相似的功能點調(diào)整到同一模塊,如某些模塊對應分布式處理,某些模塊偏重實時數(shù)據(jù)處理,某些模塊為常用的信息管理或者偏重UI體驗效果。(3)模塊分解后FP的計算方法,按照原計算方法:
如此便可以平衡不同模塊功能點及其GSC的權(quán)重影響,下文討論針對不同的模塊,對模塊調(diào)整因子取值的計算方法。2.2調(diào)整因子計算IFPUG-FPA中VAF的計算考慮了14項GSC,隨著軟件項目的不斷發(fā)展,后續(xù)研究發(fā)現(xiàn)對于某些系統(tǒng)現(xiàn)有的GSC無法滿足評估的需要,部分GSC的重要性已經(jīng)沒有那么明顯。并基于此,提出了一些改進措施,如文獻[6]中新增了與其它應用的接口、特殊的安全特征、與第三方的直接交互、用戶訓練特征和文檔需求5項GSC;文獻[7]對GSC的取值進行了重新劃定;文獻[8]僅保留了6項GSC,取消了其它8項GSC,作者認為取消這些系統(tǒng)特征對估算結(jié)果差異較小,同時新增了1項GSC即新技術(shù)運用難度并給出了具體確定規(guī)則。文獻[9]~[12]也從業(yè)務需求、系統(tǒng)特性等方面直接或者間接地改進了VAF的影響。以上文獻均基于各自的經(jīng)驗考慮,針對VAF的計算進行了改進調(diào)整,然而不同專家對于項目的經(jīng)驗可能不同,導致其改進意見具有明顯的個性化特征。本文基于上述經(jīng)驗和思路,在IFPUG-FPA基礎(chǔ)上抽取出適用于不同系統(tǒng)特征的通用調(diào)整因子(General Value Adjustment Factor, GVAF)計算方法。(1)GSC類型和數(shù)量動態(tài)化。針對不同特征的系統(tǒng)或者模塊,調(diào)整因子的調(diào)整幅度不同,其考慮的GSC類型和數(shù)量不同,因此相應的GVAF的計算結(jié)果也不一樣。式(2)中,各項GSC的影響程度DI均取平均影響程度2.5時,VAF計算結(jié)果為1,系統(tǒng)功能點不做調(diào)整;各項DI取最低影響程度0時,VAF計算結(jié)果為最小值0.65;各項DI取最高影響程度5時,VAF計算結(jié)果為最大值1.35。據(jù)此分析提出GVAF計算公式如下:
針對不同的系統(tǒng)或模塊,可以分別提出各自關(guān)聯(lián)性較強的GSC項類型,分別計算各模塊的GVAF值。(2)GVAF取值參數(shù)化。VAF的取值范圍固定在0.65~1.35之間,實踐證明該取值對于管理信息系統(tǒng)具有較好的度量效果。為了使GVAF的取值能夠同時更好地適應其它系統(tǒng)特征,對公式(6)進行參數(shù)化處理:
式中αm為GVAFm 的最小值,βm為GVAFm的最大值。條件〖SX(〗αm+ βm2SX)=1的設定是為了將αm和βm限定在區(qū)間[0,2],因為超出此區(qū)間范圍時評估偏離值過大,可以認為GVAF值調(diào)整已經(jīng)沒有什么意義。參數(shù)化后的GVAF取值更加靈活,將可以更好地適應不同的模塊或者其他應用系統(tǒng),如對于實時系統(tǒng)、分布式系統(tǒng)等,可以根據(jù)多項目評估經(jīng)驗,采用模式分類的方法,對αm和βm的取值進行訓練學習,獲得經(jīng)驗取值,方便以后其他項目的軟件規(guī)模度量。經(jīng)過以上過程處理后,基于模塊分解的FP計算公式為:
3案例分析與對比以筆者主要參與的某無線網(wǎng)規(guī)劃審核平臺為例,按照業(yè)務流程系統(tǒng)可分為項目管理、需求管理、規(guī)劃審核、勘察設計審核、數(shù)據(jù)管理、GIS、審核規(guī)則和系統(tǒng)管理8個業(yè)務模塊,根據(jù)業(yè)務和技術(shù)特征相似的原則進行分類,其中項目管理、需求管理、規(guī)劃審核、勘察設計審核、數(shù)據(jù)管理和系統(tǒng)管理具有典型的管理信息系統(tǒng)特征,統(tǒng)一歸為第一類模塊;GIS涉及地圖操作,歸為第二類模塊;審核規(guī)則具有典型的算法及實時特征,歸為第三類模塊。在對系統(tǒng)進行模塊分解前,統(tǒng)一考慮VAF因子,按照公式(2)針對14項GSC進行打分,如表2所示,最終計算的系統(tǒng)VAF=0.65+0.01*31=0.96 。
在對系統(tǒng)進行模塊分解后,第一類模塊仍然按照14項GSC進行打分,GVAF1=0.65+0.01*31=0.96 ;第二類模塊根據(jù)其技術(shù)特征,取定8項GSC:GIS技術(shù)難度、數(shù)據(jù)通信、性能、重度配置、處理速率、最終用戶使用頻率、復雜處理、易操作性,如表3所示,αm取0.65,按照公式(7)計算得到:
第三類模塊根據(jù)其技術(shù)特征,取定9項GSC:算法復雜度、實時響應、數(shù)據(jù)通信、分布式數(shù)據(jù)處理、性能、重度配置、處理速率、復雜處理、可重用性,如表4所示,αm取0.65,按照公式(7)計算得到:
可以看到,針對不同分解模塊,基本系統(tǒng)特征的考慮側(cè)重點不同,即使是相同的GSC項目,其在不同的模塊中評分值也不盡相同,簡單的基于系統(tǒng)整體考慮VAF顯然忽略了這些因素對最終功能點的影響。模塊分解前后,軟件規(guī)模度量的各項值如表5所示,分解后對于第二類模塊, FP與實際偏差由原來的22.86%降低到11.21%;對于第三類模塊,F(xiàn)P與實際偏差由原來的18.40%降低到11.69%。當系統(tǒng)中這些分解模塊的功能點占比較大時,其對總體FP的影響程度就會較大,極端情況下,對于非管理信息系統(tǒng),該方法對FP度量的影響效果將十分顯著。
4結(jié)語 本文基于模塊分解的FPA方法,在保留IFPUG-FPA原有優(yōu)點的同時,一方面考慮了VAF中GSC的權(quán)值影響,另一方面針對分解模塊允許靈活調(diào)整GSC項和取值范圍,改進了對于管理信息系統(tǒng)的度量方法,能夠很好地適應非管理信息系統(tǒng)的軟件規(guī)模度量。
參考文獻:[1]蔣輝,尹俊文,何鴻君,方禮遠.功能點方法的分析與比較[J].計算機工程與科學,2009,31(5):8789.
[2]胡云龍.軟件規(guī)模度量方法介紹[J].計算機時代,2006(7):1721.
[3]馬賢穎,張敏,董石磊.功能點估算方法研究與應用[J].現(xiàn)代電子技術(shù),2011,34(8):58 68.
[4]ARCHANA SRIVASTAVA.Enhancement in function point analysis[J].International Journal of Software Engineering & Applications(USEA),2012,3(6):129136.
[5]田志偉,張廣泉.基于IFPUG的功能點分析方法[J].計算機與數(shù)字工程,2007,35(12):121123.
[6]寧靜鋒,童旅楊.軟件項目功能點估算[J].長春工業(yè)大學學報:自然科學版,2014, 35(3):309314.
[7]劉文浩,樊麗華.基于IFPUG功能點分析方法的值調(diào)整因子的應用研究[J].青海師范大學學報:自然科學版,2011(1):2526.
[8]劉迪.基于改進的功能點分析法在軟件項目規(guī)模估計中的應用研究[D].合肥:合肥工業(yè)大學,2007.
[9]羅光春,聶坤苗,溫川彪,等.功能點分析法的研究和改進[J].電子科學大學學報,2009,38(6):983986.
[10]尹柯,蔣軍成.基于IFPUG功能點分析方法改進特征值因子的應用研究[J].計算機與數(shù)字工程,2014,42(11):21232127.
[11]江韶志,羅梓威.電信行業(yè)應用軟件需求工作量評估應用淺析[J].廣東通信技術(shù),2013(7):5860.
[12]劉庚.簡化的功能點度量方法的比較和分析[J].計算機科學與探索,2015,9(12):1459 1470.
(責任編輯:陳福時)