CMMI之功能點估算法---內部邏輯文件和外部接口文件
功能點分析的步驟
在本文中將以國際標準IFPUG(International Function Point Users Group)組織提供的功能點估算法V4.1.1為基礎與大家進行講解。如下圖所示,首先大家應該了解功能點估算法的使用步驟。
圖 功能點估算的步驟
- 識別功能點的類型。
- 識別待估算應用程序的邊界和範圍。
- 計算數據類型功能點所提供的未調整的功能點數量。
- 計算人機交互功能所提供的未調整的功能點數量。
- 確定調整因子。
- 計算調整後的功能點數量。
識別項目的類型
國際的IFPUG組織將軟件項目分為三類,功能點估算法適用於任何一類項目
- 新開發項目
- 二次開發的項目
- 功能增強的項目
識別項目的範圍和邊界
使用UML的“UseCase”用例圖是以用戶角度進行識別項目範圍和邊界的最好方法,因為在畫用例圖時就必須明確系統的邊界。通過系統的邊界我們可以知道哪些功能要計算功能點,哪些功能點是外部系統負責計算的。以下圖為例:一個外貿訂單系統只包含錄入、修改、刪除、查詢和統計訂單的功能,而匯率查詢轉換服務是不屬於該系統的。
應用程序邊界的識別規則大家一定要牢記,不能從技術角度去思考,必須從用戶角度來定義;如果項目牽扯到多個系統,那麽必須將這多個系統的邊界全部描述清楚。
圖 外貿訂單系統用例圖
FP功能點估算分類
FP功能點估算法將功能點分為以下5類:
- ILF:Internal Logical File內部邏輯文件
- EIF: External Interface File外部接口文件
- EI: External Input外部輸入
- EO: External Output外部輸出
- EQ: External Inquiry外部查詢
其中ILF和EIF屬於數據類型的功能點,EI、EO、EQ屬於人機交互類型的功能點。
以外貿訂單系統項目為例:
- 錄入訂單、修改訂單、刪除訂單是EI;
- 查詢訂單是EO
- 統計訂單是EQ
- 匯率查詢轉換系統為EIF
- 訂單和客戶是ILF
識別功能點的重要原則
ILF、EIF要與EI、EO、EQ分開計算。對ILF和EIF復雜度的計算可以簡單理解為對數據庫復雜度的計算。對EI、EO、EQ復雜度的計算可以理解為對程序開發復雜度的計算。一般軟件項目都是由數據和程序構成的,因此計算ILF、EIF和計算EI、EO、EQ之間沒有任何關系。
內部邏輯文件與外部接口文件
ILF內部邏輯文件
內部邏輯文件是指一組以用戶角度識別的,在應用程序邊界內且被維護的邏輯相關數據或控制信息。ILF的主要目的是通過應用程序的一個或多個基本處理過程來維護數據。
EIF外部接口文件
外部接口文件是指一組在應用程序邊界內被查詢,但它是在其他應用程序中被維護的,以用戶角度來識別的,邏輯上相關的數據。因此一個應用程序中的EIF必然是其他應用程序中的ILF。EIF的主要目的是為邊界內的應用程序提供一個或多個通過基礎操作過程來引用的一組數據或信息。
EIF所遵循的規則:
- 從用戶角度出發識別的一組邏輯數據。
- 這組數據是在應用程序外部,並被應用程序引用的。
- 計算功能點的這個應用程序並不維護該EIF
- 這組數據是作為另一個應用程序中的ILF被維護的。
ILF和EIF復雜性計算
ILF和EIF的復雜性是取決於RET(Record element type)和DET(Data element type)的數量。DET是一個以用戶角度識別的,非重復的有業務邏輯意義的字段。
DET計算的規則如下:
- 通過一個基本處理過程的執行,對ILF進行維護或從ILF/EIF中返回一個特定的、用戶可識別的、非重復的字段,那麽每個這樣的字段算一個DET。
- 例如:添加一個外貿訂單時需要保存“訂單號碼、訂單日期、地址、郵編”,那麽對於ILF訂單來說它的DET就是4個。
- 例如:保存訂單時還會保存訂單的明細,訂單的明細往往作為一個子表進行保存,那麽“訂單號碼”在主表和子表中都同時存在(主外鍵),但以用戶角度來識別時,存盤操作是一個最小的單位,那麽訂單號碼只能算做一個DET。
- 當兩個應用程序維護和/或引用相同的ILF/EIF,但是每個應用程序分別維護/引用它們相應的DET時,這些DET在這兩個應用程序的維護或引用中將單獨計算。
- 例如一個應用程序的兩個“Elementary Process”基本處理過程都需要使用到“地址”的信息,地址的信息又可以細分為“國家、城市、街道、郵編”。那麽對於其中一個基本處理過程來說,他將整個地址信息作為一個整體進行處理,那就只算一個DET,另外一個基本處理過程使用每個地址的詳細信息,那麽DET就是4個。
RET計算的規則如下:
RET是指一個EIF/ILF中用戶可以識別的DET的集合。如果把DET簡單理解為字段的話,那RET就可以簡單理解為數據庫中的表。RET在ILF/EIF中分為兩種類型:可選的(Optional)和必選的(Mandatory)。計算RET的規則為以下兩點:
- 在一個ILF/EIF中每一個可選或必選的集合都被計算為一個RET。
- 如果一個ILF/EIF沒有子集合,則ILF/EIF被計算為一個RET。
例如:在外貿訂單系統中添加一個訂單時會保存“訂單信息、客戶的ID、部門的ID”。那麽訂單系統ILF中RET為:
1、訂單信息(必選的)
2、客戶信息(必選的)
3、部門信息(可選的)
因此ILF中RET的個數為3個。
ILF/EIF復雜度的矩陣如下
1~19個DET | 20~50個DET | 超過51個DET | |
1個RET | 低 | 低 | 中等 |
2~5個RET | 低 | 中等 | 高 |
6個以上RET | 中等 | 高 | 高 |
CMMI之功能點估算法---內部邏輯文件和外部接口文件