代碼質(zhì)量與評(píng)審_第1頁
代碼質(zhì)量與評(píng)審_第2頁
代碼質(zhì)量與評(píng)審_第3頁
代碼質(zhì)量與評(píng)審_第4頁
代碼質(zhì)量與評(píng)審_第5頁
已閱讀5頁,還剩135頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、北美專業(yè)培訓(xùn)機(jī)構(gòu)艾威(中國)培訓(xùn)學(xué)院AVTECH簡介AVTECH總部設(shè)在美國國NEWJERSEY,是北美排行行第一的的專業(yè)培培訓(xùn)機(jī)構(gòu)構(gòu),設(shè)有有4大分校,數(shù)十個(gè)個(gè)培訓(xùn)點(diǎn)點(diǎn)遍布北北美、西西歐和東東亞;;2000年進(jìn)入中中國,以以培養(yǎng)國國際化的的中高端端信息人人才為己己任,專注于國國際前沿沿的新技技術(shù)研發(fā)發(fā)與信息息科技新新興行業(yè)業(yè)的開拓拓教育。AVTECH進(jìn)入中國國13年,屬同同行中歷歷史最久久。AVTECH是國內(nèi)最最大的國國際認(rèn)證證考試中中心,提提供上千千門國際際認(rèn)證考考試。AVTECH的師資來來自全球球,在國國內(nèi)培訓(xùn)訓(xùn)機(jī)構(gòu)中中獨(dú)一無無二的。學(xué)院開設(shè)課程程超過500門,學(xué)習(xí)習(xí)培訓(xùn)內(nèi)內(nèi)容涵蓋IT技術(shù)

2、及使用IT技術(shù)的醫(yī)醫(yī)學(xué)、生生物、財(cái)財(cái)會(huì)、管管理等相相關(guān)行業(yè)業(yè)所有高高、中、低級(jí)知知識(shí)和技技能。其其中一些些技術(shù)課課程來自自于如下下廠家:微軟、IBM、Oracle、Cisco、SAS、ISTQB、SAP、PMI、EXIN、IIBA、Open Group、APMG、ISACA、Vmware、EXIN、Peoplecart、EPI、BRMI、IAOP、ScrumAlliance等艾威最新推推薦:ITIL、ITIL Expert、CISSP、PMP、CISA、COBIT、Prince2、MSP、SCM、CSD、CBAP、TOGAF、CRISC、CGEIT、CISM、PGMP、PFMP、BRMP、CD

3、CP、SGF、NPDP等認(rèn)證培培訓(xùn)代碼質(zhì)量量與評(píng)審審內(nèi)容質(zhì)量管理理的必要要性質(zhì)量管理理實(shí)踐看得見的的改進(jìn)總結(jié)互聯(lián)網(wǎng)開開發(fā)特點(diǎn)點(diǎn)市場競爭爭激烈,需求變變化快開發(fā)周期期長隱性成本本時(shí)間/迭代代碼質(zhì)量量的影響響成本生產(chǎn)率質(zhì)量管理理實(shí)踐代碼質(zhì)量量封裝內(nèi)聚耦合冗余可讀性可測試性質(zhì)量角度:演演化、維維護(hù)高內(nèi)聚、低耦合合是有限限度的目標(biāo)群體體:開發(fā)發(fā)人員代碼質(zhì)量量保障步步驟代碼評(píng)審審持續(xù)集成成對(duì)待變化化的態(tài)度度不只是擁擁抱變化化,更要要利用變變化時(shí)間/迭代質(zhì)量拒絕退化化重構(gòu)的時(shí)時(shí)機(jī)某周一早早上,你你的老板板要求編編寫一個(gè)個(gè)小程序序,從鍵鍵盤讀入入字符,然后輸輸出到打打印機(jī)上上void Copy()intc;

