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