軟體隨著使用者無止盡的需求而變得越來越複雜,如何度量軟體專案的複雜度與規模,以決定需要耗費的時間、人力與成本,顯得日益困難。過去度量軟體複雜度最簡單的方法,就是計算程式碼的行數(Line of Code, LOC),但程式碼行數在專案初期並無法預測,而且隨著程式語言與開發者素質的不同,相同應用產出的程式碼行數可能有相當懸殊的差距。

自由心證的成本評估方式,對開發者與客戶都存有風險,系統的架構為了方便使用者操作、安裝,或兼顧穩定、效能與再利用的特殊設計,均會影響軟體的複雜性。單憑系統畫面呈現的功能估算工時,也許看到的只是冰山一角,如果低估了開發所需的時間與人力,不但無法在約定期限內提供使用者滿意的產品,而且可能利潤薄弱甚至白忙一場。

為了提供軟體的買賣雙方均足以採信的估價方式,在1970年代IBM的一位工程師Allan Albrecht發展出一套稱為「功能點數分析法(Function Point Analysis)」作為度量軟體專案規模的方法。最初的版本在IBM內部使用,後來因為使用者眾多,於1988年成立了非營利組織IFPUG(The International Function Point Users Group)。

功能點數的意義類似以小時量測時間,或者以公里量測距離一樣,是量測軟體規模的計算單位。為了讓使用者易於理解,功能點數強調非關IT技術、程式語言、開發方法或者硬體平臺,而是以使用者觀點估算軟體功能,量化成為功能點數,再依功能點數預估開發所需的工時與成本。

所謂使用者觀點,是指以使用者的語言描述功能需求,而不是站在開發者立場,以技術的觀點分析量化系統的規模。

定義軟體範圍與邊界
估算功能點數之前,必須定義出哪些功能與系統必須納入計算的範圍,因為使用者所需要的應用也許包括多個軟體或子系統;接著再將軟體的功能歸類成5種類型,定義出應用系統的邊界。

功能點數分析法將軟體區分為使用資料功能類與交易功能類等兩種類別,再將這兩類分為5種檔案型態:

資料功能類:
●內部邏輯檔(Internal Logical Files)
●外部介面(External Interface Files)

交易功能類:
●外部輸入(External Inputs)
●外部輸出(External Outputs)
●外部查詢(External Inquiry)

分類完成後,再根據DET(Data Element Type,資料元素類別)及RET(Record Element Type,記錄元素類別)等兩項影響複雜度因素,決定各類功能的複雜度,共分為低、中、高等3種複雜度。例如:複雜度低時,內部邏輯檔功能點數乘以7;複雜度一般時,乘以10;複雜度高時,乘以15。最後將5種功能類型的點數相加,便得到未調整的功能點數(Unadjusted Function Point,UFP)。


功能點數分析法將軟體區分為內部邏輯、外部介面、外部輸入、外部輸出及外部查詢等5種功能類別,分別依功能的複雜度算出點數後加總,取得未調整功能點數,再根據14項調整因素的影響程度微調,取得調整後功能點數。企業即可據此推算出工時及開發成本。


考量系統整體特性調整點數
除了依據功能類別計算複雜度外,功能點數分析法提出14項調整因素,依系統的特徵,定義影響等級:

1.資料通訊:使用哪些通訊設備
2.功能分散度:如何處理分散式資料
3.效能:對於系統反應時間的要求
4.硬體需求:系統是否有特殊的硬體要求?
5.交易量:頻率是每日、周或月?
6.線上資料輸入:透過網路線上輸入資料的比重?
7.使用有效性:在使用者嚴格的要求下,為達到目的所需要的工時(使用者要求的介面友善程度)
8.線上更新:有多少內部邏輯檔需要經由線上更新?
9.複雜處理:軟體的細部設計是否需更複雜的邏輯運算?
10.重用性:程式碼經由特別設計,可否應用於其他的系統?
11.安裝難易度:資料轉換與安裝的複雜度
12.操作難易度:從系統管理者觀點,啟動、復原、備份等系統操作的難易度
13.多地域性:系統是否規畫為可供不同的組織多地安裝?
14.變更的難易度:系統是否易於修改?