4、while(c=Rdkbd()!=EOF)wrtPrt(c);CopyCharWriterPrtCharReadKbd重構(gòu)的時(shí)時(shí)機(jī)boolean ptFlag=false;boolean punchFlag=false;void copy()intc;while(c=(ptFlag?Rdpt():Rdkbd()!=EOF)punchFlag?wrtPunch():wrtPrt(c);幾個(gè)月后后,老板板來找你你,說有有時(shí)希望望Copy程序能從從手寫板板讀入信信息幾個(gè)個(gè)月后,老板又又來找你你,有時(shí)時(shí)希望Copy程序可以以輸出到到U盤上ReadWriterCopyKbdPtCharCharPrtPu

5、h質(zhì)量管理理平臺(tái)SonarMavenJenkins插件體系系結(jié)構(gòu)看得見的的度量指指標(biāo)A&D重復(fù)代碼單元測試復(fù)雜度潛在Bug編碼規(guī)則注釋代碼重復(fù)代碼碼單元測試試復(fù)雜度圈復(fù)雜度度度量代碼碼分支情情況Iffor while casecatchthrowreturn & | ?復(fù)雜性越越高,測測試成本本越高復(fù)雜度編碼規(guī)則則檢查注釋架構(gòu)依賴結(jié)構(gòu)構(gòu)矩陣(DSM)設(shè)計(jì)度量量指標(biāo)NOC派生類的數(shù)目DIT繼承樹的深度RFC類的外部響應(yīng)LCOM4方法的內(nèi)聚LCOM4Lack of cohesion of methods說明類內(nèi)內(nèi)部方法法和變量量之間的的關(guān)系指標(biāo)LCOM4=0/BadLCOM4=1 /高LCOM4=

6、2/低SRP原則RFCResponseForClass通過檢查查方法被被調(diào)用的的情況來來反映一一個(gè)類的的復(fù)雜程程度可以簡單單的理解解為一個(gè)個(gè)類所包包含的方方法多寡寡復(fù)雜度從從類的內(nèi)內(nèi)部描述述,RFC從類的外外部來描描述RFC=M +RRFC =M+ RM =number of methodsinthe classR =number of remotemethods directly calledbymethods of theclassR= numberofremotemethodscalled, recursively throughthe entirecall tree設(shè)計(jì)設(shè)計(jì)高級(jí)度量量S

7、onar插件附加維度治理可視化集成IDE本地化多語言http:/display/SONAR/Sonar+Plugin+Library/插件改進(jìn)效果果改進(jìn)架構(gòu)-模塊劃分分原則采用Maven多Project結(jié)構(gòu),先先根據(jù)職職能分Project,再根據(jù)據(jù)功能模模塊分PackageREP(重用發(fā)布布等價(jià)原原則)重用的粒粒度就是是發(fā)布的的粒度CCP(共同封閉閉原則)包中所有有類對(duì)于于同一類類性質(zhì)的的變化應(yīng)應(yīng)該是共共同封閉閉的ADP(無環(huán)依賴賴原則)在包的依依賴關(guān)系系圖中不不允許存存在環(huán)設(shè)計(jì)-變化應(yīng)對(duì)對(duì)之道視角描述關(guān)注點(diǎn)概念對(duì)象是一組責(zé)任軟件要負(fù)責(zé)什么?規(guī)約對(duì)象是一組可以被其他對(duì)象或?qū)ο笞约赫{(diào)用的方法(也

8、稱行為)怎么使用軟件?實(shí)現(xiàn)對(duì)象是代碼和數(shù)據(jù),以及它們之間的計(jì)算交互軟件怎樣履行自己的責(zé)任?MartinFowler的建議:對(duì)象的三三個(gè)視角角設(shè)計(jì)-變化應(yīng)對(duì)對(duì)之道在概念上層層次上交交流,在實(shí)現(xiàn)層次次上執(zhí)行行,客戶端端無需準(zhǔn)準(zhǔn)確知道道具體操操作細(xì)節(jié)節(jié),只需需一般性性(概念念性)知知道即可可只要概念念不變,客戶端端就可以以與實(shí)現(xiàn)現(xiàn)細(xì)節(jié)的的變化隔離離開來案例:下下一節(jié)分分享去哪哪里聽設(shè)計(jì)-變化應(yīng)對(duì)對(duì)之道ProgrammingtoanInterface, notanImplementation客戶對(duì)象象和服務(wù)務(wù)對(duì)象之之間的職責(zé)分配配使用抽象象類隱藏具體的實(shí)實(shí)現(xiàn)創(chuàng)建和使使用分離案例:評(píng)評(píng)價(jià)、資資料設(shè)計(jì)-變

9、化應(yīng)對(duì)對(duì)之道Favorobjectcompositionoverclassinheritance但是設(shè)計(jì)計(jì)模式中中為什么么繼承無無處不在在?不要按照照傳統(tǒng)的方方式來使用繼繼承用新的行為為來特化現(xiàn)現(xiàn)有的具具體對(duì)象象案例:講講師分類類講師男女主題A男主題B男主題A女主題B女性別講師主題女男主題A主題B設(shè)計(jì)-變化應(yīng)對(duì)對(duì)之道Designingfor Change在設(shè)計(jì)中中思考什什么應(yīng)該該變化,并封裝會(huì)發(fā)生變化的概念封裝不只只是隱藏藏?cái)?shù)據(jù),也可以以是封裝類型型變化不只只是算法法和行為為,可以以是任何何事情案例:委委托評(píng)價(jià)價(jià)講師聽眾公司A公司B主辦方usesusescreatecreate公司C設(shè)計(jì)-變化

