軟件項(xiàng)目工作量評估方法很多,如代碼行法、類比法、WBS、故事點(diǎn)、用例點(diǎn)、NESMA、FPA、cosmic、COCOMOⅡ等。本文主要對功能點(diǎn)方法(FPA)簡述。
功能點(diǎn) FPA 方法
(一) 簡介
FPA 是從用戶角度出發(fā)度量軟件規(guī)模的一種方法。它從用戶的角度出發(fā),將系統(tǒng)分為數(shù)據(jù)功能和事物功能兩大類,分別根據(jù)具體的規(guī)則來計(jì)算功能點(diǎn),最后結(jié)合系統(tǒng)的特征因子來調(diào)整功能點(diǎn)數(shù), 從而得到最終的系統(tǒng)規(guī)模。
FPA 較適用于商業(yè)數(shù)據(jù)處理、管理信息系統(tǒng)的估算,因?yàn)樗芨玫胤从诚到y(tǒng)需求上的復(fù)雜度和數(shù)量。從滿足客戶需求的角度講,F(xiàn)PA 具有階段性,對用戶早期參與項(xiàng)目管理、項(xiàng)目經(jīng)理制定項(xiàng)目計(jì)劃更有意義。
(二) 重要概念
功能點(diǎn)估算法是從用戶視角出發(fā),對軟件的規(guī)模從邏輯設(shè)計(jì)的角度進(jìn)行度量的標(biāo)準(zhǔn)方法。
在功能點(diǎn)估算的過程中,以下概念應(yīng)貫穿始終:
1、 用戶視角
用戶視角(User View)是指功能點(diǎn)被用戶所認(rèn)可,由用戶需求書面正式描述,且獨(dú)立于所采用的開發(fā)技術(shù)。
2、 穿越系統(tǒng)邊界
穿越系統(tǒng)邊界(Application Boundary)是指數(shù)據(jù)或控制信息由系統(tǒng)內(nèi)發(fā)送到系統(tǒng)外,或由系統(tǒng)外發(fā)送到系統(tǒng)內(nèi)。
是否穿越系統(tǒng)邊界是 FPA 重要的判斷標(biāo)準(zhǔn)。
3、 IPO 的異同
輸入(Input)、處理過程(Process)和輸出(Output)的同與不同亦是FPA 重要的判斷標(biāo)準(zhǔn)。
(三) FPA 估算方法基本步驟
1、 收集可得的文檔
文檔可以包括需求、數(shù)據(jù)/對象模型、類圖、數(shù)據(jù)流圖、用例、
過程描述、報(bào)表顯示、界面顯示、用戶手冊,以及其它軟件開發(fā)文檔。
2、 確定計(jì)數(shù)范圍和邊界并識別功能用戶需求
計(jì)數(shù)范圍和邊界需識別計(jì)數(shù)目的。不同的計(jì)數(shù)目的決定了計(jì)數(shù)范圍和軟件邊界的劃分。實(shí)際使用過程中通常為系統(tǒng)的管理邊界, 特殊系統(tǒng)會以架構(gòu)為邊界。
3、 度量數(shù)據(jù)功能
數(shù)據(jù)功能的計(jì)算工序(Counting Procedures)包括以下活動:

FPA 將數(shù)據(jù)功能分為兩類,分別為內(nèi)部邏輯文件(ILF)和外部接口文件(EIF)。
1) 識別內(nèi)部邏輯文件 ILF
內(nèi)部邏輯文件(Internal Logical File,簡稱ILF)是在系統(tǒng)邊界內(nèi)部維護(hù)的一組用戶可識別的邏輯上相關(guān)的數(shù)據(jù)或控制信息。ILF 的首要目的是保存由被度量系統(tǒng)的一個或多個基本流程維護(hù)的數(shù)據(jù)。
2) 識別外部接口文件EIF
外部接口文件(External Interface File,簡稱 EIF)是用戶可識別的、邏輯相關(guān)的數(shù)據(jù)組或控制信息組,其由被度量應(yīng)用所引用,但在另一應(yīng)用邊界內(nèi)維護(hù)。EIF 的主要目的是保存由被度量應(yīng)
用的一個或多個基本過程引用的數(shù)據(jù)。這意味著一個應(yīng)用的 EIF 必定是另一個應(yīng)用的ILF。
3) 識別數(shù)據(jù)功能 DET
數(shù)據(jù)元素類型(Data Element Types,簡稱DETs)是指在一個
ILF 或EIF 內(nèi),用戶可認(rèn)知的、唯一的、非重復(fù)的字段。如客戶姓名、年齡、地址、聯(lián)系方式等。
4) 識別數(shù)據(jù)功能 RET
記錄元素類型(Record Element Types,簡稱 RETs)是指在一個ILF 或EIF 內(nèi),用戶可認(rèn)知的數(shù)據(jù)元素子集。如客戶的家庭信息為客戶信息的 RET
5) 確定ILF 或EIF 的貢獻(xiàn)度
根據(jù)每一個已確認(rèn)的 ILF 和EIF 的復(fù)雜度(DETs 和RETs 數(shù)量),對其進(jìn)行分類,并賦予未調(diào)節(jié)功能點(diǎn)數(shù)值(Unadjusted Function Points,簡稱UFP)的過程,即為確定其貢獻(xiàn)度

6) 確定ILF 或EIF 的貢獻(xiàn)度值
對用戶而言,ILF 與EIF 的業(yè)務(wù)意義是完全不同。因此,對于貢獻(xiàn)度相同的 ILF 和EIF,其未調(diào)節(jié)功能點(diǎn)值是不同的。

4、 度量事物功能
事物功能的計(jì)算工序(Counting Procedures)包括以下活動:

FPA 將事物功能分為三類,外部輸入(EI)、外部輸出(EO)和外部查詢(EQ)。
1) 識別外部輸入(EI):是處理來自系統(tǒng)邊界外部的數(shù)據(jù)或控制信息的一個基本過程。其首要目的(Primary Intent,簡稱 PI) 是維護(hù)一個或多個ILFs 或者去改變系統(tǒng)行為。
2) 識別外部輸出(EO):是發(fā)送數(shù)據(jù)或控制信息到系統(tǒng)邊界外部的一個基本過程。其首要目的(PI)是通過處理邏輯呈現(xiàn)信息給用戶,并非或者另外檢索數(shù)據(jù)或控制信息。
3) 識別外部查詢(EQ):是發(fā)送數(shù)據(jù)或控制信息到系統(tǒng)邊界外部的一個基本過程。其首要目的(PI)是通過從一個 ILF 或EIF 檢索數(shù)據(jù)或控制信息,呈現(xiàn)信息給用戶。
4) 基本過程
把功能用戶需求組合或分解為最小活動單元,滿足以下條件:
1) 對用戶有意義,構(gòu)成一個完整的事務(wù);
2) 自包含;
3) 使應(yīng)用的業(yè)務(wù)保持持續(xù)狀態(tài),
例 :功能用戶需求要求提供維護(hù)員工信息的功能。該需求被分解為較小的工作單元,如添加員工信息、修改員工信息、刪除員工信息和查詢員工信息。
5) 識別事物功能 DET
數(shù)據(jù)元素類型(Data Element Types,簡稱DET)是指在一個EI、EO 或EQ 內(nèi),用戶可認(rèn)知的、唯一的、非重復(fù)的字段。
6) 識別事物功能 FTR
引用文件類型(File Types Referenced,簡稱FTR)是指一個交易功能讀取或維護(hù)的一個ILF,或者一個交易功能所讀取的一個EIF。
7) 確定EI、EO 和EQ 的貢獻(xiàn)度
根據(jù)每一個已確認(rèn)的 EI、EO 和EQ 的復(fù)雜度(FTRs 和DETs 數(shù)量),對其進(jìn)行分類,并賦予未調(diào)節(jié)功能點(diǎn)數(shù)值(Unadjusted Function Points)的過程,即為確定其貢獻(xiàn)度。


