林子薇,唐海濤,2,3
(1.中國電建集團華東勘測設計研究院有限公司,浙江 杭州 311122;2.浙江華東工程數(shù)字技術有限公司;3.浙江省工程數(shù)字化技術研究中心)
軟件產(chǎn)品開發(fā)過程可分為需求分析、設計開發(fā)、測試及運維等若干個階段,軟件開發(fā)任務通常以團隊工作的形式完成[1]。要想做好對軟件研發(fā)人員的績效管理工作,就必須充分了解軟件研發(fā)工作的特性,然后根據(jù)這種特性選擇最適合軟件研發(fā)人員的績效管理方式[2]。通常一個團隊中包含產(chǎn)品人員、開發(fā)人員、測試人員、運維人員等,各個崗位的人員各司其職,完成自己的本職工作。但在有些企業(yè)中,項目團隊人員較少,導致職責劃分不清晰,團隊中的軟件研發(fā)人員除了完成設計開發(fā)工作外,還可能參與其他崗位的工作。
企業(yè)為了節(jié)約成本,沒有針對軟件研發(fā)人員工作性質(zhì)建立起科學、客觀的產(chǎn)出績效考核指標[3]。雖然對于軟件研發(fā)人員參與的設計開發(fā)類型的工作,可通過代碼管理系統(tǒng)抽取軟件研發(fā)人員提交代碼的量化數(shù)據(jù),通過量化數(shù)據(jù)對設計開發(fā)類型的工作進行產(chǎn)出量的評估[4],但對于需求分析、系統(tǒng)測試和運維實施這些類型的工作,目前還沒有合理的產(chǎn)出評估方法,僅憑借管理人員的主觀判斷。只有將工作合理地量化、評估,客觀公平的考核,才能保證考核的客觀性[5]。企業(yè)常常針對不同角色的軟件研發(fā)人員采用不同的產(chǎn)出評估方法,根據(jù)軟件研發(fā)人員的不同崗位制定相應的指標,此種模式有較大的局限性[6]。此外,如果只從某一個角色的角度來評價身兼多職的軟件研發(fā)人員的產(chǎn)出,就會存在誤評、少評的情況。
為了解決軟件研發(fā)人員績效管理中存在的問題,本文以功能點為單位,通過提取軟件研發(fā)人員在進行不同角色類型工作時所完成的功能點,并對其進行分析,從而綜合評估軟件研發(fā)人員的產(chǎn)出。
在設計考核關鍵指標的過程中,工作量相關測量工作是最困難的,我們通過功能點的方法來解決這一問題。功能點分析是指站在客戶的立場以軟件功能為基礎對軟件規(guī)模進行測量的一種方式,其表示的是功能性的數(shù)量[7]。基于功能點,可以更客觀、標準地評估軟件規(guī)模及軟件研發(fā)人員工作量。
本文提出一種基于功能點,更科學地評估軟件研發(fā)人員在進行不同類型工作時的產(chǎn)出。其基本方法是:首先獲取一定時間內(nèi)的功能清單和軟件研發(fā)人員的工作情況,對這些數(shù)據(jù)進行預處理,計算出代表軟件研發(fā)人員產(chǎn)出的四個評價指標,分別是:需求分析功能點數(shù)、設計開發(fā)功能點數(shù)、系統(tǒng)測試功能點數(shù)和運維實施功能點數(shù)。將這四個評價指標給予不同權重即加權,最終得到各個軟件研發(fā)人員的產(chǎn)出總量。具體如圖1所示。
圖1 方法簡介
⑴產(chǎn)出數(shù)據(jù)采集
為方便通過功能點來統(tǒng)計軟件研發(fā)人員的工作產(chǎn)出,首先需得到軟件研發(fā)人員的已完成功能點的數(shù)據(jù)和系統(tǒng)的匯總功能清單數(shù)據(jù)。通過填寫資料獲得開發(fā)功能清單和登記工作表,其中所述的開發(fā)功能清單的內(nèi)容主要包括開發(fā)功能的功能編碼、功能名稱、功能類型、投入人員信息,登記工作表的內(nèi)容主要包括軟件研發(fā)人員信息、角色職責、功能清單、登記時間。
⑵產(chǎn)出數(shù)據(jù)清洗
由于開發(fā)功能清單中的某個功能可能被刪除,因此軟件研發(fā)人員某條登記工作的記錄可能存在功能清單缺失的情況。應刪除功能清單為空的記錄,以便提高數(shù)據(jù)的有效性,便于后續(xù)計算。
⑶產(chǎn)出數(shù)據(jù)合并
軟件研發(fā)人員在同一角色職責下可能會有多條記錄,即同一功能可能存在于多條登記工作的記錄中。將軟件研發(fā)人員在同一角色職責下的登記工作記錄中的功能清單進行合并,做去重處理,刪去具有相同編碼和名稱的功能。
⑴遍歷完成預處理的登記工作表格,標記各軟件研發(fā)人員不同角色職責的功能清單中各個功能的功能類別。
所述功能類別包括內(nèi)部邏輯文件(Internal logical file)、外部接口文件(External interface file)、外部輸入(External input)、外部輸出(External output)、外部查詢(External query)[8]。
如某軟件研發(fā)人員在設計開發(fā)功能清單中功能i的類別為內(nèi)部邏輯文件(ILF),則該功能的類別標識數(shù)組ai如下:
同樣,如果功能類別為外部接口文件(EIF),那么標識功能類型的數(shù)組為:
⑵計算各軟件研發(fā)人員不同角色職責的功能清單中各功能的實際投入人員數(shù)量。
通過開發(fā)功能清單查詢各功能的計劃投入人員,在登記工作表中查詢各計劃投入人員是否在此角色職責下登記了該功能,如果已登記了,則計數(shù)+1,否則不計數(shù)。最終得到某軟件研發(fā)人員的各個角色職責下的功能清單中各功能有幾人登記,設功能i的實際投入人員數(shù)量為Ni。
⑶根據(jù)功能清單中各功能的類別和實際投入人員數(shù)量,計算該軟件研發(fā)人員在該功能產(chǎn)出的功能點數(shù)。
所述功能點(Function Point)是用來表示軟件規(guī)模的單位,功能點數(shù)用來表示一個軟件的規(guī)模。估算功能點計數(shù)是用來確定項目規(guī)模的一種功能點計數(shù)方法。根據(jù)行業(yè)標準《SJT11619-2016 軟件工程功能規(guī)模測量NESMA 方法》,在執(zhí)行估算功能點計數(shù)時,內(nèi)部邏輯文件、外部接口文件、外部輸入、外部輸出、外部查詢類型功能的功能點數(shù)可被定義為7、5、4、5、4[8]。
所以,某軟件研發(fā)人員在該功能產(chǎn)出的功能點數(shù)計算如下:
⑷將該軟件研發(fā)人員某角色職責的功能清單中的產(chǎn)出功能點數(shù)累加,求得該軟件研發(fā)人員在該角色職責下的產(chǎn)出總量,單位為功能點(Function point)。例如,某軟件研發(fā)人員在設計開發(fā)下的產(chǎn)出總量計算如下:
同樣的方法,求得各軟件研發(fā)人員分別在四個角色職責下的產(chǎn)出總量,包括需求分析、設計開發(fā)、系統(tǒng)測試和運維實施。
根據(jù)各角色職責的生產(chǎn)率,來評價不同角色職責產(chǎn)出能力的差異,以此來定義不同的權重指標。生產(chǎn)率是指軟件研發(fā)人員單位時間內(nèi)開發(fā)完成的功能點數(shù)量,單位為功能點/人日。如在相同時間內(nèi),需求分析和系統(tǒng)測試完成的功能點數(shù)往往比設計開發(fā)多,因此,完成同一個功能的產(chǎn)出在不同的角色職責下是有差異的。所以在對四個指標進行加權計算時,以設計開發(fā)的生產(chǎn)率為基準,設計開發(fā)的生產(chǎn)率除以各個角色職責的生產(chǎn)率作為各指標的權重。最后每個軟件研發(fā)人員的總產(chǎn)出OP由四個指數(shù)加權得到,其定義如下:
使用本文中所述的軟件研發(fā)人員產(chǎn)出度量方法在R 公司的某團隊中應用,現(xiàn)有四名人員共同完成一個系統(tǒng)的開發(fā),包括A、B、C、D 四個功能,以軟件研發(fā)人員1在A功能中投入的工作為例:
⑴A 功能的類型為內(nèi)部邏輯文件,所以A 功能的功能點數(shù)為7;
⑵A功能由軟件研發(fā)人員1、軟件研發(fā)人員2和軟件研發(fā)人員3共三個人共同完成,所以A功能的Ni為3;
⑶軟件研發(fā)人員1 在A 功能中投入的工作包括需求分析、設計開發(fā)、系統(tǒng)測試和運維實施,軟件研發(fā)人員2和3在A功能中投入的工作均為設計開發(fā)。
由此得到:
在功能A 中,軟件研發(fā)人員1 在需求分析、系統(tǒng)測試、運維實施方面產(chǎn)出的功能點數(shù)為7,在設計開發(fā)方面產(chǎn)出的功能點數(shù)為
各角色的生產(chǎn)率參考了《中國軟件行業(yè)基準數(shù)據(jù)》(CSBMK-202110),其中,需求分析、設計開發(fā)、系統(tǒng)測試、運維實施的生產(chǎn)率分別為10、2、10、15。
由此可得,軟件研發(fā)人員1 在功能A 的工作工程中,總產(chǎn)出OP計算如下:
其他人員和其他功能中的數(shù)據(jù)可同理得到。
各人員在各功能點上的角色對應如表1所示。
表1 R公司功能任務表
可得到產(chǎn)出結果如表2:
表2 產(chǎn)出結果表
由產(chǎn)出結果得出,產(chǎn)出量:軟件研發(fā)人員3>軟件研發(fā)人員1>軟件研發(fā)人員2>軟件研發(fā)人員4,由此得到軟件研發(fā)人員3績效最好,軟件研發(fā)人員4績效最差。
本文通過提出一種從功能點維度評估軟件研發(fā)人員產(chǎn)出的方法,使產(chǎn)出評估的顆粒度更細化;填補了需求分析、系統(tǒng)測試和運維實施三種角色職責產(chǎn)出評估的空白;考慮了同一軟件研發(fā)人員有多種角色職責的情況,可使得對軟件研發(fā)人員的產(chǎn)出評估更加全面;不同角色職責的軟件研發(fā)人員可在同一標準下進行產(chǎn)出評估,便于在企業(yè)級對軟件研發(fā)人員進行產(chǎn)出評價;引入計算機輔助計算,避免了主觀判斷,更加科學和公平。