侯成功 譚裴 葉敏
摘 要:目前軟件項(xiàng)目較多采用IFPUG功能點(diǎn)分析法進(jìn)行軟件規(guī)模度量,在電信行業(yè)軟件項(xiàng)目實(shí)際評(píng)估中有功能點(diǎn)描述不明晰、功能點(diǎn)存在二次優(yōu)化和相似性,以及對(duì)呈現(xiàn)出新技術(shù)特征的功能點(diǎn)評(píng)估存在較大誤差等問(wèn)題。結(jié)合電信行業(yè)軟件應(yīng)用特點(diǎn),分析研究了問(wèn)題產(chǎn)生的原因及解決方法。提出一種改進(jìn)方法,對(duì)待評(píng)估功能點(diǎn)描述粒度進(jìn)行識(shí)別及增加一項(xiàng)獨(dú)立補(bǔ)償因子,該因子基于多個(gè)維度對(duì)單個(gè)功能點(diǎn)進(jìn)行評(píng)估。利用改進(jìn)方法對(duì)實(shí)際項(xiàng)目進(jìn)行軟件規(guī)模度量,結(jié)果顯示,改進(jìn)后的功能點(diǎn)數(shù)評(píng)估值比常規(guī)的IFPUG功能點(diǎn)分析方法的評(píng)估值更接近實(shí)際開(kāi)發(fā)功能點(diǎn)數(shù)。
關(guān)鍵詞:軟件規(guī)模度量;IFPUG功能點(diǎn)分析;獨(dú)立補(bǔ)償因子
DOI:10.11907/rjdk.171432
中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2017)009-0142-03
Abstract:At present, the IFPUG function point analysis method is mostly used for software size measurement in projects, which displays problems, in practical project assessing process, that function point descriptions are not clear, function points can be optimized and some are similar, and there are big errors when function points have adopted new technologies. To solve these problems, the paper, combining with telecom industry characteristics, analyses concrete reasons and solutions, proposes to recognize description graininess of function, and increases an independent complementary factor, which access a single function point based on several dimensions. It finally adopts improved steps above to make software size measurement for a practical project case. The result shows that function point numbers valued , after improving, are more close to real developing function point numbers compare to traditional IFPUG function point analysis method.
Key Words:software size measurement; IFPUG-FPA Function point analysis; independent complementary factor
0 引言
互聯(lián)網(wǎng)的深入發(fā)展,促使電信企業(yè)的信息化程度不斷加深,以更好地支撐計(jì)費(fèi)和運(yùn)營(yíng)管理等業(yè)務(wù)。電信行業(yè)相關(guān)軟件應(yīng)用的投資規(guī)模日益增加,如何有效評(píng)估軟件規(guī)模大小是電信行業(yè)軟件項(xiàng)目管理的重要課題。本文對(duì)國(guó)際流行的IFPUG功能點(diǎn)分析(IFPUG Function Point Analysis,IFPUG-FPA)方法在電信行業(yè)軟件項(xiàng)目中的應(yīng)用進(jìn)行研究。
1 IFPUG功能點(diǎn)分析過(guò)程
1.1 IFPUG功能點(diǎn)分析步驟
IFPUG-FPA方法[1-2]將應(yīng)用軟件按照業(yè)務(wù)組件進(jìn)行分解,每類組件的軟件規(guī)模大小通過(guò)IFPUG定義的功能點(diǎn)為度量單位進(jìn)行計(jì)算,最后匯總得到整個(gè)應(yīng)用軟件的總功能點(diǎn)數(shù)來(lái)反映軟件的總體規(guī)模。該方法從用戶需求角度,將應(yīng)用軟件劃分為事務(wù)處理功能和數(shù)據(jù)功能,其中事務(wù)處理功能包括外部輸入(External Inputs,EI)、外部輸出(External Outputs,EO)和外部查詢(External Queries,EQ ),數(shù)據(jù)功能包括內(nèi)部邏輯文件(Internal Logical Files,ILF)和外部接口文件(External Interface Files,EIF)。
IFPUG-FPA方法分析步驟[3-4]如下:①確定功能點(diǎn)的計(jì)數(shù)類型,包括新開(kāi)發(fā)項(xiàng)目和二次開(kāi)發(fā)項(xiàng)目?jī)煞N計(jì)數(shù)類型;②識(shí)別計(jì)數(shù)范圍及應(yīng)用系統(tǒng)邊界,明確哪些功能應(yīng)被計(jì)數(shù);③確定未調(diào)整的功能點(diǎn)數(shù)(Unadjusted Function Point,UFP),確定功能點(diǎn)類型后判斷其對(duì)應(yīng)的復(fù)雜度。
復(fù)雜度轉(zhuǎn)換如表1所示。
計(jì)算未調(diào)整功能點(diǎn)數(shù):UFP=∑∑W*X
(1) 式(1)中,W為根據(jù)不同的復(fù)雜度而定的5個(gè)部分加權(quán)因子;X為應(yīng)用中每個(gè)部分的數(shù)量。
(1)確定調(diào)整因子VAF。從系統(tǒng)特征的角度考慮對(duì)應(yīng)用系統(tǒng)開(kāi)發(fā)功能點(diǎn)數(shù)的影響,IFPUG-FPA考慮了14項(xiàng)通用系統(tǒng)特征(General System Characteristic,GSC),每項(xiàng)按照其對(duì)系統(tǒng)的重要程度分為6個(gè)級(jí)別,相應(yīng)地賦予影響程度值為0~5。
計(jì)算調(diào)整因子:VAF=0.65+0.01*∑14i=1DIi
(2) 式(2)中,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。FP=UFP*VAFendprint
(3)1.2 IFPUG功能點(diǎn)識(shí)別
IFPUG-FPA方法的關(guān)鍵在于功能點(diǎn)的識(shí)別和描述[4],其中 ILF的識(shí)別規(guī)則為:該組數(shù)據(jù)或控制信息邏輯相關(guān)且由用戶定義;在應(yīng)用邊界內(nèi)通過(guò)一個(gè)或幾個(gè)事務(wù)處理過(guò)程來(lái)維護(hù)。 EIF識(shí)別規(guī)則為:該組數(shù)據(jù)或控制信息邏輯相關(guān)且由用戶定義;處于被計(jì)數(shù)應(yīng)用之外,且被該應(yīng)用查詢;由其它應(yīng)用而不是被計(jì)數(shù)應(yīng)用維護(hù)。
EI識(shí)別規(guī)則為:數(shù)據(jù)或控制信息從應(yīng)用邊界之外輸入;如果穿過(guò)邊界的數(shù)據(jù)不是改變系統(tǒng)行為的控制信息,那么至少應(yīng)維護(hù)一個(gè)ILF。
EO識(shí)別規(guī)則為:數(shù)據(jù)或控制信息發(fā)送出應(yīng)用邊界;滿足處理邏輯包含至少一個(gè)數(shù)學(xué)公式或計(jì)算過(guò)程 、至少一個(gè)ILF被處理邏輯維護(hù)或處理邏輯改變了系統(tǒng)行為這3個(gè)條件中的一個(gè)。
EQ識(shí)別規(guī)則為:數(shù)據(jù)或控制信息發(fā)送出應(yīng)用邊界;該處理邏輯從一個(gè)ILF或EIF返回?cái)?shù)據(jù)或控制信息,不包含任何數(shù)學(xué)公式或計(jì)算過(guò)程,不改變系統(tǒng)行為,并且不維護(hù)任何ILF。
1.3 IFPUG-PFA優(yōu)劣分析
相比于其它軟件規(guī)模度量方法,IFPUG-FPA從用戶需求角度考慮,容易為用戶及其他非專業(yè)人士理解和使用;功能點(diǎn)計(jì)算過(guò)程簡(jiǎn)單且具有較強(qiáng)的通用性,在開(kāi)發(fā)前就可進(jìn)行,有利于預(yù)算部門合理安排預(yù)算費(fèi)用和項(xiàng)目管理者提前對(duì)項(xiàng)目進(jìn)行計(jì)劃把控。功能點(diǎn)分析方法來(lái)源于最初的工程實(shí)踐。隨著軟件項(xiàng)目的發(fā)展,行業(yè)應(yīng)用軟件越來(lái)越專業(yè)化、復(fù)雜化,常規(guī)的IFPUG-FPA方法顯現(xiàn)出不足。目前在應(yīng)用IFPUG-FPA方法時(shí)存在如下問(wèn)題:
(1)雖然IFPUG-FPA對(duì)功能點(diǎn)有比較清晰的定義和識(shí)別規(guī)則,但在實(shí)際評(píng)估中,功能點(diǎn)復(fù)雜度的判斷是依據(jù)功能點(diǎn)描述來(lái)確定的,功能點(diǎn)的描述要素包括數(shù)據(jù)元素類型(Data Element Type,DET)、記錄元素類型(Record Element Type,RET)和文件類型參考(File Type Record,F(xiàn)TR),基于這些要素針對(duì)功能點(diǎn)進(jìn)行描述的詳細(xì)程度帶有一定的主觀性,例如一項(xiàng)功能需求在被描述成多項(xiàng)功能點(diǎn)時(shí),評(píng)估得到的功能點(diǎn)往往會(huì)超出描述成單項(xiàng)功能點(diǎn)得到的結(jié)果,造成評(píng)估功能點(diǎn)與實(shí)際功能點(diǎn)偏離。
(2)在功能點(diǎn)二次優(yōu)化的情況下,如果仍然按照新增功能點(diǎn)計(jì)算,得到的功能點(diǎn)數(shù)往往超出實(shí)際功能點(diǎn)數(shù)。
(3)當(dāng)功能點(diǎn)之間存在相似處理邏輯,在代碼復(fù)用情況下,評(píng)估功能點(diǎn)往往會(huì)超出實(shí)際功能點(diǎn)。
(4)對(duì)于典型的管理信息系統(tǒng),IFPUG-FPA方法具有較好的度量效果。但是當(dāng)電信行業(yè)很多軟件具有非管理信息系統(tǒng)特征時(shí),如采用新技術(shù)或者存在復(fù)雜的計(jì)算或處理流程時(shí),估算出的功能點(diǎn)數(shù)與實(shí)際功能點(diǎn)數(shù)就會(huì)存在較大偏差。有研究表明,IFPUG-FPA方法中的GSC項(xiàng)已不能很好地滿足現(xiàn)代軟件評(píng)估的需要。因此,學(xué)者提出了優(yōu)化改進(jìn)措施,如文獻(xiàn)[5]、文獻(xiàn) [6]對(duì) VAF進(jìn)行了改進(jìn);文獻(xiàn)[7]、文獻(xiàn)[8]對(duì)GSC項(xiàng)目取值和類別進(jìn)行了調(diào)整;文獻(xiàn)[9]、文獻(xiàn)[10]基于VAF額外考慮了一些調(diào)整因素;文獻(xiàn)[10]~[13]結(jié)合電信行業(yè)軟件定制化特點(diǎn),分別對(duì)各類功能點(diǎn)復(fù)雜度取值、GSC項(xiàng)目作適應(yīng)性調(diào)整等。
2 IFPUG-FPA在電信行業(yè)應(yīng)用中的改進(jìn)
針對(duì)電信行業(yè)軟件項(xiàng)目工作量評(píng)估實(shí)踐中存在的問(wèn)題,本文提出功能點(diǎn)分析改進(jìn)建議和方法,要求辨別功能點(diǎn)描述的粗細(xì)顆粒度,同時(shí)增加一項(xiàng)針對(duì)功能點(diǎn)進(jìn)行調(diào)整的獨(dú)立補(bǔ)償因子(Independent Complementary Factor,ICF),以修正上述問(wèn)題帶來(lái)的功能點(diǎn)數(shù)估算偏差,提高IFPUG-FPA方法在軟件規(guī)模度量上的準(zhǔn)確度。
ICF取值主要考慮4個(gè)方面維度,下面結(jié)合某無(wú)線網(wǎng)規(guī)劃設(shè)計(jì)審核平臺(tái)進(jìn)行詳細(xì)闡述。該平臺(tái)業(yè)務(wù)功能包括系統(tǒng)管理、項(xiàng)目管理、規(guī)劃審核、勘察設(shè)計(jì)審核、數(shù)據(jù)管理、GIS模塊和輔助審核規(guī)則,其中系統(tǒng)管理、項(xiàng)目管理、規(guī)劃審核、勘察設(shè)計(jì)審核和數(shù)據(jù)管理具有典型的管理信息系統(tǒng)特征,而GIS模塊和輔助審核規(guī)則具有一些不同的技術(shù)特征。
2.1 功能點(diǎn)描述維度
以規(guī)劃審核中的宏站規(guī)劃流程導(dǎo)入功能點(diǎn)為例。該功能包括數(shù)據(jù)入庫(kù)和數(shù)據(jù)校驗(yàn)兩部分,分別以粗、細(xì)粒度進(jìn)行描述,估算功能點(diǎn)數(shù)如表2所示。
從表2可以看出,對(duì)功能點(diǎn)進(jìn)行拆分描述后,估算的功能點(diǎn)數(shù)要明顯放大。在實(shí)際項(xiàng)目中,廠家往往傾向于對(duì)功能點(diǎn)進(jìn)行拆分描述以獲得更大的預(yù)算。針對(duì)這種情況,建議在軟件項(xiàng)目工作量評(píng)估時(shí)采取兩種措施:①根據(jù)軟件業(yè)務(wù)實(shí)際需求,統(tǒng)一功能點(diǎn)描述的顆粒度,能夠合并的功能點(diǎn)建議進(jìn)行合并后以粗粒度描述,是否需要合并可以參考DET和FTR的情況;②根據(jù)業(yè)務(wù)功能,對(duì)存在功能點(diǎn)拆分描述的情況給予系數(shù)調(diào)整值ICFI,根據(jù)經(jīng)驗(yàn),單個(gè)功能點(diǎn)拆分為兩項(xiàng)時(shí),系數(shù)平均取值0.6,拆為三項(xiàng)時(shí)系數(shù)平均取值0.5,拆分描述項(xiàng)N越多,對(duì)估算功能點(diǎn)數(shù)的放大越明顯,系數(shù)扣減值越大,據(jù)此進(jìn)行線性擬合系數(shù)調(diào)整取值:ICFI=0.8-0.1*N,2≤N≤6
(4) 措施1:能使功能點(diǎn)描述估算的結(jié)果更好地貼近FPA方法,但是對(duì)功能點(diǎn)粗細(xì)粒度的辨別往往需花費(fèi)較多的時(shí)間;措施2:不需要對(duì)功能點(diǎn)表進(jìn)行大的調(diào)整,操作更方便。如果拆分功能點(diǎn)項(xiàng)數(shù)N>6,為了防止估算結(jié)果偏離過(guò)大,建議采用措施1進(jìn)行合并描述,合并后ICFI取值為1。
2.2 功能點(diǎn)優(yōu)化維度
電信行業(yè)軟件應(yīng)用具有規(guī)模大、使用周期長(zhǎng)的特點(diǎn),通常分階段實(shí)施,二期項(xiàng)目中往往含有對(duì)一期項(xiàng)目已有功能點(diǎn)的調(diào)整或者優(yōu)化。針對(duì)這類功能點(diǎn),需要考慮一定的調(diào)整系數(shù),按照軟件項(xiàng)目各階段工作量比例優(yōu)化功能點(diǎn)調(diào)整系數(shù)。
ICFII=∑階段比例*階段新增工作量占比 (5)
階段比例為需求20%、管理10%、設(shè)計(jì)20%、開(kāi)發(fā)40%、測(cè)試10%,優(yōu)化功能點(diǎn)新增工作量占各階段總工作量的比重分別為:需求70%、管理90%、設(shè)計(jì)60%、開(kāi)發(fā)80%、測(cè)試60%,計(jì)算一般優(yōu)化功能點(diǎn)調(diào)整系數(shù)建議值(也可根據(jù)具體項(xiàng)目按照公式(5)進(jìn)行調(diào)整)。ICFII=20%*70%+10%*90%+20%*60%+endprint
40%*80%+10%*60%=0.73
(6)2.3 功能點(diǎn)間相似性維度
對(duì)于典型的管理信息系統(tǒng),相同模塊內(nèi)或者不同模塊之間,功能點(diǎn)與功能點(diǎn)之間業(yè)務(wù)需求和軟件開(kāi)發(fā)具有一定的相似性。以規(guī)劃審核中的宏站規(guī)劃庫(kù)操作為例,估算功能點(diǎn)與實(shí)際功能點(diǎn)如表3所示。
當(dāng)功能點(diǎn)相似度較高時(shí),估算的功能點(diǎn)數(shù)高于實(shí)際開(kāi)發(fā)的功能點(diǎn)數(shù),在進(jìn)行軟件規(guī)模評(píng)估時(shí)應(yīng)注意識(shí)別功能點(diǎn)之間的相似度。根據(jù)實(shí)例統(tǒng)計(jì),建議相似度調(diào)整系數(shù)ICFIII取值在0.6~0.8之間,本案例平臺(tái)選取調(diào)整系數(shù)為0.75。
2.4 功能點(diǎn)技術(shù)復(fù)雜度維度
當(dāng)系統(tǒng)中的部分功能點(diǎn)開(kāi)發(fā)存在一定技術(shù)復(fù)雜度時(shí),額外增加一項(xiàng)調(diào)整系數(shù)ICFIV,根據(jù)經(jīng)驗(yàn)值建議取值范圍在1.0~1.5之間,通常技術(shù)復(fù)雜度增加一個(gè)項(xiàng)目,系數(shù)取值增加0.1。例如案例平臺(tái)的GIS模塊中的部分功能點(diǎn),涉及展示要求復(fù)雜和大數(shù)據(jù)量運(yùn)算兩個(gè)技術(shù)復(fù)雜度項(xiàng)目,在軟件規(guī)模評(píng)估時(shí)取ICFIV值為1.2;對(duì)于輔助審核規(guī)則模塊中的功能點(diǎn)僅涉及運(yùn)算實(shí)時(shí)性要求較高的一個(gè)項(xiàng)目,則ICFIV取值為1.1。
基于上述4個(gè)維度的關(guān)聯(lián)系數(shù),得出功能點(diǎn)的獨(dú)立補(bǔ)償因子計(jì)算值為:ICF=ICFI*ICFII*ICFIII*ICFIV
(6) 經(jīng)過(guò)上述步驟,調(diào)整后單個(gè)功能點(diǎn)(Adusted Single Function Point,ASFP)估算公式為:ASFPi=UFPi*ICFi
=UFPi*ICFI,i*ICFII,i*ICFIII,i*ICFIV,i
(7) i為第i項(xiàng)功能點(diǎn)。
全部功能點(diǎn)獨(dú)立調(diào)整,再經(jīng)過(guò)VAF后系統(tǒng)功能點(diǎn)估算公式為:FP=∑iASFPi*VAF
(8) 基于以上改進(jìn)措施對(duì)案例平臺(tái)提供的原始功能點(diǎn)進(jìn)行功能點(diǎn)數(shù)重新估算,改進(jìn)前后功能點(diǎn)數(shù)對(duì)比如表4所示。從表4可以看出,經(jīng)過(guò)改進(jìn)措施處理后的估算功能點(diǎn)數(shù)與實(shí)際開(kāi)發(fā)功能點(diǎn)數(shù)的偏差,由改進(jìn)前的11.12%縮減到4.97%。
3 結(jié)語(yǔ)
通過(guò)對(duì)電信行業(yè)軟件規(guī)模度量過(guò)程中的問(wèn)題進(jìn)行分析,闡述了軟件功能點(diǎn)評(píng)估過(guò)程中應(yīng)當(dāng)注意的事項(xiàng),并從幾個(gè)維度考慮,提出了針對(duì)單個(gè)功能點(diǎn)估算增加一項(xiàng)獨(dú)立補(bǔ)償因子的改進(jìn)方法?;趯?shí)際案例進(jìn)行分析,顯示該方法對(duì)軟件項(xiàng)目功能點(diǎn)估算結(jié)果具有積極的改進(jìn)效果。
參考文獻(xiàn):
[1] 蔣輝,尹俊文,何鴻君,等.功能點(diǎn)方法的分析與比較[J].計(jì)算機(jī)工程與科學(xué),2009,31(5):87-89.
[2] 胡云龍.軟件規(guī)模度量方法介紹[J].計(jì)算機(jī)時(shí)代,2006(7):17-21.
[3] 田志偉,張廣泉.基于IFPUG的功能點(diǎn)分析方法[J].計(jì)算機(jī)與數(shù)字工程,2007,35(12):121-123.
[4] 劉迪.基于改進(jìn)的功能點(diǎn)分析方法在軟件項(xiàng)目規(guī)模估計(jì)中的應(yīng)用研究[D].合肥:合肥工業(yè)大學(xué),2007.
[5] ARCHANA SRIVASTAVA, DR SYED QAMAR ABBAS, DR S K SINGH. Enhancement in function point analysis[J].International Journal of Software Engineering & Application(USEA), 2012,3(6):129-136.
[6] 尹柯,蔣軍成.基于IFPUG功能點(diǎn)分析方法改進(jìn)特征值因子的應(yīng)用研究[J].計(jì)算機(jī)與數(shù)字工程,2014,42(11):2123-2127.
[7] 劉文浩,樊麗華.基于IFPUG 功能點(diǎn)分析方法的值調(diào)整因子的應(yīng)用研究[J].青海師范大學(xué)學(xué)報(bào):自然科學(xué)版,2011(1):25-34.
[8] 寧?kù)o鋒,童旅楊.軟件項(xiàng)目功能點(diǎn)估算[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2014,35(3):309-314.
[9] 羅光春,聶坤苗,溫川彪,等.功能點(diǎn)分析法的研究和改進(jìn)[J].電子科技大學(xué)學(xué)報(bào),2009,38(6):983-986.
[10] 高騰崗,方小龍,徐應(yīng)濤.軟件復(fù)雜度因子在功能點(diǎn)規(guī)模估算中的分析與應(yīng)用[C].第一屆中國(guó)高校通信類院系學(xué)術(shù)研討會(huì)論文集,2007.
[11] 江韶志,羅梓威.電信行業(yè)應(yīng)用軟件需求工作量評(píng)估應(yīng)用淺析[J].廣東通信技術(shù),2013(7):58-60.
[12] 陳婷,吳俊.功能點(diǎn)法在電信IT支撐系統(tǒng)中的改進(jìn)應(yīng)用[J].廣東通信技術(shù),2011(1):23-26.
[13] 趙釘,陳亞峰.基于FPA的軟件工程量評(píng)估方法及應(yīng)用[J].郵電設(shè)計(jì)技術(shù),2014(11):14-17.
(責(zé)任編輯:杜能鋼)endprint