周玫
摘? 要:本文主要總結在前一段代碼走查實踐工作中的一些收獲,同時對工作開展過程中存在的問題和困難進行分析,提出解決思路,并在實踐的過程中對其進行驗證,最后收集實踐過程所得到的數(shù)據(jù)并對其進行深入分析,以獲得今后工作的改進思路。
關鍵詞:代碼走查;過程改進;模塊故障
中圖分類號:TP311.5? ? 文獻標識碼:A 文章編號:2096-4706(2019)01-0190-02
Analysis of the Practice Process of Effective Code Checking
ZHOU Mei
(Jiangxi Industry Polytechnic College,Nanchang? 330039,China)
Abstract:This paper mainly summarizes some achievements in the practice of the previous section of code checking. At the same time,it analyses the problems and difficulties in the process of work development,puts forward solutions,and verifies them in the process of practice. Finally,the data obtained from the practice process are collected and analyzed in depth in order to obtain the improvement ideas for future work.
Keywords:code checking;process improvement;module failure
0? 引? 言
在小組開發(fā)工作中,代碼走查工作一直是一個較難開展的工作。由于在代碼走查過程中發(fā)現(xiàn)的問題和故障較少,所以這部分工作總是收效甚微。所以在開發(fā)進度較緊張的情況下,代碼走查工作往往是第一個被省略。
筆者認為代碼走查工作展開難的原因主要有以下兩種:首先,代碼走查工作人員安排問題,比如以往某個模塊編碼完成后,會安排其他開發(fā)人員對其進行走查,如果開發(fā)人員做過類似的模塊工作,則能查出一些問題,但大多數(shù)情況下,開發(fā)人員對此模塊不熟悉,其在查看整個模塊代碼之前首先需要花費較長時間查看模塊設計文檔,在有限的時間內,他們在沒有搞清楚復雜模塊代碼功能的情況下,就匆忙填上幾個問題,提交走查報告,以按時完成任務;其次,問題排查難及驗收標準模糊,走查過程中對模糊問題界定及其位置確定困難,同時在有限的時間內對代碼走查到什么程度,沒有一個驗收標準。針對上述問題,我們實踐情況如下。
1? 工作安排
從2017年8月23日到同年10月21日,小組進行了12次代碼走查,共覆蓋8個模塊,其中經過測試的模塊有3個,未測試的模塊有5個,走查的代碼總量達到:22.06kloc。而這些工作往往又是在研發(fā)進度相當緊張的情況下完成,既要對模塊進行代碼走查,還有其他項目工作。由于時間緊張關系代碼走查工作就不會全面走查。因此在工作安排中,要特別注意時間問題,并在小組中強調一定要保證走查工作時間的準確性,本次所得數(shù)據(jù)基本能反應真實投入時間。走查工作時間匯總如表1所示。
從數(shù)據(jù)中可以看到,由于單次代碼走查的規(guī)??刂频搅?Kloc,單次走查所用的時間最大10個小時,也就是一個多工作日。所以從計劃上講,單次走查的工作很好安排,在開發(fā)過程的任意階段都可以安排。并且這個最大值是某一個模塊第一次走查的時間,該模塊第二次走查的時間已經下降到6小時。這也就是我們能在不到兩個月的時間內連續(xù)安排12次代碼走查工作,并能有效實施的原因。
那么開發(fā)人員是否認為工作量過大或認為走查工作影響了他們負責模塊的進度呢?筆者就此詢問了兩個走查工作做的最多的人,他們反饋工作安排上沒什么問題,完全能按計劃完成,也容易達到要求。雖然第一次走查的工作有一定難度,需要看相關的文檔,但第二次就較為輕松。
2? 走查工作效果
走查效果是筆者在實施改進工作中最擔心的。筆者從PR中收集走查效果數(shù)據(jù)如表2所示。
由于沒有其他參考數(shù)據(jù),相對以往的數(shù)據(jù)空白,這個數(shù)據(jù)體現(xiàn)了我們的工作效果。本次代碼工作總耗時為92.25人時,故障發(fā)現(xiàn)率為1.1/人時。與單元測試,集成測試以及系統(tǒng)測試相比較,代碼走查故障發(fā)現(xiàn)率最高。
因走查人員理解偏差,以及模塊負責人和走查人員對問題界定存在差異,這些故障數(shù)據(jù)也存在一些問題,例如提交的大部分是代碼確實存在問題的故障,而其中某些問題代碼已經經過兩輪測試。筆者之前以為經過測試的代碼基本不存在問題,但此次走查在三個已經測試的模塊代碼中仍然發(fā)現(xiàn)了57個故障,占所有故障總數(shù)的55.88%。這些問題雖在所難免,但在后續(xù)工作中我們也應該著力解決。
3? 故障類型
筆者根據(jù)PR故障分類對所有模塊故障進行分類,結果如表3所示。
從故障分類結果可以看到,大部分故障都與功能的實現(xiàn)相關,在數(shù)據(jù)方面的體現(xiàn)就是程序處理和異常保護占了最大的比例,而不是程序功能。程序功能問題提出人員分兩種,一種是模塊設計人員,一種是模塊接口人員,他們對模塊較為熟悉,走查結果顯示利用對模塊熟悉的人員走查代碼能更好的效果。但是實際的工作中,我們不可能為每一個模塊都配備對其熟悉的工作人員進行走查工作,這種通過為模塊配備對其熟悉的工作人員來提高故障排除效率的方法缺少實用性。因此在實際工作中,通過不熟悉模塊的工作人員進行走查,仍是代碼走查工作的主要方式。從代碼實現(xiàn)本身也能發(fā)現(xiàn)很多問題,至少目前的數(shù)據(jù)能證明這一點。
根據(jù)以上數(shù)據(jù)分析,我覺得此次走查工作達到了以下目標:第一,改進了走查工作;第二,走查結果超出預期。第三,此次代碼走查得到的數(shù)據(jù),為我們改進后續(xù)工作提供了參考。如果把代碼走查放到一個軟件工程中,作為一個過程控制的節(jié)點,我們一定希望這個關鍵點提供一個可控的、客觀的、標準的檢測缺陷的方法,我們不希望代碼走查的質量過分的取決于走查者的技術水平。
4? 結? 論
雖然代碼走查不能解決所有問題,但可以發(fā)現(xiàn)很多問題,而且這些問題的發(fā)現(xiàn)對后續(xù)工作意義重大。代碼走查的長處是發(fā)現(xiàn)一些比較直觀的東西,包括細節(jié)層面的如規(guī)范層面、內存層面、編碼層面等和宏觀層面主要是設計層面和需求層面.因此,針對代碼走查工作在具體的操作中存在的問題代碼覆蓋率不高,重大問題發(fā)現(xiàn)較少,走查方法較為單一,走查技巧缺乏等。我們會繼續(xù)關注并努力解決,從而提高走查代碼覆蓋率和代碼走查質量。
參考文獻:
[1] 孫衛(wèi)紅.代碼走查的研究與實踐 [J].計算機與網(wǎng)絡,2007(22):41-42.
[2] 王志,劉斌,鐘德明,等.代碼走查輔助工具的MDA開發(fā)模式 [J].計算機工程,2007(23):87-89.