公務(wù)員期刊網(wǎng) 論文中心 正文

代碼審查中軟件工程實(shí)施的重要性

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了代碼審查中軟件工程實(shí)施的重要性范文,希望能給你帶來靈感和參考,敬請(qǐng)閱讀。

代碼審查中軟件工程實(shí)施的重要性

摘要:軟件工程實(shí)施,使得軟件質(zhì)量有了明顯的提升,在取得成效之余,不應(yīng)忽視代碼審查的重要作用,本文闡述了代碼審查的不可替代性并給出了軟件工程實(shí)施過程中的具體做法.

關(guān)鍵詞:軟件工程;CMMI;代碼審查;質(zhì)量監(jiān)控;每千行代碼發(fā)現(xiàn)缺陷數(shù)

1引言

隨著CMMI認(rèn)證獲得普遍認(rèn)可,軟件工程在保證軟件質(zhì)量、提高軟件效率方面取得了矚目的成效,實(shí)施軟件工程已經(jīng)是大多數(shù)公司的共識(shí)。隨著軟件工程的實(shí)施,軟件的質(zhì)量監(jiān)控手段呈現(xiàn)多樣化,不再單純依賴軟件測(cè)試,只是在軟件質(zhì)量取得顯著可見成效的欣喜中,軟件測(cè)試的地位有弱化的傾向,帶來的問題是,軟件代碼審查作為有效的軟件質(zhì)量提升手段,在軟件工程實(shí)施中有日漸弱化并有可能消失。軟件代碼審查是軟件測(cè)試的手段之一,是在執(zhí)行動(dòng)態(tài)測(cè)試之前對(duì)代碼的人工走讀排錯(cuò)活動(dòng),主要方法包括個(gè)人代碼審查、項(xiàng)目?jī)?nèi)交叉代碼互審、正式代碼審查。個(gè)人代碼審查在編碼過程中隨時(shí)開展,項(xiàng)目?jī)?nèi)交叉代碼互審也是在編碼過程中,一般每周開展,正式代碼審查是在前兩種代碼審查的基礎(chǔ)上,可以在編碼和單元測(cè)試期間的任意時(shí)間開始。本文所講的代碼審查是指正式代碼審查,該審查需召集同行專家采用會(huì)議形式對(duì)代碼進(jìn)行集中評(píng)審,集思廣益審查代碼的缺陷,是一種高效的發(fā)現(xiàn)代碼缺陷的方式。

2軟件工程化過程中的軟件質(zhì)量監(jiān)控手段

軟件工程化過程的典型模型.項(xiàng)目的研發(fā)過程中通常采用U模型或者V模型,將軟件研發(fā)過程劃分為不同的階段,每一個(gè)階段的工作產(chǎn)品有對(duì)應(yīng)的測(cè)試活動(dòng)保證質(zhì)量。軟件工程實(shí)施時(shí),除了通過傳統(tǒng)的測(cè)試活動(dòng)保證質(zhì)量之外,還要在每個(gè)階段末進(jìn)行質(zhì)量審查,以保證工作的有效性。這樣的質(zhì)量監(jiān)控手段比單純的依靠測(cè)試活動(dòng),軟件質(zhì)量的提升是顯而易見的。

3代碼審查弱化或者消失的原因

由前述的質(zhì)量監(jiān)控手段可知,軟件工程的實(shí)施需要比之前付出更多的資源、成本、時(shí)間,要設(shè)置專職的質(zhì)量保證人員、配置管理人員、要對(duì)每個(gè)小階段總結(jié)、要審查評(píng)審效果等等。

3.1資源投入增加

軟件工程的實(shí)施過程中,需要進(jìn)行工作產(chǎn)品審核、階段總結(jié)、審查等導(dǎo)致需要投入較多的時(shí)間和資源,尤其是產(chǎn)品評(píng)審需要高層次的同行專家才能開展,而代碼審查隨著代碼量的增大不但需要時(shí)間的大量投入,更需要高水平人員的投入。而這些高水平的人員很大可能已經(jīng)在前期的評(píng)審等活動(dòng)投入了不少的精力,在公司已經(jīng)看到明顯質(zhì)量提升的成果時(shí),容易弱化并取消這個(gè)環(huán)節(jié)的投入。

