任女爾 郭芳郁 趙鋒云 田 楊 池秀峰
(中國汽車技術研究中心有限公司,天津 300393)
隨著IT 技術的不斷精進,信息化、數字化已成為多數中大型企業管理提升及業務賦能的重要推動引擎,通過信息化系統對內提升管理能效、對外賦能主業發展成為了越來越多企業的發展方向,各類型企業對信息化系統軟件的需求量也日益增加。但目前,在軟件行業普遍存在幾類難題,包括甲乙雙方對于軟件項目規模難以達成統一;項目工期及工作量的合理性難以衡量;基于前期的簡單需求難以進行準確估算或預算無法覆蓋后期研發費用;針對需求精細度不夠的招標文件,難以支撐費用評估;以及軟件市場存在低價中標現象,導致“累死自己、餓死同行、坑死業務”事情的常有發生等。
2017 年財政部令87 號《政府采購貨物和服務招投投標管理辦法》中也明確:投標人不能證明其報價合理性的,評標委員會應當將其作為無效投標處理[1]。
為了解決上述問題,就需要一種方法,能夠對系統的規模、工作量、工期、成本等進行預估。本文主要對功能點法在軟件造價評估中的應用進行分析。
在功能點方法的發展及推進過程中,ISO國際標準組織先后采納了IFPUG、COSMIC、MARKⅡ、NESMA 和FiSMA等五種方法作為ISO 國際功能點標準[1,2]。目前在全球范圍內,超過90%的企業選擇使用IFPUG 及NESMA 方法,尤其廣泛使用于美國、意大利、德國、韓國、日本等國家,而NESMA方法中的詳細功能點法與IFPUG方法基本等效。
(1)ISO/IEC 20926 IFPUG
IFPUG(International Function Points User’s Group,國際功能點用戶組)是一種功能規模的度量方法,其在1979年由IBM 的Allan Albrecht 提出,并于1984 年正式發布第一版功能點使用指南。2003 年IFPUG 被ISO 組織接納并成為了國際功能點標準。
(2)ISO/IEC 19761 COSMIC
COSMIC[3](Common Software Measurement International Consortium,通用軟件度量國際聯盟)是一種規模度量方法,其前身是1997 年提出的FFP(Full Function Point,全面功能點)功能點標準,之后FFP組織與COSMIC組織共同合作,并于1999 年提出了COSMIC 功能點標準。同樣于2003 年COSMIC被ISO組織接納并成為了國際功能點標準。
(3)ISO/IEC 20968 MARKⅡ
MARKⅡ[4]是1991年由Charles Symons提出的功能點操作方法,后在此基礎上形成了功能點標準,并被英國政府采納,目前由英國軟件行業協會進行維護。2001年MARKⅡ被ISO組織接納并成為了國際功能點標準。
(4)ISO/IEC 24570 NESMA
NESMA[4](Netherland Software Measurement Association,荷蘭軟件度量協會)是一種與IFPUG極為類似的快速功能規模度量方法,可以在項目不同階段選擇不同精度的方法,從而對軟件規模進行估算。相對于MarkⅡ、COSMIC及FISMA,NESMA的標準與IFPUG的標準保持了最好的一致性。

表1 常用功能點法對比(識別角度)

表2 常用功能點法對比(綜合對比)
(5)ISO/IEC 29881 FiSMA
FISMA[1](Finland Software Measurement Association,芬蘭軟件度量行業協會)功能點標準主要集中應用于芬蘭本土的軟件行業。與其他類型的功能點法相比,其更推崇“服務”的概念,相對弱化了“功能”的概念。FISMA將軟件的典型功能區分為了28種服務,將服務類型劃分得更為精細,但同時也增加了使用操作的不便。
表1、2 分別從識別角度和用戶角度,對上述提出的五種功能點法進行了對比。
通過綜合對比發現,NESMA功能點法的綜合評價較高,本章將基于已發布的《軟件工程軟件開發成本度量規范》GB/T 36964-2018,對該功能點法進行詳細介紹。
所謂軟件估算,就是采用一定的方法,對軟件系統的規模、工作量、工期、成本等指標的預估,是軟件度量過程的一個環節,估算的主要流程包括規模估算、工作量估算、成本估算、確定開發成本四個步驟(圖1)。
估算流程的具體描述如表3。