8) 確定EI、EO 和EQ 的貢獻(xiàn)度
我們應(yīng)注意到,貢獻(xiàn)度相同的 EI、EQ,其未調(diào)節(jié)功能點(diǎn)值是相同的;與EI、EQ 貢獻(xiàn)度相同的 EO,其未調(diào)節(jié)功能點(diǎn)值略高。

?。怠⒂?jì)算功能規(guī)模
1) 計(jì)算未調(diào)整功能點(diǎn)數(shù)
UFP= ILFs+EIFs+EIs+EOs+EQs
2) 確定系統(tǒng)調(diào)節(jié)因子
在實(shí)際軟件項(xiàng)目開發(fā)過程中因技術(shù)因素和環(huán)境因素會對軟件項(xiàng)目工作量有不同程度的影響??筛鶕?jù)組織級基準(zhǔn)庫設(shè)定相關(guān)調(diào)整因子(System Adjustment Factor,簡稱SAF)。如應(yīng)用類型、質(zhì)量特征、開發(fā)語言、團(tuán)隊(duì)背景、評估時點(diǎn)等。
計(jì)算調(diào)整后的功能點(diǎn)數(shù) AFP=UFP*SAF
3) 確定生產(chǎn)率PDR
可根據(jù)系統(tǒng)特點(diǎn)測算組織級系統(tǒng)基準(zhǔn)生產(chǎn)率。4)測算工作量
工作量 AE=AFP*PDR
6、 報(bào)告功能點(diǎn)計(jì)數(shù)結(jié)果
將功能點(diǎn)計(jì)數(shù)過程和工作量計(jì)數(shù)結(jié)果編寫報(bào)告呈現(xiàn)給讀者。(中基數(shù)聯(lián)版權(quán)所有,轉(zhuǎn)載需標(biāo)明出處。)
功能點(diǎn) FPA 方法
(一) 簡介
FPA 是從用戶角度出發(fā)度量軟件規(guī)模的一種方法。它從用戶的角度出發(fā),將系統(tǒng)分為數(shù)據(jù)功能和事物功能兩大類,分別根據(jù)具體的規(guī)則來計(jì)算功能點(diǎn),最后結(jié)合系統(tǒng)的特征因子來調(diào)整功能點(diǎn)數(shù), 從而得到最終的系統(tǒng)規(guī)模。
FPA 較適用于商業(yè)數(shù)據(jù)處理、管理信息系統(tǒng)的估算,因?yàn)樗芨玫胤从诚到y(tǒng)需求上的復(fù)雜度和數(shù)量。從滿足客戶需求的角度講,F(xiàn)PA 具有階段性,對用戶早期參與項(xiàng)目管理、項(xiàng)目經(jīng)理制定項(xiàng)目計(jì)劃更有意義。
(二) 重要概念
功能點(diǎn)估算法是從用戶視角出發(fā),對軟件的規(guī)模從邏輯設(shè)計(jì)的角度進(jìn)行度量的標(biāo)準(zhǔn)方法。
在功能點(diǎn)估算的過程中,以下概念應(yīng)貫穿始終:
1、 用戶視角
用戶視角(User View)是指功能點(diǎn)被用戶所認(rèn)可,由用戶需求書面正式描述,且獨(dú)立于所采用的開發(fā)技術(shù)。
2、 穿越系統(tǒng)邊界
穿越系統(tǒng)邊界(Application Boundary)是指數(shù)據(jù)或控制信息由系統(tǒng)內(nèi)發(fā)送到系統(tǒng)外,或由系統(tǒng)外發(fā)送到系統(tǒng)內(nèi)。
是否穿越系統(tǒng)邊界是 FPA 重要的判斷標(biāo)準(zhǔn)。
3、 IPO 的異同
輸入(Input)、處理過程(Process)和輸出(Output)的同與不同亦是FPA 重要的判斷標(biāo)準(zhǔn)。
(三) FPA 估算方法基本步驟

