寧靜峰, 童旅楊
(長春工業(yè)大學計算機科學與工程學院,吉林長春 130012)
軟件開發(fā)早期階段,首要工作就是對軟件功能點估算,再到對工作量估算、成本估算,這將為項目的計劃、決策及資源分配提供必要的支持。目前較為廣泛的方法是功能點估算方法[1-4]。功能點是代碼行度量的替代方法之一,是對程序規(guī)模的綜合度量,可以用于項目早期階段的規(guī)模估算。從需求說明計算出功能點比計算出代碼行更容易,而且可以使用功能點作為基礎,計算出以代碼行表示的規(guī)模度量值[5]。IFPUG功能規(guī)模度量(Functional Size Measurement,F(xiàn)SM)是用功能點分析(FPA)方法[6]來度量軟件功能規(guī)模。功能點分析從用戶角度度量軟件開發(fā),不考慮軟件的物理實現(xiàn)。
1)早期估算結果與最后實際成本相比,其誤差在±30%的范圍內。這是當前所能達到的對開發(fā)的早期階段估算的精度。
2)此估算方法允許在軟件生命周期中對估算去粗取精、去偽存真。每當有更多的可用信息時,則可通過監(jiān)控與再估算達到更高的精確度。
3)此估算方法易于為估算員所使用。這樣在需要的時候就能快速進行估算。例如進度檢查對策略變更的評價就有這種情況。
4)每個有關人員都了解這些規(guī)則。當估算過程易于理解的時候,應用軟件功能點估算,管理部門會感到更加安全。
5)此估算方法由工具及文檔所支持。工具的適用性增加了該方法的效果,這主要是因為能更快且按標準樣式獲得估算結果。
6)此估算方法被軟件開發(fā)隊伍及其管理部門所信任。這有助于贏得每個關心該估算人員的參與。
軟件功能規(guī)模估算過程一般分為如下幾步:
1)收集可得的文檔確定估算的類型;
2)確定估算范圍和應用邊界;
3)度量數(shù)據功能和事務功能;
4)確定未調整功能點數(shù);
5)確定調整因子;
6)計算調整后的功能點數(shù)并編寫文檔,報告度量結果。
軟件功能規(guī)模度量過程如圖1所示。
圖1 IFPUG功能點法計算過程
要對軟件項目進行功能規(guī)模度量,首先要熟悉該軟件所交付的功能或所影響的功能,這些信息的主要來源就是該軟件項目的文檔,以支持后續(xù)的功能規(guī)模度量活動。在熟悉文檔的基礎上,根據功能點計數(shù)的目的識別出功能點計數(shù)類型,然后確定計數(shù)范圍和應用邊界。由于軟件功能規(guī)模是度量功能用戶需求的結果,因此要識別功能用戶需求,進而為后續(xù)的功能點計數(shù)過程做準備。度量數(shù)據功能和事務功能是功能規(guī)模度量過程中最重要的活動,把識別出來的功能用戶需求分為數(shù)據功能和事務功能,然后根據相關規(guī)則對這些功能進行度量,得到這些數(shù)據功能和事務功能的功能規(guī)模。不同的功能點計數(shù)類型有不同的功能規(guī)模計算公式,結合前面得到的數(shù)據功能和事務功能的功能規(guī)模,計算基于14項系統(tǒng)基本特征的值的調整因子,根據公式得到調整后的功能點數(shù)量。
軟件項目管理中的功能點估算法將功能點分為5類:內部邏輯文件(Internal Logical File,ILF),外部接口文件(External Interface File,EIF),外部輸入(External Input,EI),外部輸出(External Output,EO)和外部查詢(External Inquiry,EQ)。其中,ILF和EIF屬于數(shù)據類型的功能點;EI,EO,EQ屬于事務類型的功能點。
2.2.1 EI
處理來自邊界外的數(shù)據或控制信息的基本過程,它的主要目的是維護一個或多個ILF或者改變應用行為。增、刪、改是典型的EI。
2.2.2 EO
發(fā)送數(shù)據或控制信息到邊界外部的基本過程,與EQ相比包含了額外的處理過程。EO的主要目的是通過處理邏輯呈現(xiàn)信息給用戶,不僅僅是在應用中提取數(shù)據或控制信息。
2.2.3 EQ
把數(shù)據或者控制信息發(fā)送到邊界外部的基本過程,它的主要目的是通過對數(shù)據或控制信息的提取而把數(shù)據呈現(xiàn)給用戶。其處理邏輯不包含數(shù)學公式或計算,也不會創(chuàng)建衍生數(shù)據,不能維護ILF,也不能改變應用行為。
2.2.4 ILF
被度量應用邊界內部維護的、用戶可識別的、邏輯相關的數(shù)據或控制信息組。ILF的主要目的是保存由被度量應用的一個或多個基本過程維護的數(shù)據。
2.2.5 EIF
用戶可識別的、邏輯相關的數(shù)據組或控制信息,其由被度量應用所引用,但在另一個應用邊界內維護。EIF的主要目的是保存由被度量應用的一個或多個基本過程引用的數(shù)據,這意味著一個應用的EIF必定是另一個應用的ILF。
未調整功能點(UFP)是數(shù)據功能點和事務功能點的總和。識別業(yè)務中所有的數(shù)據對象和系統(tǒng)中基本事務處理。確定功能類型屬于外部接口文件、內部邏輯文件、外部輸入、外部輸出還是外部查詢。確定功能點類型之后判斷其對應的功能和復雜度,復雜度轉換見表1。
表1 復雜度轉換表
計算功能數(shù)(UFC):
式中:W——根據不同的復雜度而定的5個部分的加權因子;
X——應用中每個部分的數(shù)量。
系統(tǒng)基本特征的屬性GSC共14項,其比重占未調整功能點的±35%。這14項分別是:
1)數(shù)據通信;
2)分布式數(shù)據處理;
3)性能;
4)重度配置;
5)處理速率;
6)在線數(shù)據輸入;
7)最終用戶使用頻率;
8)在線升級;
9)復雜處理;
10)可重用性;
11)易安裝性;
12)易操作性;
13)多場所;
14)支持變更。
通用系統(tǒng)特征見表2。
表2 通用系統(tǒng)特征
調整因子(VAF)的計算公式如下:
式中:DI——GSC的影響程度。
由式(1)和式(2)得出功能點數(shù):
以圖書管理系統(tǒng)為例,圖書管理系統(tǒng)的主要功能包括管理員信息、管理圖書信息、管理借閱、歸還信息和查詢圖書信息等。簡要說明,應用IFPUG功能點分析方法進行軟件項目功能點估算。
功能點說明及復雜度轉換表分別見表3和表4。
表3 圖書管理系統(tǒng)功能點說明表
表4 復雜度轉換表
由式(1)得出系統(tǒng)未調整的功能點數(shù):
由式(2)得出調整因子:
由式(3)計算出功能點數(shù):
由于功能點分析法產生于70年代,現(xiàn)在隨著軟件開發(fā)技術的不斷發(fā)展,很多系統(tǒng)特性方面的調整系數(shù)不適應現(xiàn)在軟件規(guī)模估算的規(guī)模,從而降低了功能點分析法的作用。具體到各個項目,在管理因素往往會有很大的差異,或多或少影響項目的規(guī)模和工作量,而這些傳統(tǒng)的功能點都沒有考慮到,因此有必要對系統(tǒng)特性進行修改。計算未調整的功能點數(shù)就是計算所有的功能點復雜性權重和。每個功能點的復雜性等級有“低”、“一般”、“高”3個等級,UFP復雜性權重見表5。
表5 UFP復雜性權重
由式(1)得出系統(tǒng)未調整的功能點數(shù):
在以往的14個調整因子的基礎上增加到19個調整因子,增加其主觀性。另外增添的5個因子分別是:與其它應用的接口,特殊的安全特征,與第三方的直接交互,用戶訓練特征,文檔需求。技術復雜因子的組成見表6。
表6 技術復雜因子的組成
權值的取值范圍調整可以根據不同的項目用線性插值法來解決一些近似的問題,以EI為例,可將RET和DET看作二元函數(shù)的兩個自變量X,Y,二元函數(shù)的因變量Z為EI的權值。利用插值法可以得到Z與X,Y的具體函數(shù)關系式。用求得的新的函數(shù)關系更加適合當前本項目。避免出現(xiàn)特殊項目的不合理性。
對一些不合理的GSC項重新定新的DI評分標準表,進行加權處理,與實際情況更為接近,估算更為準確,修改主要涉及的項在線輸入的復雜度。改進后的在線數(shù)據輸入復雜度評分標準見表7。
表7 改進后的在線數(shù)據輸入復雜度評分標準表
針對不同的項目來確定GSC的內容,可通過經驗法對其進行確定,添加一個百分比權值的因子W,用來權衡不同的項目在GSC所占不同影響程度,其總和為1,每個W介于0到1之間包括邊界。改進的公式:
式中:∑W=1;
N——GSC個數(shù)。
由式(4)得出調整因子:
改進后公式更好地反映各個GSC對項目影響的情況,能更加滿足不同類型項目功能點的估算。
調整后的功能點數(shù)FP用式(3)計算出功能點數(shù):
FP=UFC*VAF=1.590 5*151=240.165 5
實際項目的功能點數(shù)為230個,未改進前計算功能點的誤差是|206.7-230|/230=10.13%,改進后計算功能點的誤差為|240.165 5-230|/230=4.42%。即改進后的功能點估算的方法更接近真實值。
首先從軟件項目功能點估算方法中最有代表性的一些方法和技術進行研究,然后對軟件項目功能點相應估算方法進行評價,并在此基礎上對IFPUG方法進行改進,研究適合一般軟件企業(yè)的功能點估算方法,以期為軟件開發(fā)組織提供有效的應用估算技術,為提高功能點估算的準確度提供借鑒。
[1] 蔣輝,尹俊文,何鴻君,等.功能點方法的分析與比較[J].計算機工程與科學,2009(5):87-89.
[2] 劉瑩.功能點在基于TSP模型開發(fā)過程中的應用研究[J].信息技術與信息化,2006(4):69-72.
[3] 趙穎,任永昌,邢濤.基于功能點的軟件規(guī)模估算方法研究[J].遼寧工業(yè)大學學報,2008,28(5):281-283.
[4] 譚仁先,汪艷.功能點分析在軟件工程中的應用[J].蘭州交通大學學報,2005,24(5):89-91.
[5] 宋銳,徐鋒.軟件估算:“黑匣子”揭秘[M].北京:電子工業(yè)出版社,2007.
[6] 李幟,林立新,曹亞波.功能點分析方法與實踐[M].北京:清華大學出版社,2005.
[7] 許壽椿,林寅.軟件開發(fā)成本估算[M].北京:中央民族學院出版社,1991.
[8] 曹濟,溫麗.軟件項目功能點度量方法與應用[M].北京:清華大學出版社,2012.