倪偉民
一、引言
對(duì)于龐大的、多變的軟件項(xiàng)目來說有著太多的不確定性,合理估算軟件項(xiàng)目開發(fā)規(guī)模在項(xiàng)目計(jì)劃與實(shí)施中有指導(dǎo)性的作用。
軟件項(xiàng)目開發(fā)規(guī)模能否被合理估算是軟件開發(fā)成本和軟件管理控制的一個(gè)要素。
目前估算軟件規(guī)模的方法主要有:經(jīng)驗(yàn)估算及量化法估算。經(jīng)驗(yàn)估算雖然簡(jiǎn)單,但由于沒有量化標(biāo)準(zhǔn),不同人估算,差異很大,也不具說服力。量化法估算主要有:代碼行法、COCOMO2模型法、功能點(diǎn)估算等。其中:代碼行法由于用不同編程語(yǔ)言所需代碼行數(shù)并不相同,且僅用代碼代表整個(gè)軟件的規(guī)模并不合理。COCOM2模型法測(cè)算相對(duì)準(zhǔn)確些,但參數(shù)的確定有些難度,也不適用用戶使用。近些年流行的功能點(diǎn)法,能較好的解決這些問題。
但目前功能點(diǎn)法測(cè)重的是系統(tǒng)對(duì)內(nèi)外部邏輯文件增刪改查打印等的功能的估算,而對(duì)很多系統(tǒng),如電商軟件,網(wǎng)頁(yè)的設(shè)計(jì)占了很多的開發(fā)量,因此結(jié)合系統(tǒng)內(nèi)部邏輯功能與界面估算功能點(diǎn),能更科學(xué)地估算項(xiàng)目規(guī)模。
二、功能要素與界面估算方法的實(shí)施
功能要素與界面分析方法特點(diǎn)是用功能點(diǎn)度量軟件系統(tǒng)的規(guī)模,它主要從邏輯設(shè)計(jì)的角度出發(fā)對(duì)客戶的功能進(jìn)行量化、對(duì)客戶需求的界面復(fù)雜度進(jìn)行判別,相對(duì)于其它的方法,它側(cè)重于從用戶的角度分析軟件的規(guī)模 。
(一)軟件項(xiàng)目調(diào)整前的規(guī)模估算
在本文介紹的估算法中,軟件項(xiàng)目被分解為各功能要素與界面,功能要素分類為EI(外部輸入處理)、EO(外部輸出處理)、EQ(外部查詢處理)、ILF(內(nèi)部邏輯文件)、EIF(外部接口文件),界面用WP表示。確定軟件系統(tǒng)未調(diào)整功能點(diǎn)數(shù)量需要分如下步驟進(jìn)行:
1.分解項(xiàng)目,以模塊確定功能點(diǎn)的計(jì)算范圍
首先,我們從用戶角度識(shí)別程序的邊界;如果牽扯到多個(gè)子系統(tǒng),那么必須將這多個(gè)子系統(tǒng)的邊界全部描述清楚。比如電商系統(tǒng),涉及多個(gè)子系統(tǒng),軟件之間、模塊之間數(shù)據(jù)交互頻繁復(fù)雜,為防止各模塊內(nèi)部數(shù)據(jù)單元重復(fù)計(jì)算,應(yīng)以每個(gè)模塊作為功能點(diǎn)核算單元邊界。
2.識(shí)別項(xiàng)目的功能要素與界面
依據(jù)項(xiàng)目需求說明書,識(shí)別功能點(diǎn)時(shí)要分別對(duì)待項(xiàng)目功能要素,對(duì)外部輸入EI、外部輸出EO、外部查詢EQ復(fù)雜度的計(jì)算可理解為所需系統(tǒng)中間層的復(fù)雜度計(jì)算;而對(duì)內(nèi)部邏輯文件ILF和外部接口文件EIF復(fù)雜度的計(jì)算可簡(jiǎn)單理解為對(duì)數(shù)據(jù)庫(kù)復(fù)雜度的計(jì)算,對(duì)界面WP的復(fù)雜度可理解為界面層程序復(fù)雜度的實(shí)現(xiàn)。以電商系統(tǒng)為例:對(duì)某一商品的訂購(gòu),可理解為外部輸入。如果用戶要查詢自己的訂單,可理解為外部查詢EQ。如用戶還要將自己的訂單通過EXCEL導(dǎo)出,可理解為外部輸出EO。系統(tǒng)中,會(huì)有很多界面,每個(gè)界面為一個(gè)WP。因此,依據(jù)用戶分析軟件規(guī)格書中的功能模塊,列示出所需要進(jìn)行編輯、查詢、修改、輸出等操作與界面,即可分別獲得EI、EQ、EO、WP要素全集。
同樣,將用戶需求說明書中可識(shí)別的業(yè)務(wù)對(duì)象,即由EI、EO、EQ所操作的數(shù)據(jù)文件、數(shù)據(jù)庫(kù)表,按照最小邏輯獨(dú)立組合的原則一一列示,就可以得到獲取內(nèi)部邏輯文件UIF功能要素全集。同樣,通過識(shí)別在其它應(yīng)用提供的接口數(shù)據(jù),則可得到外部接口文件功能要素全集。
3.計(jì)算項(xiàng)目功能要素與界面功能點(diǎn)的數(shù)量
依據(jù)功能要素及界面的類型、復(fù)雜度,確定每個(gè)功能要素所需要的功能點(diǎn),統(tǒng)計(jì)形成功能要素統(tǒng)計(jì)表,即可計(jì)算軟件未調(diào)整功能點(diǎn)的數(shù)量。依電商項(xiàng)目為例:表1
其中基準(zhǔn)功能點(diǎn)數(shù),內(nèi)部邏輯文件UIF為7,外部輸入EI為3,外部查詢EQ與外部輸出EO都為2, 外部接口文件EIF為5,界面WP為7。
然后,確定功能要素的復(fù)雜度,復(fù)雜度為高中低三檔,對(duì)內(nèi)部邏輯文件ILF,復(fù)雜度高中低分別對(duì)應(yīng)功能點(diǎn)數(shù)為10、7、5;對(duì)應(yīng)外部輸入EI,復(fù)雜度高中低分別對(duì)應(yīng)功能點(diǎn)數(shù)為4、3、2;對(duì)就外部查詢EQ與外部輸出EO,復(fù)雜度高中低分別對(duì)應(yīng)功能點(diǎn)數(shù)為3、2、1;對(duì)應(yīng)外部接口文件EIF,復(fù)雜度高中低分別對(duì)應(yīng)功能點(diǎn)數(shù)為7、5、3;對(duì)應(yīng)界面WP,一個(gè)商品類別的管理界面WP比較簡(jiǎn)單,復(fù)雜度定為低,電商網(wǎng)站的主頁(yè)面比較復(fù)雜,復(fù)雜度就定為高。復(fù)雜度高中低分別對(duì)應(yīng)功能點(diǎn)數(shù)為10、7、5。
功能點(diǎn)數(shù)數(shù)量=基準(zhǔn)功能點(diǎn)數(shù)量x復(fù)雜度調(diào)整因子
所有功能要素之和即為未調(diào)整功能點(diǎn)的數(shù)量。
(二)確定項(xiàng)目調(diào)整后的功能點(diǎn)數(shù)
每個(gè)項(xiàng)目的開發(fā),都會(huì)因?yàn)轫?xiàng)目質(zhì)量特性的要求不同、開發(fā)團(tuán)隊(duì)前景不同、所用開發(fā)語(yǔ)言的不同所需的開發(fā)工作量也不同,因此,這些因素應(yīng)該作為項(xiàng)目開發(fā)工作量的調(diào)整因子。下表為項(xiàng)目不同應(yīng)用類型的調(diào)整應(yīng)子表:
下圖為根據(jù)開發(fā)語(yǔ)言與開發(fā)團(tuán)隊(duì)背景不同而設(shè)的調(diào)整應(yīng)子:
從不同維度,確定項(xiàng)目的各類特性,項(xiàng)目未調(diào)整功能點(diǎn)數(shù)總和x符合特性的調(diào)整因子,即為調(diào)整后的項(xiàng)目功能點(diǎn)數(shù)。
(三)估算項(xiàng)目開發(fā)成本
在確定了軟件規(guī)模的功能點(diǎn)數(shù)后,即可根據(jù)軟件開發(fā)公司的開發(fā)效率,估算出項(xiàng)目開發(fā)成本。如某軟件開發(fā)公司開發(fā)效率為xx(功能點(diǎn)/人月)的話,則該項(xiàng)目整體工時(shí)為:
項(xiàng)目功能點(diǎn)數(shù)/xx=人工月
如知道該公司IT人員平均月工資后,
則可估算出項(xiàng)目開發(fā)成本為:
人工月*平均月工資。
三、結(jié)論與應(yīng)用
功能點(diǎn)成本估算法是當(dāng)前軟件項(xiàng)目成本估算法比較有技術(shù)含量的一種方法,傳統(tǒng)的功能點(diǎn)估算法一般只統(tǒng)計(jì)EI(外部輸入處理)、EO(外部輸出處理)、EQ(外部查詢處理)、ILF(內(nèi)部邏輯文件)、EIF(外部接口文件)五種功能要素,本文根據(jù)電商項(xiàng)目網(wǎng)頁(yè)占很大開發(fā)比例的特點(diǎn),引入了界面WP要素,作了有益的嘗試。
分析認(rèn)為,功能點(diǎn)估算法在各項(xiàng)目開發(fā)的規(guī)模估算中并不是千篇一律的,執(zhí)行者應(yīng)根據(jù)不同項(xiàng)目的特征,對(duì)功能點(diǎn)法加以改進(jìn),摸索出最適合項(xiàng)目的度量方式,使項(xiàng)目估算更加有效。