10、應(yīng)對(duì)對(duì)之道SingleResponsibilityPrincipleOpenClosed PrincipleLiskovSubstitutionPrincipleInterfaceSegregationPrincipleDependencyInversion Principle注釋能用代碼碼來闡述述的,盡盡量不用用注釋好的注釋釋應(yīng)該解解釋意圖圖,而不不是解釋釋操作什么也比比不上放放置良好好的注釋釋來得有有用什么也不不會(huì)比陳陳舊、提提供錯(cuò)誤誤信息的的注釋更更有破壞壞性目錄(一一)除了編碼碼,開發(fā)發(fā)還可以以做什么么編碼規(guī)范范單元測試試 代碼評(píng)審審靜態(tài)檢查查 持續(xù)集成成目錄(二二) 補(bǔ)充動(dòng)態(tài)檢查查缺

11、陷管理理 性能測試試WEB前端分析析 自動(dòng)化測測試除了編碼碼,開發(fā)發(fā)還可以以做什么么現(xiàn)狀項(xiàng)目開發(fā)發(fā)過程中中,由于于開發(fā)人人員的經(jīng)經(jīng)驗(yàn)、代代碼風(fēng)格格各不相相同,以以及缺乏乏統(tǒng)一的的標(biāo)準(zhǔn)和和管理流流程,往往往導(dǎo)致致整個(gè)項(xiàng)項(xiàng)目的代代碼質(zhì)量量較差,難于維維護(hù),需需要較大大的測試試投入和和周期等等問題。 措施可以采用用以下五五個(gè)步驟驟來保證證和提高高整個(gè)項(xiàng)項(xiàng)目的代代碼質(zhì)量量:統(tǒng)一一編碼規(guī)規(guī)范、代代碼樣式式;靜態(tài)態(tài)代碼分分析(staticcodereview);單元元測試;持續(xù)集集成;代代碼評(píng)審審和重構(gòu)構(gòu)(Review&Refactor)。下面面將針對(duì)對(duì)每個(gè)步步驟和其其所使用用的工具具、方法法進(jìn)行詳詳細(xì)描

12、述述。編碼規(guī)范范規(guī)范統(tǒng)一一的編碼碼能提高高項(xiàng)目代代碼的可可讀性和和可維護(hù)護(hù)性,編編碼規(guī)范范主要應(yīng)包含含以下幾幾個(gè)方面面:一般規(guī)則則和格式式規(guī)范。例如代代碼縮進(jìn)進(jìn)、程序序塊規(guī)范范、每行行最大代代碼長度度等。命名規(guī)則則。例如如包名、類名、變量、方法、接口、參數(shù)等等命名規(guī)規(guī)范文檔規(guī)范范。例如如類文件件頭聲明明、類注注釋、成成員變量量和方法法注釋等等規(guī)范。編程規(guī)范范。例如如異常、并發(fā)、多線程程等方面面的處理理方式。其他規(guī)范范。例如如日志格格式、屬屬性文件件格式,返回值值和消息息格式。用eclipse控制代碼碼樣式(一)一旦編碼碼規(guī)范確確定,就就可以利利用Eclipse來控制代代碼樣式式和格式式。點(diǎn)擊E

13、clipse的Windows - Preference菜單項(xiàng),在打開開的Preferences對(duì)話框的的左側(cè)欄欄中找到到Java節(jié)點(diǎn)下的的子項(xiàng)Code Style,該項(xiàng)和它它的子項(xiàng)項(xiàng)允許您您對(duì)Java代碼的樣樣式進(jìn)行行控制:用eclipse控制代碼碼樣式(二)可以在Eclipse提供的默默認(rèn)代碼碼格式配配置的基基礎(chǔ)上建建立自定定義的格格式。在Formatter面板中,點(diǎn)擊New,輸入新新的名字字并選擇擇一個(gè)默默認(rèn)的配置作為為初始化化格式,如圖所所示:用eclipse控制代碼碼樣式(三)設(shè)置風(fēng)格格如圖所所示:代碼靜態(tài)態(tài)檢查_CheckStyleCheckStyle用來檢查查代碼格格式、規(guī)規(guī)范、風(fēng)

14、風(fēng)格。檢查并強(qiáng)強(qiáng)制執(zhí)行行統(tǒng)一的的代碼風(fēng)風(fēng)格;檢查Javadoc;檢查類、變量、方法的的命名;檢查類和和方法的的大?。粰z查編碼碼錯(cuò)誤,例如magicnumber;代碼常見見問題舉舉例:代碼中的的magic-number和magic-string:Strings=“0000”+ Integer.toString(ch, 16);0000、16的含義,作者幾幾周后就就忘記了了。CheckStyle的安裝配配置(一一)CheckStyle插件地址址。自動(dòng)安裝裝地址:http:/update下載地址址:http:/ CodeQualityTool 代碼靜態(tài)態(tài)檢查_FindBugsFindBugs是一個(gè)j