每一項的影響程度值分為0~5共6等級,分別表示沒有影響、偶爾影響、中度影響、平均影響、顯著影響及強烈影響。在考量系統整體的特性,根據14項因素,決定調整係數,即可套用公式,計算出調整後的功能點數:

調整係數=合計數×0.01+0.65
調整後功能點數=未調整功能點數×調整係數


專案團隊可根據過去軟體開發的經驗,推算出調整後功能點數與工時的關聯性,例如開發工時約功能點數的2倍。那麼未來評估新專案的成本時,只要將調整後功能點數乘以2,即可算出大約的總工時數,並據此推算出可能的開發成本。文⊙李延華

能與需求分析結合的FP工具:肯美Xradian能與需求分析結合的FP工具:肯美Xradian

相較於市面上的功能點數軟體估價產品,肯美的Xradian的特點,在於與肯美自家研發的需求分析工具Xupper結合,因此省去人工分類與計算功能點數的麻煩。Xupper將需求分析的結果儲存在儲存庫(Repository)中,使用者只需將分析設計的物件匯入Xradian,即可透過功能點數分析法,估算軟體的成本,而且可以反覆估價。

資料越詳細,估算越精準
Xradian由 Xupper的儲存庫資料,自動計算未調整功能點數(Unadjusted Function Point ,UFP),至於點數計算的精確性,視設計進展的程度而定。功能點數會依軟體專案的開發時程的推進,而有逐漸增加的現象,稱為「Scope Creep」(範圍漸增)。一般而言,專案範圍從需求到執行,平均會增加35%,這是專案初期評估複雜度時,必須考慮的因素。

功能點數分析法細分Process、Process/Entity、Device/GUI、MTX、FP概要及FP詳細等6種分析方法,在開發的不同階段,可選擇越來越詳細的分析法逐步精算成本。在Xupper中,只要設計好業務流程圖與流程階層圖,即可利用Process法,初步估算開發可能的成本。再進一步完成資料結構分析,即可利用Process/Entity法估算更精細的開發成本。

當所有需求與分析設計包括畫面、資料庫設計業務規則、資料關聯與資料的生命周期等均完全掌握,即可透過最精密的FP詳細法,計算出最精準的功能點數。利用Xradian的調整係數介面,輸入各項調整因素的影響值,系統即自動計算調整後功能點數。

根據肯美資訊開發日本的一套小型的日常交通費計算系統的經驗,利用Xradian估算功能點數,當使用FP詳細法時,算出來的功能點數,與專案完成後人工驗證的點數完全相符。可見只要做好完備的需求分析與設計,以功能點數分析法估算成本的正確率很高。

降低人為判斷的範圍
企業利用過去專案開發的歷史資料,套用功能點數分析法,即可試算出功能點數與實際工時的比例,長期不斷地驗證與調校,可以幫助取得更精準的功能點數與實際工時的關連比率,強化給定正確的14項調整因素影響值。根據肯美的經驗,FP數約乘以2倍,即貼近實際的工時。以日常交通費計算系統為例,FP值為42,實際換算約84人時,再參考員工的薪資結構,即可換算出明確的成本。

雖然各項調整系數例如使用者對效能的要求、操作難易度或者安裝操作難易度等對系統複雜度的影響,仍需要足夠經驗才能精準判斷應該輸入數字「0」還是「5」,但相較於自由心證的報價方式,定量化的功能點數分析法是具標準的軟體規模與價值的評估方法,讓各類不同的專案與企業之間有共同的估價方式,而且功能點數分析法在美國已是使用者與開發者之間最具說服力的共通標準。文⊙李延華

肯美Xradian 建議售價:30萬元(未稅)
肯美資訊:(02)8752-3100 www.kensystem.com.tw

熱門新聞

Advertisement