天天看點

軟體開發中的同行評審

在《浪潮之巅》這本書中,吳軍老師描述了在Google早期的工作方式,其中有一段是這麼寫的:我一般會在吃完晚飯後把代碼修改的清單發給克雷格做代碼稽核,他一般晚上10點左右會回複我,給我修改意見,詳細到某一行多了一個空格。吳軍老師所描述的内容,其實就是軟體開發過程中的同行評審流程。

對于同行評審,我有相當的體會。之前在某大公司工作的時候,我參與了多個軟體版本的維護工作,發現不同版本程式品質差别很大。究竟是什麼原因造成的?細究之後才發現,程式品質高的項目組在最終送出版本之前,無一例外都做了一件事情,那就是同行評審。看來,同行評審真的是十分重要。

對于任何一個軟體公司來說,幾乎在所有的軟體項目中,都需要同行評審。一個人不管能力多強,看問題的角度總會受到限制,寫出來的程式和文檔等也不會是十全十美的。如果能夠讓懂行的同僚給參閱一下,并提出他們認為正确的意見,那麼勢必會彌補單個開發人員思維的缺陷,并在一定程度上提高程式和産品的品質。

什麼是同行評審?

同行評審(Peer Review)是一種結構化的正式評審,由生産者(作者)的同行,為識别異常和需要修改的部分而對工作産品進行的有組織、有計劃的檢查。

同行評審并不是對個人的工作不信任,其目的是盡早有效地消除軟體産品中的異常。

為什麼要做同行評審?

在學校的時候,老師教導我們要獨立完成作業,是以,如果你在那個時候對别人的作業或在考試過程中進行“同行評審”,就是違規的。但軟體開發是一項團隊性的工作,需要大家協作來完成,是以,那種不願意公開自己工作成果接受他人審閱的做法是行不通的。

為什麼要做同行評審呢?原因有以下幾個:

第一,凡是人皆有出錯的時候,要保證你做出的東西錯誤盡量少,就需要他人對其進行評審。這就是所謂的“三個臭皮匠,頂個諸葛亮。”

第二,對于軟體産品來說,缺陷發現得越早,糾正缺陷所需的費用就越少。是以,在軟體的開發階段,如果嚴格進行同行評審,那麼後續流程中出現的錯誤就會很少,這也可以為公司節約糾錯的成本。

第三,同行評審過程中發現的錯誤可作為案例傳承下去,避免開發人員再次掉進同一個陷阱。“前事不忘,後事之師”,别人所犯的錯誤對自己有警示的作用。特别是對于新員工來說,經常參與同行評審,可減少試錯的次數,也能夠達到對新工作及早上手的目的。

同行評審的對象是什麼?

在産品開發的各個階段中,需要參與同行評審的對象包括:

概念階段:産品需求說明書等。 計劃階段:系統方案、項目計劃等。

開發階段:詳細設計、單元測試規程(方案)、內建測試規程(方案)、代碼、資料庫腳本等。一般而言,在開始編碼之前,先要進行詳細設計評審,以確定程式流程的正确性,減少後續修改帶來的不良影響。

驗證階段:系統測試計劃、系統測試規程(方案)等。

同行評審有哪幾種類型?

同行評審的類型包括:審查、走查、單人複審和多人複審等。

什麼是審查?審查的角色都有哪些?審查的步驟有哪些?有效評審的原則有哪些?

審查是同行評審的一種,在軟體項目中占有重要地位。

1.審查的定義:審查(Inspection)是一種正規的同行評審,适用于重要性和重複性較高的軟體産品。

2.審查的角色:包括主持人、講解員、記錄員、作者和審查員。一般說來,參與審查的有3到7人。各角色的分工如下:

主持人:需要具備上司技巧,負責管理審查過程,是審查流程中的關鍵角色。

作者:提供審查材料,并提供概要介紹;此外,作者也可以充當評審員。

記錄員:按照主持人的示意記錄産品和程式等的異常,在記錄的同時要對異常進行分類。

講解員:充分了解審查材料,并在講解的同時加以解釋。該角色不能由作者擔當。

審查員:所有參與審查的人員都可以是審查員;主要負責了解被審材料、進行個人檢查、做好準備并參加審查會議。

3.審查活動的步驟有7個,如下圖所示:

軟體開發中的同行評審

4.有效評審的原則包括:

第一,在預審期間要使用檢查單,檢查單用以記錄發現的缺陷。

第二,避免過度依賴檢查單。

第三,審查會議要限制在2小時之内,以避免長時間讨論而偏離了審查會議的主題。

第四,審查的對象是産品而非生産者(作者),是以要避免對作者本人進行人身攻擊。

第五,“磨刀不誤砍柴工”,要給評審員提供足夠的預審時間,一般以提前兩天為佳。

第六,如果有與會人員未準備好,則将會議延期;如果有人确實抽不出時間,則取消評審。

當然,以上有效評審的原則很難同時滿足,各項目組要根據實際的情況來組織評審。

什麼是代碼評審?其目的是什麼?

對于軟體開發工程師來說,代碼評審是不可缺少的一個環節,也是提高代碼品質的一種有效的手段。

1.代碼評審的定義:代碼評審是一種正式的針對程式發起的一項同行評審活動,它由一組職責明确的主持人、作者、記錄員、審查員等人員通過一系列明确定義的過程對代碼進行靜态檢查來發現代碼中的異常。

2.代碼評審的目的:提早發現代碼缺陷、去除缺陷,以降低開發成本并提高産品品質。

如何徹底地執行同行評審?

同行評審流程固然重要,但要徹底地執行下去,需要做到以下幾點:

第一,公司要明确規定所有的軟體開發項目必須走同行評審的流程,并定期抽查同行評審的執行情況。

第二,作者本人要持有開放心态,願意分享自己的工作成果,并勇于承認自身的不足而加以改進。很多人都不大樂意被别人指出自身的問題,而同行評審的目的就是要發現問題,是以,這在一定程度上是對作者心态的考驗。作者本人要明白是産品有缺陷,要對産品中的問題進行完善。

第三,評審人員要對事不對人,要懂得同行評審是為了發現産品的缺陷,而非人自身的問題。不要将同行評審活動變性為針對作者本人的人身攻擊,這就有傷整個團隊的凝聚力。同行評審的一個宗旨就是大家在一起學習,取長補短,共同提高。

第四,公司要對同行評審的結果進行總結,并以文檔的形式儲存起來,友善後期查閱。很多軟體産品出現的問題都是相似的。在着手開發産品之前,如果能夠了解前期類似産品中出現的問題,那麼大家就可以少走很多彎路,工作效率和産品品質也在無形中得到了提高。

總結

不管是成熟團隊也好,創業團隊也罷,為了確定軟體産品的品質,所有的工作成果(包括程式、文檔、圖形等)都應該接受同行評審。“三人行,則必有我師”,不管是老員工,還是新員工,都能夠從同行評審中受益。