3.2軟件測(cè)試工具功能越來越強(qiáng)大

隨著測(cè)試工具的功能日趨強(qiáng)大,缺陷的發(fā)現(xiàn)效率也越來越高,一定程度上解放了人工的付出,這也給決策層帶來代碼審查可以忽略的誤導(dǎo)。

3.3軟件質(zhì)量明顯提升

軟件工程的實(shí)施中前期的質(zhì)量控制投入、軟件測(cè)試工具的強(qiáng)大功能,使得軟件的缺陷已經(jīng)有明顯的降低,軟件質(zhì)量有明顯的提升,在這種情況下,單位的關(guān)注度更容易集中在其他控制手段上,弱化傳統(tǒng)的測(cè)試的工作,會(huì)導(dǎo)致代碼審查活動(dòng)被裁剪。

4代碼審查的重要性

代碼審查通過集中同行專家的智慧協(xié)助項(xiàng)目組發(fā)現(xiàn)代碼的更多缺陷,除了本身的質(zhì)量提升的作用,帶來的另一個(gè)好處是,通過代碼審查可以協(xié)調(diào)資源,及時(shí)發(fā)現(xiàn)編碼問題并組織培訓(xùn),提高團(tuán)隊(duì)整體的編碼水平。代碼審查除了除上述益處之外,之所以具有不可替代性,還因?yàn)椋?/p>

4.1測(cè)試工具無法完全替代代碼審查

雖然測(cè)試工具的功能在日趨強(qiáng)大,且發(fā)現(xiàn)的缺陷越來越多,但是仍有其不能代替人工之處,例如:(1)軟件的設(shè)計(jì)理念在代碼中是否得以貫徹實(shí)現(xiàn),依靠測(cè)試工具無法檢測(cè)。(2)架構(gòu)是否與設(shè)計(jì)文檔一直,符合要求,工具無法檢測(cè)。(3)一些謹(jǐn)慎使用的規(guī)則,依靠工具無法檢測(cè),例如:全局變量的使用是否謹(jǐn)慎;語句的完整性,switch,每個(gè)條件是否有‘break’;注釋的正確性,無法檢查注釋的正確性;數(shù)據(jù)定義的準(zhǔn)確性,例如,對(duì)不同的環(huán)境,同樣是int的定義會(huì)對(duì)應(yīng)不同的范圍,故在特殊情況下必須明確int的位數(shù)等;嵌套的層次,只能規(guī)定不超過x層,實(shí)際編碼時(shí)不見得都要達(dá)到x-1層,越多的嵌套代碼的復(fù)雜度越高。

4.2質(zhì)量審核無法替代代碼審查

質(zhì)量審核的主要實(shí)施人是質(zhì)量保證人員,其對(duì)質(zhì)量的審核更多的是體系符合性審查,無法起到代碼審查的作用。

5實(shí)施的具體措施