文檔可以包括需求、數(shù)據(jù)/對象模型、類圖、數(shù)據(jù)流圖、用例、
過程描述、報(bào)表顯示、界面顯示、用戶手冊,以及其它軟件開發(fā)文檔。
2、 確定計(jì)數(shù)范圍和邊界并識別功能用戶需求
計(jì)數(shù)范圍和邊界需識別計(jì)數(shù)目的。不同的計(jì)數(shù)目的決定了計(jì)數(shù)范圍和軟件邊界的劃分。實(shí)際使用過程中通常為系統(tǒng)的管理邊界, 特殊系統(tǒng)會以架構(gòu)為邊界。
3、 度量數(shù)據(jù)功能
數(shù)據(jù)功能的計(jì)算工序(Counting Procedures)包括以下活動:

FPA 將數(shù)據(jù)功能分為兩類,分別為內(nèi)部邏輯文件(ILF)和外部接口文件(EIF)。
1) 識別內(nèi)部邏輯文件 ILF
內(nèi)部邏輯文件(Internal Logical File,簡稱ILF)是在系統(tǒng)邊界內(nèi)部維護(hù)的一組用戶可識別的邏輯上相關(guān)的數(shù)據(jù)或控制信息。ILF 的首要目的是保存由被度量系統(tǒng)的一個或多個基本流程維護(hù)的數(shù)據(jù)。
2) 識別外部接口文件EIF
外部接口文件(External Interface File,簡稱 EIF)是用戶可識別的、邏輯相關(guān)的數(shù)據(jù)組或控制信息組,其由被度量應(yīng)用所引用,但在另一應(yīng)用邊界內(nèi)維護(hù)。EIF 的主要目的是保存由被度量應(yīng)
用的一個或多個基本過程引用的數(shù)據(jù)。這意味著一個應(yīng)用的 EIF 必定是另一個應(yīng)用的ILF。
3) 識別數(shù)據(jù)功能 DET
數(shù)據(jù)元素類型(Data Element Types,簡稱DETs)是指在一個
ILF 或EIF 內(nèi),用戶可認(rèn)知的、唯一的、非重復(fù)的字段。如客戶姓名、年齡、地址、聯(lián)系方式等。
4) 識別數(shù)據(jù)功能 RET
記錄元素類型(Record Element Types,簡稱 RETs)是指在一個ILF 或EIF 內(nèi),用戶可認(rèn)知的數(shù)據(jù)元素子集。如客戶的家庭信息為客戶信息的 RET
5) 確定ILF 或EIF 的貢獻(xiàn)度
根據(jù)每一個已確認(rèn)的 ILF 和EIF 的復(fù)雜度(DETs 和RETs 數(shù)量),對其進(jìn)行分類,并賦予未調(diào)節(jié)功能點(diǎn)數(shù)值(Unadjusted Function Points,簡稱UFP)的過程,即為確定其貢獻(xiàn)度

6) 確定ILF 或EIF 的貢獻(xiàn)度值
對用戶而言,ILF 與EIF 的業(yè)務(wù)意義是完全不同。因此,對于貢獻(xiàn)度相同的 ILF 和EIF,其未調(diào)節(jié)功能點(diǎn)值是不同的。

4、 度量事物功能
事物功能的計(jì)算工序(Counting Procedures)包括以下活動:

