評審尤其是同行評審,是提前發(fā)現(xiàn)缺陷,降低開發(fā)成本的有效方法;但是很多企業(yè)并不重視,或者效果不佳。
原因有很多:沒有獲得合適的專家、組織不合理、方法不當?shù)?。針對代碼評審,我想簡單地談幾點(其實其它工程文檔的評審存在同樣問題):1、評審要計劃。
因為大家都很忙,各領(lǐng)域的專家也都有各自的工作,評審結(jié)果的好壞對他們工作績效沒有影響,所以專家投入多少精力來用于評審不受控,完全靠他們自己的職業(yè)精神。 所以,這就要求項目經(jīng)理比較有影響力,能夠爭取到足夠的、合適的專家來參與評審。
專家最好要提前協(xié)調(diào),當然項目經(jīng)理首先要知道要請哪些專家(如系統(tǒng)專家、領(lǐng)域?qū)<?、測試人員、QA等),這些專家在哪里?能否獲得專家資源的支持,是項目經(jīng)理的項目管理能力一個重要體現(xiàn)。評審時間的投入比例,一般是第一次版本準備時間的3/5以上。
2、評審要分層次和重點。作為項目成員,在代碼編寫完成后,首先是自檢,這時發(fā)現(xiàn)的缺陷不計算;然后是項目組內(nèi)的評審,這時發(fā)現(xiàn)的缺陷應計算;最后才是外部評審。
應提前把相關(guān)文檔和代碼交給評審專家,讓他們各自評審;根據(jù)項目和評審結(jié)果的情況,決定是否召開評審會議,評審會議以確認問題為主,而不是討論解決方案。對于重要的核心的代碼,要投入重點評審力量;另外,對于能力不足的成員所完成的代碼,也要重點評審。
每個角色也應明白各自評審重點,如QA重點放在編程規(guī)范、測試人員側(cè)重在可測性、系統(tǒng)專家側(cè)重在從整體來考慮(如對其它功能的影響、性能等)。3、問題的確認與跟蹤。
評審專家發(fā)現(xiàn)問題后,首先與該代碼的完成人進行確認,如果大家達成一致認可這個問題,然后由代碼完成人提出解決方案,這個解決方案要得到問題發(fā)現(xiàn)者的同意,然后編程人員編碼實現(xiàn)該方案,并進行測試和驗證,并將驗證結(jié)果提交問題發(fā)現(xiàn)人,問題發(fā)現(xiàn)人確認無誤后,該問題就可關(guān)閉。所以,評審專家發(fā)現(xiàn)問題后并沒有結(jié)束,而是要負責跟蹤該問題。
總之,評審活動的組織其實比較復雜,也是項目經(jīng)理項目管理能力的一個重要體現(xiàn),項目經(jīng)理對評審活動負有重要責任。
代碼review主要就是事前的準備,執(zhí)行,和后期的跟蹤事前的準備也叫做review的輸入,這個輸入是在什么條件下可以做為輸入,可以是個人檢查完了,也可以是相互交叉的檢查,這里有個檢查的標準,如有個檢查單什么的,等規(guī)定的輸入完成之后,進行review的執(zhí)行在review中,主要就是首先保證什么人參加,這是最主要的,如果找?guī)讉€沒有什么經(jīng)驗的,那review的效果肯定是打折扣的,review的多少時間跟蹤,主要是問題的跟蹤和后期的數(shù)據(jù)的度量你上面說的相互評審,主要是項目內(nèi)部的review,review分好幾種,有內(nèi)部的,專家的,客戶的review代碼時主要看是否符合編碼規(guī)范,特別是是否符合設計書(需求)的要求,邏輯是否正確,主要是專家級!。
常用的評標方法有 1單項評議法 2綜合評標法 3合理單價評標法 常用的評標方法介紹 1單項評議法 單項評議法,又稱單因素評議法、低標價法,是一種只對投標人的投標報價進行評議從而確定中標人的評標定標方法,主要適用于小型工程。
單項評議法的主要特點是僅對價格因素進行評議,不考慮其他因素,報價低的投標人中標。當然,這里未考慮的其他因素,實際上在資格審查時已獲通過,只不過不作為評標定標時的考慮因素,因而也不是投標人競爭成敗的決定性因素。
采用單項評議法評標定標,決定成敗的唯一因素是標價的高低。但不能簡單的認為,標價越低越能中標。
一般的做法是,通過對投標書進行分析、比較,經(jīng)初審后,篩選出低標價,通過進一步的澄清和答辯,經(jīng)終審證明該低標價確實是切實可行、措施得當?shù)暮侠淼蜆藘r的,則確定該合理低標價中標。合理低標價不一定是最低投標價。
所以,單項評議法可以是最低投標價中標,但并不保證最低投標價必然中標。 采用單項評議法對投標報價進行評議的方法多種多樣,主要有以下三類具有代表性的模式: (1)將投標報價與標底價相比較的評議方法 這種方法是將各投標人的投標報價直接與經(jīng)招標投標管理機構(gòu)審定后的標底價相比較,以標底價為基礎來判斷投標報價的優(yōu)劣,經(jīng)評標被確認為合理低標價的投標報價即能中標。
(2)將各投標報價相互進行比較的評議方法 從純粹擇優(yōu)的角度看,可以對投標人的投標報價不做任何限制、不附加任何條件,只將各投標人的投標報價相互進行比較,而不與標底相比,經(jīng)評標確認投標報價屬最低價或次低價的(即為合理低標價的),即可中標。 這種對投標報價的評議方法,優(yōu)點是給了投標人充分自主報價的自由,標底的保密性不成問題,評標工作也比較簡單。
不足之處是,招標人無需編制標底,或雖有標底但形同虛設,不起什么作用,因而導致投標人對投標報價的預期和認同心中無數(shù),事實上處于一種盲目狀態(tài),很難說清楚是否科學、合理。而投標人為了中標常常會進行竟相壓價的惡性競爭,也極易形成串通投標。
(3)將投標報價與標底價結(jié)合投標人報價因素進行比較的評議方法 這種方法的特點,是要借助于一個可以作為評標定標參照物的價格。這個在評標定標中作為參照物的價格,是指投標報價最接近于該價時便能中標的價格,我們稱之為“最佳評標價”。
2綜合評標法 綜合評議法,是對價格、施工組織設計(或施工方案)、項目經(jīng)理的資歷和業(yè)績、質(zhì)量、工期、信譽和業(yè)績等因素進行綜合評價從而確定中標人的評標定標方法。它是適用最廣泛的評標定標方法,各地通常都采用這種方法。
綜合評議法按具體分析方式的不同,可分為定性綜合評議法和定量綜合評議法。 (1)定性綜合評議法(評議法) 定性綜合評議法,又稱評議法。
通常的做法是,由評標組織對工程報價、工期、質(zhì)量、施工組織設計、主要材料消耗、安全保障措施、業(yè)績、信譽等評審指標,分項進行定性比較分析,綜合考慮,經(jīng)評議后,選出其中被大多數(shù)評標組織成員認為各項條件都比較優(yōu)良的投標人為中標人,也可用記名或無記名投票表決的方式確定中標人。定性評議法的特點是不量化各項評審指標。
它是一種定性的優(yōu)選法。采用定性綜合評議法,一般要按從優(yōu)到劣的順序,對各投標人排列名次,排序第一名的既為中標人。
但當投標人超過一定數(shù)量(如在5家以上)時,可以選擇排序第二名的投標人為中標人。 采用定性綜合評議法,有利于評標組織成員之間的直接對話和交流,能充分反映不同意見,在廣泛深入地開展討論、分析的基礎上,集中大多數(shù)人的意見,一般也比較簡單易行。
但這種方法,評議標準彈性較大,衡量的尺度不具體,各人的理解可能會相去甚遠,造成評標意見懸殊過大,會使評標決策左右為難,不能讓人信服。 (2)定量綜合評議法(打分法、百分法) 定量綜合評議法,又稱打分法、百分制計分評議法(百分法)。
通常的做法是,事先在招標文件或評標定標辦法中將評標的內(nèi)容進行分類,形成若干評價因素,并確定各項評價因素在百分之內(nèi)所占的比例和評分標準,開標后由評標組織中的每位成員按照評分規(guī)則,采用無記名方式打分,最后統(tǒng)計投標人的得分,得分最高者(排序第一名)或次高者(排序第二名)為中標人。 采用定量綜合評議法,原則上實行得分最高的投標人為中標人。
但當招標工程在一定限額(如1000萬元)以上,最高得分者和次高得分者的總得分差距不大(如差距僅在2分之內(nèi)),且次高得分者的報價比最高得分者的報價低到一定數(shù)額(如低2%以上)的,可以選擇次高得分者為中標人。對此,在制定評標定標辦法時,應作出詳盡說明。
定量綜合評議法的主要特點是要量化各評審因素。對各評審因素的量化是一個比較復雜的問題,各地的做法不盡相同。
從理論上講,評標因素指標的設置和評分標準分值的分配,應充分體現(xiàn)企業(yè)的整體素質(zhì)和綜合實力,準確反映公開、公平、公正的竟標法則,使質(zhì)量好、信譽高、價格合理、技術(shù)強、方案優(yōu)的企業(yè)能中標。 3合理單價評標法 “合理低價評標法”應該是“最低價中標”評標法的一次揚棄,存其優(yōu)化競爭的一面,棄。
代碼走查(code walkthrough)和代碼審查(code inspection)是兩種不同的代碼評審方法,
代碼審查是一種正式的評審活動,而代碼走查的討論過程是非正式的。
最近對項目組進行代碼評審,發(fā)覺需要對代碼評審中找到的問題進行一下分類,大概可以分成以下幾類問題:
1. Comment
注釋沒寫,或者格式不對,或者毫無意義
2. Coding Standard
沒遵守代碼規(guī)范
3. Existing Wheel
重復現(xiàn)成的代碼,或者是開源項目,或者公司已有代碼
4. Better practice
Java或者開源項目,有更好的寫法
5. Performance bottle and Improvement
性能瓶頸和提高
6. Code Logic Error
代碼邏輯錯誤
7. Business Logic Error
業(yè)務邏輯錯誤
代碼審查列出問題的類型,并有解決情況報告
1、根據(jù)《評標委員會和評標方法暫行規(guī)定(國家發(fā)展計劃委員會、國家經(jīng)濟貿(mào)易委員會、建設部、鐵道部、交通部、信息產(chǎn)業(yè)部、中水利部令第12號)》規(guī)定:
“第二十九條 評標方法包括經(jīng)評審的最低投標價法、綜合評估法或者法律、行政法規(guī)允許的其他評標方法?!?/p>
2、根據(jù)上文,評標方法分為最低投標價法、綜合評估法兩大類。實際應用的各種評標方法多種多樣,基本屬于以上兩類。其中最低投標價法定義簡單、明確。而綜合評估法設定方法多種多樣,內(nèi)容繁多,體現(xiàn)形式也各有不同。
3、抽簽法等不能體現(xiàn)競爭、擇優(yōu)評標方法,不屬于法律認可范圍。
代碼走查(code walkthrough)和代碼審查(code inspection)是兩種不同的代碼評審方法,
代碼審查是一種正式的評審活動,而代碼走查的討論過程是非正式的。
最近對項目組進行代碼評審,發(fā)覺需要對代碼評審中找到的問題進行一下分類,大概可以分成以下幾類問題:
1. Comment
注釋沒寫,或者格式不對,或者毫無意義
2. Coding Standard
沒遵守代碼規(guī)范
3. Existing Wheel
重復現(xiàn)成的代碼,或者是開源項目,或者公司已有代碼
4. Better practice
Java或者開源項目,有更好的寫法
5. Performance bottle and Improvement
性能瓶頸和提高
6. Code Logic Error
代碼邏輯錯誤
7. Business Logic Error
業(yè)務邏輯錯誤
代碼審查列出問題的類型,并有解決情況報告
什么是Code Review?
Code Review代碼評審是指在軟件開發(fā)過程中,通過對源代碼進行系統(tǒng)性檢查的過程。通常的目的是查找各種缺陷,包括代碼缺陷、功能實現(xiàn)問題、編碼合理性、性能優(yōu)化等;保證軟件總體質(zhì)量和提高開發(fā)者自身水平。 Code Review是輕量級代碼評審,相對于正式代碼評審,輕量級代碼評審所需要的各種成本要明顯低得多,如果流程正確,它可以起到更加積極的效果。正因如此,輕量級代碼評審經(jīng)常性地被引入到軟件開發(fā)過程中。
為什么Code Review?
1. 提高代碼質(zhì)量。
2. 及早發(fā)現(xiàn)潛在缺陷,降低修改/彌補缺陷的成本。
3. 促進團隊內(nèi)部知識共享,提高團隊整體水平。
4. 評審過程對于評審人員來說,也是一種思路重構(gòu)的過程。幫助更多的人理解系統(tǒng)。
5. 是一個傳遞知識的手段,可以讓其它并不熟悉代碼的人知道作者的意圖和想法,從而可以在以后輕松維護代碼。
6. 鼓勵程序員們相互學習對方的長處和優(yōu)點。
7. 可以被用來確認自己的設計和實現(xiàn)是一個清楚和簡單的。
評審尤其是同行評審,是提前發(fā)現(xiàn)缺陷,降低開發(fā)成本的有效方法;但是很多企業(yè)并不重視,或者效果不佳。
原因有很多:沒有獲得合適的專家、組織不合理、方法不當?shù)?。針對代碼評審,我想簡單地談幾點(其實其它工程文檔的評審存在同樣問題):1、評審要計劃。
因為大家都很忙,各領(lǐng)域的專家也都有各自的工作,評審結(jié)果的好壞對他們工作績效沒有影響,所以專家投入多少精力來用于評審不受控,完全靠他們自己的職業(yè)精神。 所以,這就要求項目經(jīng)理比較有影響力,能夠爭取到足夠的、合適的專家來參與評審。
專家最好要提前協(xié)調(diào),當然項目經(jīng)理首先要知道要請哪些專家(如系統(tǒng)專家、領(lǐng)域?qū)<?、測試人員、QA等),這些專家在哪里?能否獲得專家資源的支持,是項目經(jīng)理的項目管理能力一個重要體現(xiàn)。評審時間的投入比例,一般是第一次版本準備時間的3/5以上。
2、評審要分層次和重點。作為項目成員,在代碼編寫完成后,首先是自檢,這時發(fā)現(xiàn)的缺陷不計算;然后是項目組內(nèi)的評審,這時發(fā)現(xiàn)的缺陷應計算;最后才是外部評審。
應提前把相關(guān)文檔和代碼交給評審專家,讓他們各自評審;根據(jù)項目和評審結(jié)果的情況,決定是否召開評審會議,評審會議以確認問題為主,而不是討論解決方案。對于重要的核心的代碼,要投入重點評審力量;另外,對于能力不足的成員所完成的代碼,也要重點評審。
每個角色也應明白各自評審重點,如QA重點放在編程規(guī)范、測試人員側(cè)重在可測性、系統(tǒng)專家側(cè)重在從整體來考慮(如對其它功能的影響、性能等)。3、問題的確認與跟蹤。
評審專家發(fā)現(xiàn)問題后,首先與該代碼的完成人進行確認,如果大家達成一致認可這個問題,然后由代碼完成人提出解決方案,這個解決方案要得到問題發(fā)現(xiàn)者的同意,然后編程人員編碼實現(xiàn)該方案,并進行測試和驗證,并將驗證結(jié)果提交問題發(fā)現(xiàn)人,問題發(fā)現(xiàn)人確認無誤后,該問題就可關(guān)閉。所以,評審專家發(fā)現(xiàn)問題后并沒有結(jié)束,而是要負責跟蹤該問題。
總之,評審活動的組織其實比較復雜,也是項目經(jīng)理項目管理能力的一個重要體現(xiàn),項目經(jīng)理對評審活動負有重要責任。
首先,我們先來看看Code Reivew的用處:
Code reviews 中,可以通過大家的建議增進代碼的質(zhì)量。
Code reviews 是一個傳遞知識的手段,可以讓其它并不熟悉代碼的人知道作者的意圖和想法,從而可以在以后輕松維護代碼。
Code reviews 也鼓勵程序員們相互學習對方的長處和優(yōu)點。
Code reviews 也可以被用來確認自己的設計和實現(xiàn)是一個清楚和簡單的。
你也許注意到了在上面的Code Reivew中的諸多用處中,我們沒有提到可以幫助找到程序的bug和保證代碼風格和編碼標準。這是因為我們認為:
Code reviews 不應該承擔發(fā)現(xiàn)代碼錯誤的職責。Code Review主要是審核代碼的質(zhì)量,如可讀性,可維護性,以及程序的邏輯和對需求和設計的實現(xiàn)。代碼中的bug和錯誤應該由單元測試,功能測試,性能測試,回歸測試來保證的(其中主要是單元測試,因為那是最接近Bug,也是Bug沒有擴散的地方)
Code reviews 不應該成為保證代碼風格和編碼標準的手段。編碼風格和代碼規(guī)范都屬于死的東西,每個程序員在把自己的代碼提交團隊Review的時候,代碼就應該是符合規(guī)范的,這是默認值,屬于每個人自己的事情,不應該交由團隊來完成,否則只會浪費大家本來就不夠的時間。我個人認為“meeting”是奢侈的,因為那需要大家在同一時刻都擠出時間,所以應該用在最需要的地方。代碼規(guī)范比起程序的邏輯和對需求設計的實現(xiàn)來說,太不值得讓大家都來了。
10年前,上面這兩件事會是理所當然的(10年前的中國的軟件開發(fā)還沒有Code Reivew呢),今天,在中國的很多公司上面這兩件事依然被認為是Code Reivew最重要的事,所以,我能夠看到很多開發(fā)Team抱怨Code Review就是一個形式,費時費力不說,發(fā)現(xiàn)的問題還不如測試,而評審者們除了在代碼風格上有些見術(shù),別的也就沒什么用了,長而久之,大家都會開始厭煩這個事了。
所以,在今天,請不要把上面的那兩件事分散了Code Review的注意力,取而代之的是,對于Bug,程序的作者要在Review前提交自己的單元測試報告(如:XUnit的測試結(jié)果),對于代碼規(guī)范,這是程序作者自己需要保證的,而且,有一些工具是可以幫你來檢查代碼規(guī)范的。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:2.953秒