代碼審查雖然有其不可替代的重要作用,但是,如果組織不當(dāng),也會(huì)帶來不利影響。主要因?yàn)椋海?)代碼審查會(huì)議若跟文檔評(píng)審會(huì)一樣,安排在一兩天內(nèi)所有模塊都要完成走讀,發(fā)現(xiàn)錯(cuò)誤的機(jī)率就會(huì)大打折扣;(2)審查會(huì)的形式若主要通過現(xiàn)場(chǎng)由編碼人員說明自己負(fù)責(zé)的這塊代碼的功能實(shí)現(xiàn),那么參加代碼走讀的評(píng)委會(huì)以現(xiàn)場(chǎng)了解為主,很少能提出意見;(3)若無相應(yīng)的保障宣傳措施保證,評(píng)委會(huì)擔(dān)心影響關(guān)系,尤其是有領(lǐng)導(dǎo)參與時(shí),不愿意指出別人存在的問題。故雖然代碼審查在軟件工程實(shí)施過程中具有無可替代的作用,需要加強(qiáng),實(shí)施過程中應(yīng)避免出現(xiàn)上述的付作用,具體做法:(1)專家選取時(shí),人數(shù)不能過多3~5人比較適宜,且最好有類似開發(fā)經(jīng)驗(yàn)。(2)正式代碼審查會(huì)議前,先召開預(yù)備會(huì),代碼開發(fā)人員講解模塊的實(shí)現(xiàn),再由評(píng)委會(huì)前通讀代碼,會(huì)議召開時(shí),再展開討論。(3)先采取交叉審查,后同行進(jìn)行代碼審查,可以提高審查效率。(4)不要集中完成,采用分節(jié)點(diǎn)進(jìn)行審查的方式,例如,概設(shè)完畢時(shí),對(duì)架構(gòu)進(jìn)行代碼審查;編碼過程中,在每個(gè)單元完成,通過編譯后,進(jìn)行代碼審查。(5)針對(duì)本單位的軟件特點(diǎn)制定有針對(duì)性的檢查單。(6)根據(jù)2:8原理,對(duì)20%的核心單元進(jìn)行代碼審查。

6代碼審查能夠順利開展的條件

代碼審查開展的是否順利,需要具備以下條件:(1)制度保障,軟件工程實(shí)施時(shí),規(guī)定代碼審查為規(guī)定動(dòng)作,并由QA進(jìn)行過程檢查。借助于每千行代碼發(fā)現(xiàn)缺陷數(shù)、代碼審查速度和會(huì)前準(zhǔn)備時(shí)間等3個(gè)指標(biāo),分析代碼審查的效率,保障代碼審查的效果。(2)技能保障,培訓(xùn)人員,需具備相關(guān)技能的人員。(3)資源保障,管理層重視,在進(jìn)度和質(zhì)量之間權(quán)衡時(shí),除非必要,領(lǐng)導(dǎo)決策時(shí)優(yōu)選保證質(zhì)量活動(dòng)。(4)數(shù)據(jù)保障,合理的選取表征代碼審查的數(shù)據(jù)。

7結(jié)束語

軟件工程的實(shí)施極大的提高了軟件質(zhì)量,提高了軟件效率,只是實(shí)施過程中在關(guān)注新措施時(shí),會(huì)對(duì)原有的優(yōu)勢(shì)活動(dòng)出現(xiàn)弱化現(xiàn)象,需要實(shí)施人員及時(shí)發(fā)現(xiàn)并補(bǔ)足,才能做到優(yōu)勢(shì)繼續(xù)保持,弱勢(shì)得到加強(qiáng),在保持的基礎(chǔ)上有更好的提升。代碼審查的數(shù)據(jù)積累是一個(gè)長(zhǎng)期不斷完善的過程,在執(zhí)行的過程中,要合理收集數(shù)據(jù),過多或過少都可能會(huì)導(dǎo)致錯(cuò)誤的效果,增加公司負(fù)擔(dān),實(shí)施人應(yīng)視具體情況調(diào)整。另外,也需借助信息化的手段來幫助收集、優(yōu)化過程,可以有效的提高效率,增強(qiáng)實(shí)施效果。

參考文獻(xiàn)

[1]張如云.代碼審查在軟件開發(fā)中的應(yīng)用研究[J].電腦開發(fā)與應(yīng)用,2014.

[2]張海潘.軟件工程導(dǎo)論[M].清華大學(xué)出版社,2005.

[3]黎連業(yè),王華,李淑春.測(cè)試技術(shù)[M].北京,清華大學(xué)出版社,2009.

作者:井濤 單位:中國(guó)電子科技集團(tuán)公司第41研究所