前言 本文的目標(biāo)讀者是從事軟件行業(yè)想快速了解軟件開發(fā)過程工作量評估的人員。軟件工作量評估方法很多,如代碼行法、類比法、WBS、故事點(diǎn)、用例點(diǎn)、NESMA、FPA、cosmic、COCOMOⅡ等。本文只是選取主流評估方法進(jìn)行簡述,每一種方法在實際操作過程中有若干條計數(shù)規(guī)則,在此并未闡述,并不能作為評估工作的實施指南。實際使用方法時,需以各方法發(fā)布機(jī)構(gòu)發(fā)布的官方文檔為準(zhǔn)。 一、 功能點(diǎn) FPA 方法 (一) 簡介 FPA 是從用戶角度出發(fā)度量軟件規(guī)模的一種方法。它從用戶的角度出發(fā),將系統(tǒng)分為數(shù)據(jù)功能和事物功能兩大類,分別根據(jù)具體的規(guī)則來計算功能點(diǎn),最后結(jié)合系統(tǒng)的特征因子來調(diào)整功能點(diǎn)數(shù), 從而得到最終的系統(tǒng)規(guī)模。
(二) 重要概念 功能點(diǎn)估算法是從用戶視角出發(fā),對軟件的規(guī)模從邏輯設(shè)計的角度進(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)。 3、 IPO 的異同 輸入(Input)、處理過程(Process)和輸出(Output)的同與不同亦是FPA 重要的判斷標(biāo)準(zhǔn)。 (三) FPA 估算方法基本步驟 1、 收集可得的文檔 文檔可以包括需求、數(shù)據(jù)/對象模型、類圖、數(shù)據(jù)流圖、用例、過程描述、報表顯示、界面顯示、用戶手冊,以及其它軟件開發(fā)文檔。 2、 確定計數(shù)范圍和邊界并識別功能用戶需求 計數(shù)范圍和邊界需識別計數(shù)目的。不同的計數(shù)目的決定了計數(shù)范圍和軟件邊界的劃分。實際使用過程中通常為系統(tǒng)的管理邊界, 特殊系統(tǒng)會以架構(gòu)為邊界。 3、 度量數(shù)據(jù)功能 數(shù)據(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、 度量事物功能 事物功能的計算工序(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,或者一個交易功能所讀取的一個 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)值略高。 5、 計算功能規(guī)模 1) 計算未調(diào)整功能點(diǎn)數(shù) UFP= ILFs+EIFs+EIs+EOs+EQs 2) 確定系統(tǒng)調(diào)節(jié)因子 在實際軟件項目開發(fā)過程中因技術(shù)因素和環(huán)境因素會對軟件項目工作量有不同程度的影響??筛鶕?jù)組織級基準(zhǔn)庫設(shè)定相關(guān)調(diào)整因子(System Adjustment Factor,簡稱SAF)。如應(yīng)用類型、質(zhì)量特征、開發(fā)語言、團(tuán)隊背景、評估時點(diǎn)等。 計算調(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、 報告功能點(diǎn)計數(shù)結(jié)果 將功能點(diǎn)計數(shù)過程和工作量計數(shù)結(jié)果編寫報告呈現(xiàn)給讀者。 二、 COSMIC 方法 (一) 簡介 COSMIC 是通用軟件度量國際聯(lián)盟的簡寫(Common Software Measurement International Consortium,COSMIC),它成立于1998 年,是一個由全球軟件度量專家組成的非盈利自愿性組織,致力于軟件規(guī)模度量方法的研究與推廣。2002 年 1 月COSMIC 所推出的全功能點(diǎn)規(guī)模度量方法成為了 ISO 的標(biāo)準(zhǔn),最新標(biāo)準(zhǔn)為 ISO/IEC 19761:2011“軟件工程—COSMIC—功能規(guī)模度量方法”。 COSMIC 方法包含了一組應(yīng)用模型、原則、規(guī)則和過程度量給定軟件的功能性用戶需求的方法。其結(jié)果是一個數(shù)字化的“量化數(shù)值”,根據(jù) COSMIC 方法得到的軟件功能規(guī)模。它適用于以下領(lǐng)域的軟件功能度量: 業(yè)務(wù)應(yīng)用軟件,這類軟件通常用于支持業(yè)務(wù)管理。如銀行、保險、電信等。 實時軟件。用于過程控制和自動數(shù)據(jù)獲取軟件。如嵌入式程序、中間件。 平臺軟件,如可復(fù)用的構(gòu)建及設(shè)備驅(qū)動程序等。 功能規(guī)模是通過“數(shù)據(jù)移動(Data movement)”的個數(shù)來度量。 (二) 原理 功能規(guī)模是通過“數(shù)據(jù)移動(Data movement)”的個數(shù)來度量。 (三) 度量過程 COSMIC 方法的度量分為三個階段: 1、 度量策略階段 確定度量目的 確定度量范圍 確定功能用戶 確定需求描述詳細(xì)程度 2、 映射階段 識別功能處理 識別興趣對象與數(shù)據(jù)組(興趣對象指軟件要處理的數(shù)據(jù)對象,如客戶;數(shù)據(jù)組是一組興趣對象屬性的組 合,如客戶姓名、年齡,聯(lián)系方式等) 識別數(shù)據(jù)屬性 識別數(shù)據(jù)移動(輸入、輸出、讀、寫) 3、 度量階段 新增需求計數(shù) 變更需求計數(shù) 本地化規(guī)則計數(shù)(定制規(guī)則) 生成度量報告 (四) 數(shù)據(jù)移動種類 4 種類型的數(shù)據(jù)移動:輸入(Entry)、輸出(eXit)、讀(Read) 和寫(Write)。 輸入(E),是從用戶穿越被度量系統(tǒng)的范圍傳輸數(shù)據(jù)到系統(tǒng)內(nèi)部,這里提到的用戶既包括系統(tǒng)的使用人員,也包括其他軟件或者硬件系統(tǒng)。 輸出(X),是一個數(shù)據(jù)組從一個功能處理通過范圍移動到需要它的用戶。 讀(R),是從永久性的存儲設(shè)備讀取數(shù)據(jù)。 寫(W),是存儲數(shù)據(jù)到永久性的存儲設(shè)備。 (五) 示例 用戶借閱圖書,圖書管理員需錄入借閱人信息并保存到數(shù)據(jù)庫中,同時提供查詢登記列表功能。此時錄入借閱人信息為一個輸入 原則:每一個功能必須有一個輸入,一個輸出或一個寫,即至少2 個CFP (六) 工作量測算 參考FPA 方法和用例點(diǎn)方法工作量測算方法,設(shè)定相關(guān)技術(shù)調(diào)整因子和環(huán)境調(diào)整因子以及生產(chǎn)率,測算軟件工作量。 使用COSMIC 方法要求度量者對軟件系統(tǒng)的實現(xiàn)非常清楚,了解系統(tǒng)的內(nèi)部結(jié)構(gòu),并對系統(tǒng)能夠明確劃分出應(yīng)用層級,以及層級之間的數(shù)據(jù)處理和數(shù)據(jù)移動。 |
|