戚華 楊銘
摘 要文中對代碼質(zhì)量管理平臺(tái)Sonar的質(zhì)量評估模型和技術(shù)優(yōu)勢進(jìn)行了深入剖析和解讀,介紹了將Sonar平臺(tái)在軟件項(xiàng)目管理中的意義和價(jià)值。從多個(gè)角度闡述了代碼質(zhì)量管理對軟件產(chǎn)品質(zhì)量的重要性,并通實(shí)際項(xiàng)目導(dǎo)入的數(shù)據(jù)比對分析展示了該平臺(tái)對實(shí)現(xiàn)企業(yè)軟件項(xiàng)目管理中的代碼質(zhì)量透明化的重大意義。
【關(guān)鍵詞】軟件質(zhì)量保證 代碼質(zhì)量管理 Sonar 持續(xù)集成
還記得《人月童話》引發(fā)的軟件界關(guān)于質(zhì)量與成本的大辯論嗎?在軟件行業(yè)內(nèi),產(chǎn)品質(zhì)量與人的個(gè)體能力息息相關(guān)。一個(gè)好與差的程序員相比,因其代碼質(zhì)量引發(fā)的軟件產(chǎn)品后續(xù)維護(hù)成本不能用簡單的比例來換算,無數(shù)教訓(xùn)告訴我們,放任程序設(shè)計(jì)開發(fā)缺陷到項(xiàng)目越是后期,項(xiàng)目組將要付出的代價(jià)越慘重。事實(shí)再一次告訴我們:軟件質(zhì)量是開發(fā)出來的而不是測試出來的。
那么,是否能夠找到一種能夠在軟件研發(fā)過程中切實(shí)可行的代碼質(zhì)量保證的方法呢?帶著這個(gè)問題,我們調(diào)研了當(dāng)前軟件行業(yè)內(nèi)的可用與代碼質(zhì)量檢查的主流方法和主要工具,綜合比較結(jié)果顯示,從引入成本、使用便利性、擴(kuò)展性和應(yīng)用范圍等幾方面統(tǒng)合考量,我們發(fā)現(xiàn)了Sonar這個(gè)專門針對代碼質(zhì)量管理設(shè)計(jì)地平臺(tái)軟件。
1 Sonar是什么
Sonar是一個(gè)管理代碼質(zhì)量的開放平臺(tái)。如圖1所示,它可以從架構(gòu)設(shè)計(jì)、注釋、編碼規(guī)范、單元測試、復(fù)雜度、重復(fù)度等7個(gè)角度衡量代碼質(zhì)量。
在研究中,我們發(fā)現(xiàn)Sonar設(shè)計(jì)實(shí)現(xiàn)的宗旨就是使用便利。首先,它以模塊化組件結(jié)構(gòu)形式構(gòu)成,圍繞核心功能以插件機(jī)制設(shè)計(jì)和實(shí)現(xiàn)其上的各種擴(kuò)展應(yīng)用功能模塊,有著較為極為便利的擴(kuò)展性。目前可支持的插件有:
(1)適應(yīng)多種代碼類型開發(fā)語言編程規(guī)范插件;
(2)用于分析代碼用的質(zhì)量分析指標(biāo)插件;
(3)實(shí)現(xiàn)人機(jī)對話和報(bào)表展示用的質(zhì)量管理插件;
(4)可擴(kuò)展第三方集成平臺(tái)工具和測試工具用的平臺(tái)集成插件;
(5)適應(yīng)國際化的語言本地化插件;
(6)支持生成報(bào)表文件用的報(bào)表插件;
(7)支持二次開發(fā)的開發(fā)工具插件等。
其次,Sonar在對外接口設(shè)計(jì)上也貫徹了其通用規(guī)范的設(shè)計(jì)思想,采用了統(tǒng)一接口設(shè)計(jì)模式,可以被方便地集成到其他持續(xù)集成平臺(tái)或開發(fā)平臺(tái)上。因其便利的易集成性,已經(jīng)被越來越多的國外軟件團(tuán)隊(duì)所關(guān)注。當(dāng)前,與Sonar集成的主流平臺(tái)組合模式有以下幾種:
(1)Maven + Jenkins(Hudson) + Sonar;
(2)Maven + Sonar;
(3)Eclipse + Sonar;
(4)IntelliJ IDEA + Sonar。
此外,除上述優(yōu)點(diǎn)外,之所以引起我們注意的還是要數(shù)它的展現(xiàn)形式:基于Web平臺(tái)以網(wǎng)頁形式展現(xiàn)的量化數(shù)據(jù)圖形的直觀可視化代碼質(zhì)量報(bào)告(見圖2)。
2 Sonar的優(yōu)勢
比較同類產(chǎn)品,我們發(fā)現(xiàn)Sonar有如下幾大優(yōu)勢:
(1)Sonar是一個(gè)專門的代碼質(zhì)量管理平臺(tái),功能更加集中;
(2)Sonar的插件式設(shè)計(jì)模式,不僅利于擴(kuò)展其他第三方插件,而且也便于自身被其他平臺(tái)所引入,在集成和被集成方面有著顯而易見的便利性;
(3)Sonar是一款Web軟件,其網(wǎng)頁化的展現(xiàn)形式使其在跨平臺(tái)和使用條件上有著無可比擬的優(yōu)勢。
雖然sonar也存在一些問題,尤其是個(gè)別插件的費(fèi)用上,但是相比其他商業(yè)化軟件,sonar在使用成本上還是占有較大的優(yōu)勢,如表1所示。
3 Sonar能幫助我們做什么
利用Sonar,我們可以輕松的實(shí)現(xiàn)代碼質(zhì)量的透明化,進(jìn)而實(shí)現(xiàn)代碼質(zhì)量的持續(xù)改進(jìn):
(1)讓部門管理者了解開發(fā)質(zhì)量,把每個(gè)項(xiàng)目代碼推行統(tǒng)一的編碼規(guī)范,通過集中的項(xiàng)目代碼檢查評估我們當(dāng)前的代碼質(zhì)量;
(2)讓項(xiàng)目管理者代碼質(zhì)量,項(xiàng)目經(jīng)理和QA可以實(shí)時(shí)了解項(xiàng)目代碼質(zhì)量,有針對性地控制項(xiàng)目質(zhì)量;
(3)讓開發(fā)人員了解代碼質(zhì)量,開發(fā)人員可以隨時(shí)了解自己的代碼質(zhì)量,不僅僅是代碼規(guī)范,還包括程序設(shè)計(jì)質(zhì)量;
(4)讓測試人員了解代碼質(zhì)量,測試人員可以隨時(shí)了解各模塊代碼質(zhì)量,有針對性地調(diào)整對各功能模塊的測試力度和關(guān)注度。
4 Sonar在實(shí)際項(xiàng)目中的使用
為了更好的測試Sonar在國內(nèi)實(shí)際項(xiàng)目中的適用性,2014至2015年的一年期間,我們先后選取了28個(gè)以Java開發(fā)語言為主的項(xiàng)目作為研究,項(xiàng)目類型包括:JavaWeb類的服務(wù)端軟件和JavaAndroid類的客戶端App應(yīng)用軟件。以某月度的分類項(xiàng)目開發(fā)質(zhì)量數(shù)據(jù)報(bào)表為例(見圖3)。
我們看到零售類項(xiàng)目的代碼生產(chǎn)率明顯偏低、代碼缺陷數(shù)又偏高,其中嚴(yán)重類型的缺陷占比也明顯高于其他項(xiàng)目,但是程序結(jié)構(gòu)質(zhì)量確比較高,代碼的違規(guī)率低。這種現(xiàn)象似乎并不合理,經(jīng)分析我們發(fā)現(xiàn),原來該類項(xiàng)目多為大型服務(wù)端Web程序,其底層代碼框架大都是已經(jīng)沿用了幾年的系統(tǒng)框架,有著較高的穩(wěn)定性。但是當(dāng)前該類項(xiàng)目的團(tuán)隊(duì)組成中工作經(jīng)驗(yàn)較少的人員占了多數(shù),加之該類項(xiàng)目的規(guī)模比較大、人數(shù)較多,開發(fā)經(jīng)理能夠分配給每個(gè)開發(fā)人員的指導(dǎo)時(shí)間就比較少了,所以造成了該類項(xiàng)目雖然結(jié)構(gòu)質(zhì)量高但總體缺陷偏多。針對該結(jié)果,我們協(xié)助開發(fā)經(jīng)理組織專門針對java程序設(shè)計(jì)和編碼規(guī)范的培訓(xùn)工作。同時(shí)我們很高興的看到,參加該培訓(xùn)的項(xiàng)目在次月的代碼質(zhì)量結(jié)果中就發(fā)生了顯著的改善。
經(jīng)過一年多地不斷實(shí)踐和改善,我們得出以下結(jié)論:將Sonar代碼質(zhì)量管理平臺(tái)應(yīng)用于企業(yè)的軟件開發(fā)過程中,以項(xiàng)目為單位定期生成代碼質(zhì)量分析報(bào)告,不僅可以實(shí)現(xiàn)項(xiàng)目開發(fā)階段的代碼質(zhì)量透明化管理,而且能夠?qū)崿F(xiàn)對代碼質(zhì)量的持續(xù)跟蹤。如果在企業(yè)軟件質(zhì)量管理工作過程中推行Sonar平臺(tái)的代碼質(zhì)量管理形式,對代碼質(zhì)量結(jié)果的定期量化分析,并制定對應(yīng)的改善措施,堅(jiān)持PDCA改善過程,那么,在開發(fā)階段保證軟件產(chǎn)品質(zhì)量也就指日可待了。
參考文獻(xiàn)
[1]FrederickP.Brooks.Jr.人月神話[M].北京:清華大學(xué)出版社,2002(11).
[2]付金瑩,蔣云,王金倫,申宗杰.基于靜態(tài)分析的應(yīng)用代碼質(zhì)量管理體系研究及應(yīng)用[J].中國新通信,2013(21):65-68.
[3]美國項(xiàng)目管理協(xié)會(huì)PMI.項(xiàng)目管理知識(shí)體系指南(PMBOK指南)(第5版)[M].電子工業(yè)出版社,2013.
作者單位
1.江蘇省南京市三江學(xué)院 江蘇省南京市 210000
2.江蘇省電力信息技術(shù)有限公司 江蘇省南京市 210000