




摘要:分析目前日常優化需求的軟件開發工作量評估面臨的問題,給出了一種基于功能點模塊化和基線化的軟件工作量快速估算方法。梳理日常開發常見的功能模塊,并制定功能模塊復雜度評估方法。結合功能點的歷史工作量數據和專家評估,確定功能模塊的工作量。制定基線數據,以指導后續工作量的快速評估。應用該方法能夠降低日常優化需求工作量評估的專業要求,提高評估效率,并且對該方法的優缺點進行分析和說明。
關鍵詞:軟件工作量評估;功能點;模塊化;基線化
軟件工作量評估是軟件工程研究的范疇,也是軟件項目管理的核心所在。目前常用的軟件工作量估算方法包括代碼行法、專家判斷法、類比法、功能點法等,這些方法適用于在不同階段進行軟件工作量的評估 [1][2]。其中,代碼行法是通過計算機應用程序中使用的代碼行數來確定軟件的規模,因為軟件成本與源代碼行數有正相關性。然而,在軟件項目早期,往往很難準確估算源代碼行數,并且代碼行數受編程語言、開發人員水平、系統架構等因素的影響較大。專家判斷法是通過專家依據一定的規則評估軟件開發的工作量,這是一種直觀的觀測方法,但受專家水平的影響較大,也具有較高的主觀性。常見的專家判斷法有 Delphi法和Pert法[3]。類比法是根據已有項目推測與其類似的軟件項目的工作量方法。首先需要建立豐富的軟件項目規模庫,通過對比庫中類似軟件的各項分類成本,預估當前項目的總工作量。功能點方法是根據軟件項目的功能需求來度量軟件的規模大小,目前在業界應用較廣泛。該方法關注的重點不是軟件的實現方式,而是根據軟件用戶所要求的功能來測量軟件規模。主流的功能點方法包括IFPUG方法、MKII方法、FISMA方法、COSMIC估算方法、NESMA方法等[4]。IFPUG標準由國際功能點用戶組提出,其他四個功能點評估方法標準是在IFPUG標準的基礎上發展而來[5]。
功能點評估方法雖然具有通用性和客觀性等優點,但更適合在新建軟件項目中使用。對于日常運營系統和日常優化需求的工作量評估,有其特點。
①在日常需求開發過程中,涉及的產品經理較多,因此很難讓每個產品經理都熟悉相對專業的評估方法。COSMIC、NESMA等功能點評估方法對評估人員的技能要求較高,需要其熟悉各類度量因子的識別和計算。通常在項目軟件工作量評估階段由專業人員進行評估。
②日常優化需求開發過程通常采用敏捷迭代的開發模式,需求交付節奏非???。因此,需要更快速的工作量評估手段。而COSMIC、NESMA等功能點評估方法發布較久,適合在項目初期階段進行專門的工作量評估。
③按傳統的功能點評估方法,類似的功能通常評估出近似的軟件工作量。但是日常需求通過不斷優化架構、復用服務等方式使得原來類似的功能點的工作量會相應地減少,不是固定不變的。
針對以上問題,本文通過對廣泛應用的功能點評估方法進行深入研究,并參考了該方法在行業中的實際應用情況。在此基礎上,對功能點評估方法進行改進,引入模塊化、基線化的評估方法,降低工作量評估技術門檻,實現工作量的快速評估。并在國內運營商IT系統的日常需求開發過程中進行試點應用,取得了較好的效果。
一、功能點基線化方法
傳統的功能點評估方法一般從終端用戶角度評估功能點工作量,根據數據的轉換來確定功能點[5]。這種方法不需要深入了解軟件開發的細節,但通常導致工作量評估結果不夠精確,相對較主觀。如果項目有專門的IT團隊,并且他們能夠深入了解軟件開發過程并熟悉需求的具體實現過程,那么從開發者的視角去評估工作量更加準確。從開發者的角度,一個需求可以拆分成多個用戶故事,而一個用戶故事可以進一步拆分成多個功能點。每個功能點又可以進一步拆分成多個實現的模塊類別,比如界面類、服務類、后臺類、配置類、接口類、報表類等。尤其是在當前采用微服務架構的系統實現中,通過合理的架構,很多需求可以通過分層實現,底層提供基礎的服務,上層進行應用編排,通過簡單的編碼或者配置即可實現相對復雜的需求?;谝陨系姆治龊脱芯?,本文提出了一種通過“功能模塊化”“模塊基線化”的功能點評估改進思路,旨在提升需求開發工作量評估的準確性、合理性和便捷性。
具體來說,功能模塊化是梳理具有共性的需求開發類型(如:界面類、服務類、后臺類、配置類、接口類、報表類等),并將它們提煉成開發模塊。而模塊基線化則是針對每個開發模塊,結合歷史功能點評估數據、專家評估法以及傳統的功能點評估方法進行交叉驗證,綜合評估并確定模塊工作量的標準值。這些標準值會被納入基線庫,并形成基準工作量速查表,以實現快速評估。
在評估新需求時,產品經理只需要確定功能點涉及哪些開發模塊,然后根據規則判斷每個模塊的復雜度,就可以得到模塊基準工作量。通過匯總所有模塊的基準工作量,并經過調整系數的調整,就可以直接得出整個需求的工作量。
二、具體措施
功能點基線化方法的評估步驟包括:
①分析用戶需求,將用戶需求拆分為多個功能點,同時結合用戶故事;
②分析實現該功能點所需的功能模塊,并將其具體分類為界面、服務、進程和報表等,同時分析確定新增模塊還是基于原有模塊的修改;
③根據各模塊復雜度參考表,確定各模塊類型的復雜度等級;
④根據速查表確定每個功能點各實現模塊的工作量基線;
⑤統計匯總所有功能點的基線工作量,并結合調整系數計算需求的匯總工作量。
(一)梳理開發模塊
通過對歷史需求功能點的實現情況的考察,結合各應用系統自身的特點,我們可以總結、提煉出常見的模塊類別,比如界面類、服務類、后臺進程類、配置類、接口類和報表類等[1][6],而對于每種類別來說,我們需要進一步區分新增與修改的工作,通常而言,新增的工作量要較修改的工作量更大。一個需求通常會對應一個或多個功能點,而每個功能點在實現上又可以由不同的模塊類別組成。通過進行這樣的分類與區分,我們能夠更清晰地劃分各模塊的工作量,并且能夠更準確地評估整體的工作量。
(二)確定模塊復雜度
在實際實現過程中,每種模塊的實現復雜度不同,對應的工作量也不同。例如,界面類功能模塊在頁面上實現的元素數量和業務規則的不同會導致復雜度的差異。為了確定模塊的復雜度,可以從頁面元素數量、業務規則、數據表數量和業務邏輯數量等維度來衡量,并制定相應的可量化的復雜度判斷標準。對于復雜度的判斷,可以從兩個方面考慮:一是基于本系統歷史數據的統計分析,二是依據業界專家的經驗評估。
(三)建立開發模塊工作量基線
根據制定的開發模塊以及復雜度模型,組織相關領域專家,討論制定各開發模塊不同復雜度的工作量建議值,根據歷史相關需求的工作量。同時,對歷史數據進行抽樣,按照傳統的功能點評估法對各模塊進行評估,結合專家經驗和傳統功能點評估法確定模塊工作量的標準值,納入基線庫。工作量的基準值作為工作量評估的上限值,用于控制功能基線的上限。建立的開發模塊工作量基線作為工作量評估時的速查表,方便快速評估功能點。模塊工作量基線受到各系統的架構、開發人員能力、交付水平等因素的影響較大。例如,對系統架構的影響,如果系統中有界面快速生成的框架,對應的工作量基線會比沒有界面生成框架的要少。工作量評估的單位定義為人日,一般以熟練軟件開發工程師的工作效率作為參考標準,衡量水平一般以參與本行業工作3年經驗的水平來衡量。
模塊基線工作量不是一成不變的。通過改進系統架構、提高配置化程度、重復利用能力以及引入新技術等方式,可以提升軟件開發效率,從而減少相應的工作量。針對日常需求,可以建立效能度量體系,持續跟蹤需求交付周期,及時了解功能模塊實際工作量的變化。結合所獲取的數據,定期復盤模塊工作量基線,并進行必要的調整。
(四)計算工作量
在建立了模塊劃分、復雜度判斷原則以及各模塊工作量基線的基礎上,根據快速評估過程對需求進行工作量評估。
需求總工作量= ( 功能點i各模塊基準工作量)×調整系數
其中N為該需求拆分的功能點數量,需求總的工作量等于拆分的功能點各模塊基準工作量的和,再乘以調整系數。調整系數從軟件復用度、性能、運維、安全四個維度來考慮,根據需求的難易程度選擇相應的權重值,作為調整需求非功能性需求工作量參考[7][8]。
調整系數 = 復用度×性能×運維×安全。
三、開發過程優化
功能點基線法的評估方法關鍵點在于功能點模塊的準確和規范劃分。劃分出的功能模塊應包含在功能點模塊基線庫中,以便查找和匹配工作量基線速查表。在該方法實施過程中,為了確保需求設計方案中劃分的模塊與工作量評估的模塊保持一致,可以通過規范需求設計方案模板,將相關模塊的內容體現在方案模板中。例如,如果某個功能點涉及前臺界面和后端服務的增加,需在設計方案中明確體現這部分內容,以保證方案內容與功能點評估內容保持一致,確保工作量評估的準確性。
另外,將工作量評估過程嵌入到需求管理平臺中,特別是將工作量基線表固化到系統中,產品經理在評估時只需正確標記功能點歸屬模塊、新增或修改、復雜度等信息。系統能夠快速給出工作量評估建議值,實現工作量的快速評估。
四、結束語
基于功能點模塊化、基線化的軟件工作量評估方法是對傳統工作量評估方法的補充改進,適用于日常優化需求的工作量評估。該方法的優點包括:①繼承了原有的功能點分析和專家評估法的經驗,評估標準統一,易于各方理解接受;②對自有人員無需大規模培訓,評估人員能夠快速上手,提高評估效率;③評估標準可以固化到系統中,便于實現事前控制與事后稽核。
然而,該評估方法也存在一些局限性:①共性模塊無法覆蓋所有系統的各類開發場景,不可避免地存在與現有模塊差異的場景,需要加強案例的積累,持續總結和提煉,不斷增補完善基線庫;②隨著軟件行業的技術進步和生產效率的提升,基線模塊的工作量不能保持不變,需要定期進行更新和修訂;③該方法適用于日常優化需求的工作量評估,不適用于項目初期方案不明確階段的軟件工作量規模初步評估。
該評估方法在某省運營商的業務支撐系統中進行了試用,通過優化需求設計方案模板,并將工作量評估過程固化到需求管理平臺中進行評估約束和輔助評估,成功地提升了工作量評估效率。
作者單位:楊奎 劉波 中國移動通信集團江蘇有限公司
參" 考" 文" 獻
[1]朱明英,姚文勝,邢豫,等.基于功能點法的軟件工作量評估方法研究與應用探討[J].現代計算機,2017(33):52-55,64.
[2]江韶志,羅梓威.電信行業應用軟件需求工作量評估應用淺析[J].廣東通信技術,2013(7):58-60.
[3]張靜嫻,張紅福.NESMA功能點分析方法在電信行業軟件中的應用與改進[J].數據通信,2020(3):12-16.
[4]張旸旸,周平.軟件成本度量國家標準實施指南[M]. 北京:電子工業出版社,2020:12-22.
[5]曹濟,溫麗.軟件成本評估[M].北京:清華大學出版社,2016:44-65.
[6]王雪純,周小翠,吳娟,等.軟件開發項目工作量核算研究[J].信息通信,2019(6):271-272.
[7]汪福明.非功能性需求對cosmic軟件預估方法的影響研究[J].軟件導刊,2017,16(1):11-14.
[8]張紅福.功能點分析方法中的調整因子系數在電信軟件的應用與改進[J].數據通信,2023(2):36-39.