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