前言:想要寫出一篇引人入勝的文章?我們特意為您整理了代碼審查中軟件工程實(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í)施,軟件的質(zhì)量監(jiān)控手段呈現(xiàn)多樣化,不再單純依賴軟件測試,只是在軟件質(zhì)量取得顯著可見成效的欣喜中,軟件測試的地位有弱化的傾向,帶來的問題是,軟件代碼審查作為有效的軟件質(zhì)量提升手段,在軟件工程實(shí)施中有日漸弱化并有可能消失。軟件代碼審查是軟件測試的手段之一,是在執(zhí)行動態(tài)測試之前對代碼的人工走讀排錯活動,主要方法包括個人代碼審查、項(xiàng)目內(nèi)交叉代碼互審、正式代碼審查。個人代碼審查在編碼過程中隨時開展,項(xiàng)目內(nèi)交叉代碼互審也是在編碼過程中,一般每周開展,正式代碼審查是在前兩種代碼審查的基礎(chǔ)上,可以在編碼和單元測試期間的任意時間開始。本文所講的代碼審查是指正式代碼審查,該審查需召集同行專家采用會議形式對代碼進(jìn)行集中評審,集思廣益審查代碼的缺陷,是一種高效的發(fā)現(xiàn)代碼缺陷的方式。
2軟件工程化過程中的軟件質(zhì)量監(jiān)控手段
軟件工程化過程的典型模型.項(xiàng)目的研發(fā)過程中通常采用U模型或者V模型,將軟件研發(fā)過程劃分為不同的階段,每一個階段的工作產(chǎn)品有對應(yīng)的測試活動保證質(zhì)量。軟件工程實(shí)施時,除了通過傳統(tǒng)的測試活動保證質(zhì)量之外,還要在每個階段末進(jìn)行質(zhì)量審查,以保證工作的有效性。這樣的質(zhì)量監(jiān)控手段比單純的依靠測試活動,軟件質(zhì)量的提升是顯而易見的。
3代碼審查弱化或者消失的原因
由前述的質(zhì)量監(jiān)控手段可知,軟件工程的實(shí)施需要比之前付出更多的資源、成本、時間,要設(shè)置專職的質(zhì)量保證人員、配置管理人員、要對每個小階段總結(jié)、要審查評審效果等等。
3.1資源投入增加
軟件工程的實(shí)施過程中,需要進(jìn)行工作產(chǎn)品審核、階段總結(jié)、審查等導(dǎo)致需要投入較多的時間和資源,尤其是產(chǎn)品評審需要高層次的同行專家才能開展,而代碼審查隨著代碼量的增大不但需要時間的大量投入,更需要高水平人員的投入。而這些高水平的人員很大可能已經(jīng)在前期的評審等活動投入了不少的精力,在公司已經(jīng)看到明顯質(zhì)量提升的成果時,容易弱化并取消這個環(huán)節(jié)的投入。
3.2軟件測試工具功能越來越強(qiáng)大
隨著測試工具的功能日趨強(qiáng)大,缺陷的發(fā)現(xiàn)效率也越來越高,一定程度上解放了人工的付出,這也給決策層帶來代碼審查可以忽略的誤導(dǎo)。
3.3軟件質(zhì)量明顯提升
軟件工程的實(shí)施中前期的質(zhì)量控制投入、軟件測試工具的強(qiáng)大功能,使得軟件的缺陷已經(jīng)有明顯的降低,軟件質(zhì)量有明顯的提升,在這種情況下,單位的關(guān)注度更容易集中在其他控制手段上,弱化傳統(tǒng)的測試的工作,會導(dǎo)致代碼審查活動被裁剪。
4代碼審查的重要性
代碼審查通過集中同行專家的智慧協(xié)助項(xiàng)目組發(fā)現(xiàn)代碼的更多缺陷,除了本身的質(zhì)量提升的作用,帶來的另一個好處是,通過代碼審查可以協(xié)調(diào)資源,及時發(fā)現(xiàn)編碼問題并組織培訓(xùn),提高團(tuán)隊(duì)整體的編碼水平。代碼審查除了除上述益處之外,之所以具有不可替代性,還因?yàn)椋?/p>
4.1測試工具無法完全替代代碼審查
雖然測試工具的功能在日趨強(qiáng)大,且發(fā)現(xiàn)的缺陷越來越多,但是仍有其不能代替人工之處,例如:(1)軟件的設(shè)計理念在代碼中是否得以貫徹實(shí)現(xiàn),依靠測試工具無法檢測。(2)架構(gòu)是否與設(shè)計文檔一直,符合要求,工具無法檢測。(3)一些謹(jǐn)慎使用的規(guī)則,依靠工具無法檢測,例如:全局變量的使用是否謹(jǐn)慎;語句的完整性,switch,每個條件是否有‘break’;注釋的正確性,無法檢查注釋的正確性;數(shù)據(jù)定義的準(zhǔn)確性,例如,對不同的環(huán)境,同樣是int的定義會對應(yīng)不同的范圍,故在特殊情況下必須明確int的位數(shù)等;嵌套的層次,只能規(guī)定不超過x層,實(shí)際編碼時不見得都要達(dá)到x-1層,越多的嵌套代碼的復(fù)雜度越高。
4.2質(zhì)量審核無法替代代碼審查
質(zhì)量審核的主要實(shí)施人是質(zhì)量保證人員,其對質(zhì)量的審核更多的是體系符合性審查,無法起到代碼審查的作用。
5實(shí)施的具體措施
代碼審查雖然有其不可替代的重要作用,但是,如果組織不當(dāng),也會帶來不利影響。主要因?yàn)椋海?)代碼審查會議若跟文檔評審會一樣,安排在一兩天內(nèi)所有模塊都要完成走讀,發(fā)現(xiàn)錯誤的機(jī)率就會大打折扣;(2)審查會的形式若主要通過現(xiàn)場由編碼人員說明自己負(fù)責(zé)的這塊代碼的功能實(shí)現(xiàn),那么參加代碼走讀的評委會以現(xiàn)場了解為主,很少能提出意見;(3)若無相應(yīng)的保障宣傳措施保證,評委會擔(dān)心影響關(guān)系,尤其是有領(lǐng)導(dǎo)參與時,不愿意指出別人存在的問題。故雖然代碼審查在軟件工程實(shí)施過程中具有無可替代的作用,需要加強(qiáng),實(shí)施過程中應(yīng)避免出現(xiàn)上述的付作用,具體做法:(1)專家選取時,人數(shù)不能過多3~5人比較適宜,且最好有類似開發(fā)經(jīng)驗(yàn)。(2)正式代碼審查會議前,先召開預(yù)備會,代碼開發(fā)人員講解模塊的實(shí)現(xiàn),再由評委會前通讀代碼,會議召開時,再展開討論。(3)先采取交叉審查,后同行進(jìn)行代碼審查,可以提高審查效率。(4)不要集中完成,采用分節(jié)點(diǎn)進(jìn)行審查的方式,例如,概設(shè)完畢時,對架構(gòu)進(jìn)行代碼審查;編碼過程中,在每個單元完成,通過編譯后,進(jìn)行代碼審查。(5)針對本單位的軟件特點(diǎn)制定有針對性的檢查單。(6)根據(jù)2:8原理,對20%的核心單元進(jìn)行代碼審查。
6代碼審查能夠順利開展的條件
代碼審查開展的是否順利,需要具備以下條件:(1)制度保障,軟件工程實(shí)施時,規(guī)定代碼審查為規(guī)定動作,并由QA進(jìn)行過程檢查。借助于每千行代碼發(fā)現(xiàn)缺陷數(shù)、代碼審查速度和會前準(zhǔn)備時間等3個指標(biāo),分析代碼審查的效率,保障代碼審查的效果。(2)技能保障,培訓(xùn)人員,需具備相關(guān)技能的人員。(3)資源保障,管理層重視,在進(jìn)度和質(zhì)量之間權(quán)衡時,除非必要,領(lǐng)導(dǎo)決策時優(yōu)選保證質(zhì)量活動。(4)數(shù)據(jù)保障,合理的選取表征代碼審查的數(shù)據(jù)。
7結(jié)束語
軟件工程的實(shí)施極大的提高了軟件質(zhì)量,提高了軟件效率,只是實(shí)施過程中在關(guān)注新措施時,會對原有的優(yōu)勢活動出現(xiàn)弱化現(xiàn)象,需要實(shí)施人員及時發(fā)現(xiàn)并補(bǔ)足,才能做到優(yōu)勢繼續(xù)保持,弱勢得到加強(qiáng),在保持的基礎(chǔ)上有更好的提升。代碼審查的數(shù)據(jù)積累是一個長期不斷完善的過程,在執(zhí)行的過程中,要合理收集數(shù)據(jù),過多或過少都可能會導(dǎo)致錯誤的效果,增加公司負(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è),王華,李淑春.測試技術(shù)[M].北京,清華大學(xué)出版社,2009.
作者:井濤 單位:中國電子科技集團(tuán)公司第41研究所