表3 軟件估算操作步驟
在項目早期或概預算、招投標階段,應使用預估功能點法進行估算。在項目中期、項目完成或項目需求落地完成、測試或交付階段,應使用估算功能點法進行估算。具體對兩種選擇方法的梳理如表4所示。
數據功能識別,主要指識別提供更新、檢索或引用而存儲的邏輯數據,包括內部邏輯文件(Internal Logical File,ILF)、外部接口文件(External Interface File,EIF)兩種,是系統提供的滿足用戶內部或外部數據需求的功能[5]。
數據功能主要包括業務數據、引用數據兩類。
業務數據通常指系統的核心數據或業務對象,其主要特點包括:①用戶可維護、可識別;②數據頻繁動態;③通常有關鍵域或多個屬性;④可以擁有1至無限條記錄等。
引用數據通常指為了支持或維護業務數據的業務規則而存儲的數據。其主要特點包括:①用戶可識別;②通常在系統安裝時建立,后期僅間斷維護;③處理業務數據的事務通常需要訪問等。
識別數據功能后,若數據在系統邊界內維護,則為ILF;若在系統邊界外的其它系統中維護,則為EIF。在進行數據功能識別時,可使用如表5所示步驟。
事務功能識別,主要指識別系統提供給用戶的進行數據處理的功能,即體現系統如何處理及使用業務數據,包括外部輸入(External Input,EI)、外部輸出(External Output,EO)、外部查詢(External Query,EQ)三種基本過程。
EI 主要指處理來自系統邊界之外的數據或控制信息的基本過程,目的是為了更新ILF或通過信號輸入來改變軟件的行為。其特征包括:①一定穿越了系統邊界;②對ILF進行了維護或通過輸入信號改變了軟件的行為。
EO主要指從系統邊界內向系統邊界外發送數據或控制信息的基本過程,目的是向用戶呈現經過處理的數據信息。其特征包括:①數據或控制信息通過并發出了系統邊界;②至少存在以下任意一種情況,包括了公式或計算/產生了衍生數據/維護了至少一個ILF/改變了系統的行為。

表4 預估功能點及估算功能點梳理
EQ 的目的也是向系統邊界外發送數據或控制信息,其與EO的區別在于呈現的是未經過任何處理的數據信息。其特征包括:①數據或控制信息通過并發出了系統邊界;②呈現或輸出的必須沒有計算、衍生數據、沒改變系統狀態、沒更新任務ILF,但可以包括分組、篩選、排序等。

表5 邏輯文件識別步驟
在進行基本過程識別時,還需要額外注意:
(1)基本過程一定是穿越了系統邊界,是用戶可明確感知業務含義的一次操作;
(2)一個基本過程是一次完整的操作,而不是一個簡單的動作。例如新增用戶時經歷了多次校驗,只能識別為一個基本過程。
下面對功能點法在軟件造價評估中的使用進行舉例說明:
(1)判斷項目特征,包括項目所處階段、質量特性、開發語言及團隊背景等(圖2)。
(2)根據需求成果物,識別功能點計數項,并判斷其重用程度及修改類型,得到項目調整后功能點(圖3)。
(3)基于基準生產率及人月基準單價,計算獲得基準報價的下限、中值和下限(圖4)。
在最初使用功能點法進行軟件價格評估時,由于企業基準生產率未定,因此前期通常使用行業的基準生產率進行計算,但評估出的結果與經驗法、類比法相比或多或少會存在偏差。因此需要通過大量的樣本數據,找到企業的基準生產率。
同時,對于大中型企業,通常部門劃分較多且職責劃分較為明確,存在專門的市場部門、管理部門、業務部門及研發部門。若需要單獨評估研發部門的生產率,還需要在造價評估公式的基礎上,對項目的階段進行劃分。
對此,關于企業研發部門基準生產率的確定,認為可嘗試如下方式進行:
(1)同步開展功能點法及經驗法價格評估,兩者互為參考、相互輔助。
(2)參考《中國軟件行業基準數據》(表6)中軟件開發工作量分布,計算實際投入階段對應的工作量,并轉換為報價。
(3)計算階段報價與經驗法報價間的差值系數,并通過樣本累加得到企業/部門/項目組的系數平均值。
(4)將系數平均值轉換為基準生產率。并在后續的價格評估中,不斷對基準生產率進行調整。

表6 《2019年度中國軟件行業基準數據》
軟件造價評估對軟件項目實施提供了重要基礎。通過對比分析,本文得出在ISO 國際5 種功能點標準中,NESMA功能點法在軟件造價評估應用中的綜合評價較高;對NESMA功能點法的估算流程、數據功能識別、事務功能識別等進行了詳細說明;在此基礎上,分析了NESMA在軟件造價評估中的具體應用,對評估過程中的企業基準生產率因素提出了判定方式,為企業規范造價評估體系提供了參考。