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