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