15、ava代碼的靜靜態(tài)代碼碼分析工工具,用用來發(fā)現(xiàn)現(xiàn)那些潛潛在的、常見的的、很難難被發(fā)現(xiàn)現(xiàn)的bug。與其他他靜態(tài)分分析工具具不同,F(xiàn)indBugs不注重樣樣式或者者格式,它試圖圖只尋找找真正的的缺陷或或者潛在在的性能能問題。如NullPoint空指針檢檢查、沒沒有合理理管理資資源等。Findbugs插件地址址。自動(dòng)安裝裝地址:http:/findbugs.cs./eclipse下載地址址:http:/ Bugs”操作:檢查結(jié)果果: 單元測試試單元測試試單元測試試是最小小粒度的的測試,以測試試某個(gè)功功能或代代碼塊,一般由由程序員員來做。用例設(shè)計(jì)計(jì)和評(píng)審審設(shè)計(jì)階段段需要具具體考慮慮要對(duì)哪哪些代碼碼單元

16、進(jìn)進(jìn)行測試試,被測測單元之之間的關(guān)關(guān)系,測測試策略略,以及及單元測測試用例例設(shè)計(jì)等等,并最最終輸出出單元測試試用例設(shè)設(shè)計(jì)文檔,用用來指導(dǎo)導(dǎo)具體的的單元測測試執(zhí)行行。在用例設(shè)設(shè)計(jì)完成成之后,下一步步的工作作就是進(jìn)進(jìn)行測試試用例的的評(píng)審。個(gè)人的的理解和和經(jīng)驗(yàn)始始終是有有限的,用例評(píng)評(píng)審可以以借集體體之力,對(duì)用例例設(shè)計(jì)進(jìn)進(jìn)入查漏漏補(bǔ)缺,進(jìn)一步步保證測測試用例例的有效效性。單元測試試_JUnitJUnitJUnit是一個(gè)開開發(fā)源代代碼的Java測試框架架,用于于編寫和和運(yùn)行可可重復(fù)的的測試。它是用用于單元元測試框框架體系系xUnit的一個(gè)實(shí)實(shí)例(用用于java語言)。主要用用于白盒盒測試,回歸測測試。

17、下載地址址eclipse自帶了JUnit,完整安安裝包的的下載地地址:http:/ TestCase,如圖:在Eclipse上執(zhí)行Junit(三)新建測試試類:在Eclipse上執(zhí)行Junit(四)下一步選選擇要測測試的方方法:在Eclipse上執(zhí)行Junit(五)完成HelloTest的Abs方法:在Eclipse上執(zhí)行Junit(六)執(zhí)行測試試程序,右鍵,RunAs-JUnit Test,就可以以看到JUnit測試結(jié)果果:綠色表示示測試通通過,只只要有1個(gè)測試未未通過,就會(huì)顯顯示紅色色并列出出未通過過測試的的方法。單元測試試_EasyMock模擬對(duì)象象技術(shù)在實(shí)際項(xiàng)項(xiàng)目中,開發(fā)人人員自己己的

