評估開發(fā)人員的表現(xiàn)(performance)時,很難找到一個合適的、不依賴軼事證據(jù)(anecdotal evidence)的度量。所以當我們Bowery看到Rebel Lab開發(fā)人員生產(chǎn)力研究報告-下載鏈接時非常興奮。這份40頁的報告研究了開發(fā)人員在日常生活中使用的工具和實踐。為了能夠讓報告抓住“表現(xiàn)”所蘊含的主旨,Rebel Labs加權(quán)了不同實踐和工具在軟件質(zhì)量和版本發(fā)布的可預測性上的效果。
以下是研究報告中用于度量的一些實踐:
- 對技術(shù)債務(wù)(Technical debt)的處理
- 監(jiān)視和修正代碼質(zhì)量問題
- 自動化測試
- 結(jié)對編程
- 代碼評審
貫徹上述實踐可以提高軟件質(zhì)量,但是需要付出的金錢和時間成本又如何?這時就要使用可預測性的度量。將這些實踐與軟件按時發(fā)布的可能性相比,我們可以妥當?shù)贸隹煽慷攘?,來審視提高質(zhì)量花費的時間能否滿足最終期限。
處理技術(shù)債務(wù)
技術(shù)債務(wù)是指為了其他任務(wù)而推遲的工作。大部分延后的工作都是不用馬上處理的,但如果不好好處理這些任務(wù),可能在將來引起更棘手的問題。
結(jié)論:需要偶爾處理下技術(shù)債務(wù)。始終解決技術(shù)債務(wù)相比時不時解決下會有較小的提高,但并不顯著。
解決技術(shù)債務(wù)對可預測性和質(zhì)量的影響:

effects of solving technical debt on predictability and quality
監(jiān)視和修復代碼質(zhì)量問題
結(jié)論:修復代碼質(zhì)量能夠顯著提高軟件的質(zhì)量和發(fā)布的可預測性,很可能因為這樣的實踐會讓工程師們注意軟件應(yīng)用中潛在的結(jié)構(gòu)性問題。
修復代碼質(zhì)量問題對可預測性和質(zhì)量的影響:

effects of fixing code quality issues on predictability and quality
自動化測試
結(jié)論:100%使用自動化測試要比部分測試覆蓋率要好,但不使用自動化測試要比部分自動化測試要略微好些——很可能是這些工程師在人工測試他們的代碼。
自動化功能測試對可預測性和質(zhì)量的影響:

effects of automated functional testing on predictability and quality
結(jié)對編程
結(jié)論:結(jié)對編程(一人審核代碼,另一人編寫代碼)對軟件質(zhì)量有顯著影響。
結(jié)對編程對質(zhì)量和可預測性的影響:

effects of pairing up on quality and predictability
代碼評審
結(jié)論:從報告來看,評審代碼對軟件發(fā)布的可預測性有顯著影響,但是對質(zhì)量影響很小。這種實踐可能會幫助開發(fā)人員發(fā)現(xiàn)設(shè)計和方向上的重大問題,但并不能暴露小問題,例如軟件缺陷(bugs)。
代碼評審對質(zhì)量和可預測性的影響:

effects of code reviews on quality and predictability