FPA 將事物功能分為三類,外部輸入(EI)、外部輸出(EO)和外部查詢(EQ)。
1) 識別外部輸入(EI):是處理來自系統(tǒng)邊界外部的數(shù)據(jù)或控制信息的一個基本過程。其首要目的(Primary Intent,簡稱 PI) 是維護(hù)一個或多個ILFs 或者去改變系統(tǒng)行為。
2) 識別外部輸出(EO):是發(fā)送數(shù)據(jù)或控制信息到系統(tǒng)邊界外部的一個基本過程。其首要目的(PI)是通過處理邏輯呈現(xiàn)信息給用戶,并非或者另外檢索數(shù)據(jù)或控制信息。
3) 識別外部查詢(EQ):是發(fā)送數(shù)據(jù)或控制信息到系統(tǒng)邊界外部的一個基本過程。其首要目的(PI)是通過從一個 ILF 或EIF 檢索數(shù)據(jù)或控制信息,呈現(xiàn)信息給用戶。
4) 基本過程
把功能用戶需求組合或分解為最小活動單元,滿足以下條件:
1) 對用戶有意義,構(gòu)成一個完整的事務(wù);
2) 自包含;
3) 使應(yīng)用的業(yè)務(wù)保持持續(xù)狀態(tài),
例 :功能用戶需求要求提供維護(hù)員工信息的功能。該需求被分解為較小的工作單元,如添加員工信息、修改員工信息、刪除員工信息和查詢員工信息。
5) 識別事物功能 DET
數(shù)據(jù)元素類型(Data Element Types,簡稱DET)是指在一個EI、EO 或EQ 內(nèi),用戶可認(rèn)知的、唯一的、非重復(fù)的字段。
6) 識別事物功能 FTR
引用文件類型(File Types Referenced,簡稱FTR)是指一個交易功能讀取或維護(hù)的一個ILF,或者一個交易功能所讀取的一個EIF。
7) 確定EI、EO 和EQ 的貢獻(xiàn)度
根據(jù)每一個已確認(rèn)的 EI、EO 和EQ 的復(fù)雜度(FTRs 和DETs 數(shù)量),對其進(jìn)行分類,并賦予未調(diào)節(jié)功能點(diǎn)數(shù)值(Unadjusted Function Points)的過程,即為確定其貢獻(xiàn)度。


8) 確定EI、EO 和EQ 的貢獻(xiàn)度
我們應(yīng)注意到,貢獻(xiàn)度相同的 EI、EQ,其未調(diào)節(jié)功能點(diǎn)值是相同的;與EI、EQ 貢獻(xiàn)度相同的 EO,其未調(diào)節(jié)功能點(diǎn)值略高。

?。怠⒂?jì)算功能規(guī)模
1) 計(jì)算未調(diào)整功能點(diǎn)數(shù)
UFP= ILFs+EIFs+EIs+EOs+EQs
2) 確定系統(tǒng)調(diào)節(jié)因子
在實(shí)際軟件項(xiàng)目開發(fā)過程中因技術(shù)因素和環(huán)境因素會對軟件項(xiàng)目工作量有不同程度的影響??筛鶕?jù)組織級基準(zhǔn)庫設(shè)定相關(guān)調(diào)整因子(System Adjustment Factor,簡稱SAF)。如應(yīng)用類型、質(zhì)量特征、開發(fā)語言、團(tuán)隊(duì)背景、評估時點(diǎn)等。
計(jì)算調(diào)整后的功能點(diǎn)數(shù) AFP=UFP*SAF
3) 確定生產(chǎn)率PDR
可根據(jù)系統(tǒng)特點(diǎn)測算組織級系統(tǒng)基準(zhǔn)生產(chǎn)率。4)測算工作量
工作量 AE=AFP*PDR
6、 報(bào)告功能點(diǎn)計(jì)數(shù)結(jié)果
將功能點(diǎn)計(jì)數(shù)過程和工作量計(jì)數(shù)結(jié)果編寫報(bào)告呈現(xiàn)給讀者。(中基數(shù)聯(lián)版權(quán)所有,轉(zhuǎn)載需標(biāo)明出處。)