18、代碼碼往往需需要和其其他的代代碼模塊塊或系統(tǒng)統(tǒng)進(jìn)行交交互,但但在測試試的過程程中,這這些需要要被調(diào)用用的真實(shí)實(shí)對(duì)象常常常很難難被實(shí)例例化,利利用一個(gè)個(gè)模擬對(duì)對(duì)象來模模擬我們們的代碼碼所依賴賴的真實(shí)實(shí)對(duì)象,來幫助助完成測測試,提提高測試試覆蓋率率。常見的模模擬技術(shù)術(shù)模擬技術(shù)術(shù)有很多多種,如如jMock,EasyMock,Mockito,PowerMock等等,下下面用EasyMock舉例說明明如何模模擬對(duì)象象。EasyMock(一)EasyMock(二)/校驗(yàn)用戶戶名和密密碼if(admin.equals(username)&123456.equals(password)ServletConte

19、xtcontext =getServletContext();RequestDispatcherdispatcher =context.getNamedDispatcher(dispatcher);dispatcher.forward(request,response);elsethrownewRuntimeException(Loginfailed.);EasyMock(三)為測試doPost()方法,需需要模擬擬HttpServletRequest等對(duì)象,以便脫脫離J2EE容器來測測試這個(gè)個(gè)Servlet。建立TestCase,名為LoginServletTest:publicclassL

20、oginServletTestextends TestCase 測試當(dāng)用用戶名和和口令驗(yàn)驗(yàn)證失敗敗的情形形:publicvoidtestLoginFailed()throwsException /創(chuàng)建mock對(duì)象MockControlmc=MockControl.createControl(HttpServletRequest.class);HttpServletRequestrequest=(HttpServletRequest)mc.getMock();EasyMock(四)/設(shè)置mock參數(shù)request.getParameter(username);/期望下面面的測試試將調(diào)用用此方法,

21、參參數(shù)為usernamemc.setReturnValue(admin,1);/期望返回回值為admin,僅調(diào)用用1次request.getParameter(password);/期望下面面的測試試將調(diào)用用此方法,參數(shù)數(shù)為 passwordmc.setReturnValue(1234, 1);/期望返回回值為1234,僅調(diào)用用1次/表示錄制制完畢mc.replay();EasyMock(五)tryservlet.doPost(request,null);fail(Notcaught exception!);catch(RuntimeExceptionre)assertEquals(Login

22、 failed.,re.getMessage();/verify:mc.verify();運(yùn)行JUnit,測試通通過!表表示我們們的Mock對(duì)象正確確工作了了!單元測試試_測試覆蓋蓋率分析析為了衡量量單元測測試的質(zhì)質(zhì)量和覆覆蓋的范范圍,需需要對(duì)單單元測試試的代碼碼進(jìn)行測測試覆蓋蓋分析。具體采用用哪些指指標(biāo)可以以根據(jù)項(xiàng)項(xiàng)目的實(shí)實(shí)際情況況來定,以避免免因過高高的指標(biāo)標(biāo)增加了了代碼開開發(fā)人員員的工作作量而影影響了項(xiàng)項(xiàng)目整體體的進(jìn)度度。業(yè)內(nèi)比較較常用的的工具有有:1、Cobertura,對(duì)應(yīng)的的eclipse插件:eCobertura。2、EclEmma是一款基基于EMMA的Eclipse插件,方方便

23、在Eclipse IDE中進(jìn)行測測試覆蓋蓋率分析析。插件下載載地址:/Eclipse測試覆蓋蓋率分析析(一)下面說怎怎樣在eclipse上執(zhí)行測測試覆蓋蓋率分析析:先安裝插插件EclEmma,然后在測測試用例例寫好后后,可以以在右鍵鍵點(diǎn)擊測試類,選擇CoverageAs-JUnitTest.Eclipse測試覆蓋蓋率分析析(二)單元測試試執(zhí)行完完后,Coverage視圖中會(huì)會(huì)顯示所所選擇的的測試的的覆蓋率率。雙擊擊打開某某一具體體的類后后,可以以看到高高亮顯示示的覆蓋蓋分析結(jié)結(jié)果,如如圖所所示。紅紅色代表表測試沒沒有覆蓋蓋到該行行,黃色色表示部部

24、分覆蓋蓋,綠色色的行表表示該行行在本次次測試中中被覆蓋蓋到。Eclipse測試覆蓋蓋率分析析(三)在Coverage視圖中可可以通過過點(diǎn)擊鼠鼠標(biāo)右鍵鍵將測試試覆蓋分分析的結(jié)結(jié)果導(dǎo)出出成需要要的格式式,例如如HTML。單元測試試-FIRST原則Fast(快速)Independent(獨(dú)立)Repeatable(可重復(fù)復(fù))Self-Validating(自足驗(yàn)驗(yàn)證)Timely(及時(shí))持續(xù)集成成持續(xù)集成成(Continuous Integration)是利用用一系列列的工具具、方法法和規(guī)則則,做到到快速的的構(gòu)建開開發(fā)代碼碼,自動(dòng)動(dòng)的測試試化,來來提高開開發(fā)代碼碼的效率率和質(zhì)量量 。持續(xù)集成成的提出

25、出如果項(xiàng)目目開發(fā)的的規(guī)模比比較小,比如一一個(gè)人的的項(xiàng)目,如果它它對(duì)外部部系統(tǒng)的依依賴很小小,那么么軟件集集成不是是問題,但是隨隨著軟件件項(xiàng)目復(fù)復(fù)雜度的增加加(即使使增加一一個(gè)人),就會(huì)會(huì)對(duì)集成成和確保保軟件組組件能夠夠在一起工作提提出了更更多的要要求-要早集成成,常集集成。早早集成,頻繁的的集成幫助項(xiàng)目目在早期期發(fā)現(xiàn)項(xiàng)項(xiàng)目風(fēng)險(xiǎn)險(xiǎn)和質(zhì)量量問題,如果到到后期才才發(fā)現(xiàn)這這些問題,解決問問題代價(jià)價(jià)很大,很有可可能導(dǎo)致致項(xiàng)目延延期或者者項(xiàng)目失失敗。持續(xù)集成成持續(xù)集成成的常見見做法是是:持續(xù)續(xù)集成框框架+版本管理理器+構(gòu)建工具具。1、持續(xù)集集成框架架常用的的有:Jenkins、Continuum、Crui

26、seControl等。2、版本管管理器常常用的有有:ClearCase、Wincvs、SVN等。3、構(gòu)建工工具常用用的有:Ant、Maven。后面主要要以SVN+Jenkins +Ant實(shí)現(xiàn)方式式舉例說說明。 持續(xù)集成成_版本管理理器持續(xù)集成成_自動(dòng)構(gòu)建建Ant在構(gòu)建過過程方面面十分優(yōu)優(yōu)秀,它它是一個(gè)個(gè)基于任任務(wù)和依依賴的構(gòu)構(gòu)建工具具。下載載地址:http:/bindownload.cgiMaven不單是構(gòu)構(gòu)建工具具,也是是個(gè)項(xiàng)目目管理平平臺(tái)。下下載地址址:http:/maven./download.htmlMaven與Ant對(duì)比,一一些使用用上的區(qū)區(qū)別:1、Maven是基于中中央倉庫庫的編譯

27、譯,即把把編譯所所需要的的資源放放在一個(gè)個(gè)中央倉倉庫里,如jar,tld等。當(dāng)編編譯的時(shí)時(shí)候,maven會(huì)自動(dòng)在在倉庫中中找到相相應(yīng)的包包,而ant需要自己己定義了了。用maven編譯的項(xiàng)項(xiàng)目在發(fā)發(fā)布的時(shí)時(shí)候只需需要發(fā)布布源碼,小得很很,而反反之,ant的發(fā)布則則要把所所有的包包一起發(fā)發(fā)布。2、Maven有大量的的重用腳腳本可以以利用,如生成成網(wǎng)站,生成javadoc,sourcecode reference,等。而而ant都需要自自己去寫寫。3、Maven目前不足足的地方方就是沒沒有象ant那樣成熟熟的GUI界面。 持續(xù)集成成_持續(xù)集成成框架有了自動(dòng)動(dòng)構(gòu)建后后,我們們就可以以通過Jenkin

28、s每天定時(shí)時(shí)用Ant腳本或Maven,加上JUnit、Cobertura/EMMA等的ANT腳本調(diào)用用,每一一次的構(gòu)建都都可以把把這些檢檢查工作作自動(dòng)的的進(jìn)行一一遍測試試。然后后生成測測試報(bào)告進(jìn)行查查閱。Jenkins(Jenkins的前身)可以說說在安裝裝和配置置上最簡簡單的CI產(chǎn)品。Jenkins是基于java開發(fā)的,但它不不僅限于于構(gòu)建基基于Java的軟件,還能構(gòu)構(gòu)建.net、Python、Ruby等。Jenkins提供了一一組很明明確和可可擴(kuò)展API的Jenkins組件。這這批組成成一個(gè)大大的類庫庫的Jenkins組件反過過來又豐豐富了Jenkins的功能;它們都都是開源源的,而而且它

29、們們可以直直接通過過Jenkins的控制臺(tái)臺(tái)來進(jìn)行行安裝。安裝軟件件下載地地址:http:/ Jenkins安裝要點(diǎn)點(diǎn)將jenkins.war拷貝到tomcat的webapps目錄下;修改Tomcat-7.0.8confserver.xml文件,設(shè)設(shè)置UTF-8編碼:通過以下下方式修修改Jenkins_HOME的位置:在Jenkins的web.xml中找到Jenkins_HOME,默認(rèn)value為空值,將其設(shè)設(shè)置為你希望望的路徑徑,然后后重啟。 Jenkins首頁Jenkins管理界面面Jenkins插件安裝裝(一)Jenkins插件安裝裝(二)JenkinsJob(一)JenkinsJob(

30、二)JenkinsJob(三)JenkinsJob(四)Jenkins質(zhì)量度量量(一)Jenkins質(zhì)量度量量(二)openEAP應(yīng)用的實(shí)實(shí)踐(一一)以下演示示在實(shí)際際的openEAP項(xiàng)目中,怎樣自自動(dòng)化完完成以上上活動(dòng)。演示的是是一個(gè)web項(xiàng)目,目目錄結(jié)構(gòu)構(gòu)如下圖圖所示: openEAP應(yīng)用的實(shí)實(shí)踐(二二)因?yàn)橄嚓P(guān)關(guān)依賴資資源都已已經(jīng)在quality目錄下了了(運(yùn)行行只依賴賴數(shù)據(jù)庫庫環(huán)境,沒有對(duì)對(duì)數(shù)據(jù)庫庫操作進(jìn)進(jìn)行模擬擬),所所以可以以直接通通過ant執(zhí)行quality目錄下的的build.xml,腳本執(zhí)執(zhí)行完畢畢后,生生成的報(bào)報(bào)告在quality目錄下,如下圖圖所示: openEAP應(yīng)用的

31、實(shí)實(shí)踐(三三)也可以發(fā)發(fā)布到Jenkins上執(zhí)行構(gòu)構(gòu)建: openEAP應(yīng)用的實(shí)實(shí)踐(四四)在Jenkins上查看報(bào)報(bào)告: 代碼評(píng)審審代碼評(píng)審審(Code Review)是Java項(xiàng)目開發(fā)發(fā)過程中中的一個(gè)個(gè)重要步步驟,代代碼評(píng)審審可以幫幫助發(fā)現(xiàn)現(xiàn)靜態(tài)代代碼分析析過程中中無法發(fā)發(fā)現(xiàn)的一一些問題題,例如如代碼在在邏輯上上或者功功能上是是否存在在錯(cuò)誤,代碼在在執(zhí)行效效率和性性能上是是否有需需要改進(jìn)進(jìn)的地方方等。代代碼評(píng)審審還可以以幫助新新進(jìn)入項(xiàng)項(xiàng)目組的的成員快快速學(xué)習(xí)習(xí)和了解解項(xiàng)目,促進(jìn)經(jīng)經(jīng)驗(yàn)分享享。代碼碼評(píng)審主主要包括括兩種形形式,同同級(jí)評(píng)審審(Peer Review)和小組組評(píng)審(GroupRe

32、view)。同級(jí)級(jí)評(píng)審主主要指項(xiàng)項(xiàng)目成員員間的互互相評(píng)審審,小組組評(píng)審是是指通過過召開評(píng)評(píng)審會(huì)議議,項(xiàng)目目成員一一起對(duì)項(xiàng)項(xiàng)目代碼碼進(jìn)行評(píng)評(píng)審。為了提高高代碼評(píng)評(píng)審的有有效性和和效率,可以借借助一些些外部工工具,比比較常用用的代碼碼評(píng)審工工具有Jupiter和Code Striker。Jupiter是一款開開源的Eclipse插件,允允許成員員將評(píng)審審意見定定位到真真實(shí)代碼碼的具體體行,由由于代碼碼評(píng)審的的結(jié)果以以XML文件的形形式保存存。Jupiter使用Eclipse插件下載載地址:http:/ 動(dòng)態(tài)檢查查_JConsole(一)JConsole是一個(gè)基基于JMX的GUI工具,用用于監(jiān)控控正

33、在運(yùn)運(yùn)行的JVM。JConsole是jdk5.0自帶的工工具,所所以如果果安裝的的的jdk5以上版本本,那么么就不用用去另外外安裝。JConsole畢竟是JDK自帶的東東西,功功能雖然然沒有一一些商業(yè)業(yè)軟件那那么強(qiáng)大大,但是是穩(wěn)定性性好,在在大壓力力情況下下也不會(huì)會(huì)發(fā)生什什么問題題。而且且,提供供了相對(duì)對(duì)全面的的系統(tǒng)監(jiān)監(jiān)控功能能。在待監(jiān)控控的JVM啟動(dòng)命令令上增加加以下參參數(shù),JConsole就可以遠(yuǎn)遠(yuǎn)程連接接并監(jiān)控控了。-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=fa

34、lse-Dcom.sun.management.jmxremote.port=7080其中7080是Jconsole連接的端端口。 動(dòng)態(tài)檢查查_JConsole(二)在本機(jī)運(yùn)運(yùn)行jdkbinjconsole.exe,輸入遠(yuǎn)遠(yuǎn)端機(jī)器器的IP、JMX端口就可可以連接接上去了了。如下下圖所示示: 動(dòng)態(tài)檢查查_JConsole(三)在本機(jī)運(yùn)運(yùn)行jdkbinjconsole.exe,輸入遠(yuǎn)遠(yuǎn)端機(jī)器器的IP、JMX端口就可可以連接接上去了了。如下下圖所示示:動(dòng)態(tài)檢查查_JMX(一)JMX(Java ManagementExtensions,即Java管理擴(kuò)展展)是一一個(gè)為應(yīng)應(yīng)用程序序、設(shè)備備、系統(tǒng)統(tǒng)等植入

35、入管理功功能的框框架。通通常使用用JMX來監(jiān)控系系統(tǒng)的運(yùn)運(yùn)行狀態(tài)態(tài)或管理理系統(tǒng)的的某些方方面,比比如清空空緩存、重新加加載配置置文件等等 。下面舉例例說明怎怎樣通過過JMX監(jiān)控自己己的程序序:1、Hello是一個(gè)需需要被管管理的類類: 動(dòng)態(tài)檢查查_JMX(二)2、要管理理Hello則必須創(chuàng)創(chuàng)建一個(gè)個(gè)相應(yīng)Mbean:說明:包包含在MBean中方法都都將是可可以被管管理的。MBean起名是有有規(guī)范的,就是原原類名后后加上MBean字樣。 動(dòng)態(tài)檢查查_JMX(三)3、創(chuàng)建Agent類注冊(cè)服服務(wù)MBean: 動(dòng)態(tài)檢查查_JMX(四)4、運(yùn)行后后通過JConsole監(jiān)控的情情況如下下圖: WEB前端分析

36、析(一)為什么關(guān)關(guān)注前端端性能分分析?“系統(tǒng)響響應(yīng)時(shí)間間”指應(yīng)應(yīng)用系統(tǒng)統(tǒng)從請(qǐng)求求發(fā)出開開始到客客戶端接接收到所所有數(shù)據(jù)所消消耗的時(shí)時(shí)間。這這樣,“系統(tǒng)響響應(yīng)時(shí)間間”加上上“呈現(xiàn)現(xiàn)時(shí)間”,才是完整的的用戶感感受到的的響應(yīng)時(shí)時(shí)間。 響應(yīng)時(shí)間間=網(wǎng)絡(luò)響應(yīng)應(yīng)時(shí)間+應(yīng)用程序序響應(yīng)時(shí)時(shí)間+瀏覽器處處理時(shí)間間響應(yīng)時(shí)間間=(N1+N2+N3+N4)+ (A1+A2+A3)+TbWEB前端分析析(二)為什么關(guān)關(guān)注前端端性能分分析? WEB前端分析析(三)Yahoo!的ExceptionalPerformance團(tuán)隊(duì)為改改善Web性能帶來來最佳實(shí)實(shí)踐。他他們?yōu)榇舜诉M(jìn)行了了一系列列的實(shí)驗(yàn)驗(yàn)、開發(fā)發(fā)了各種種工具、寫了

37、大大量的文文章和博博客并在在各種會(huì)會(huì)議上參參與探討討。最佳佳實(shí)踐的的核心就就是旨在在提高網(wǎng)網(wǎng)站性能能。Excetional Performance團(tuán)隊(duì)總結(jié)結(jié)出了一一系列可可以提高高網(wǎng)站速速度的方方法??煽梢苑譃闉?大類34條。包括括內(nèi)容、服務(wù)器器、cookie、CSS、JavaScript、圖片、移動(dòng)應(yīng)應(yīng)用等七七部分。詳情請(qǐng)參參考附件件:雅虎團(tuán)隊(duì)隊(duì)經(jīng)驗(yàn)-網(wǎng)站頁面面性能優(yōu)優(yōu)化的34條黃金守守則.pdf WEB前端分析析(四)Yahoo!的ExceptionalPerformance團(tuán)隊(duì)為改改善Web性能帶來來最佳實(shí)實(shí)踐。他他們?yōu)榇舜诉M(jìn)行了了一系列列的實(shí)驗(yàn)驗(yàn)、開發(fā)發(fā)了各種種工具、寫了大大量的文文章

38、和博博客并在在各種會(huì)會(huì)議上參參與探討討。最佳佳實(shí)踐的的核心就就是旨在在提高網(wǎng)網(wǎng)站性能能。Excetional Performance團(tuán)隊(duì)總結(jié)結(jié)出了一一系列可可以提高高網(wǎng)站速速度的方方法??煽梢苑譃闉?大類34條。包括括內(nèi)容、服務(wù)器器、cookie、CSS、JavaScript、圖片、移動(dòng)應(yīng)應(yīng)用等七七部分。詳情請(qǐng)參參考附件件:雅虎團(tuán)隊(duì)隊(duì)經(jīng)驗(yàn)-網(wǎng)站頁面面性能優(yōu)優(yōu)化的34條黃金守守則.pdf WEB前端分析析(五)常用的前前端性能能分析工工具有:FiddlerIBMPageDetailer(商用)FireBugYahooYSlowHTTP Analyzer(商用)AOLPageTest建議采用用IBMPageDetailer、YahooYSlow。 缺陷管理理缺陷管理理/軟件缺陷陷管理(DefectManagement)是在軟軟件生命命周期中中獲取、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論