- 持續(xù)集成及質(zhì)量跟蹤——Jenkins + FindBugs + CheckStyle + PMD + JDepend + ... 或 Sonar
- 適
應(yīng)互聯(lián)網(wǎng)研發(fā)特點的敏捷團(tuán)隊必須要通過“每天”的集成結(jié)果報告來指導(dǎo)下一日的工作,這包括幫助研發(fā)團(tuán)隊發(fā)現(xiàn)問題、跟蹤問題和解決問題,這意味著基于持續(xù)集
成平臺的質(zhì)量跟蹤工具需要在持續(xù)集成的構(gòu)建過程中產(chǎn)生各種各樣的“副產(chǎn)品”——將每日研發(fā)工作中的進(jìn)展和阻礙從各個角度暴露出來。
- Jenkins
是著名持續(xù)集成工具Hudson的開源版本,我們一般設(shè)定在每日凌晨進(jìn)行構(gòu)建,產(chǎn)生構(gòu)建報告,如果構(gòu)建失敗的話會直接給相應(yīng)的研發(fā)人員發(fā)送電子郵件并告知
問題所在。Jenkins平臺上的FindBugs和PMD插件主要用來掃描程序中的錯誤代碼和重復(fù)代碼,隨著這2個插件變得越來越智能,很多危險的
bugs和冗余的代碼邏輯(實踐證明冗余的代碼在被改動時很容易引起bugs)被自動掃描出來,研發(fā)人員可以很方便的查看并立即修正,這一切都有直觀的走
勢圖表輔助管理。JDepend插件可以分析代碼的邏輯層次和復(fù)雜度,這對于追求優(yōu)雅和精益求精的架構(gòu)師非常有用。
- Sonar平臺基于Jenkins提供了以上絕大部分的功能,目前我們在企業(yè)級的層次使用之,進(jìn)行全局的掃描統(tǒng)計工作。
- 項目及構(gòu)建庫管理——Maven + Nexus(或 Artifactory),just for Java
- Maven的主要作用是為協(xié)作研發(fā)統(tǒng)一管理類庫,這已經(jīng)成為了Java開發(fā)的工業(yè)標(biāo)準(zhǔn)。目前我們采用Artifactory這個Web開源項目作為私有倉庫的管理軟件,當(dāng)然Nexus也不錯。
- 需求任務(wù)管理及缺陷跟蹤——Redmine
- Redmine是用Ruby語言開發(fā)的,是目前最流行的需求任務(wù)管理和缺陷跟蹤工具,事實上它還具有知識管理的功能。目前我們主要使用Redmine作為缺陷管理工具,這也是Redmine最擅長的領(lǐng)域。
- 知識管理——MediaWiki
- MediaWiki是非常流行的、簡易的知識管理工具,使用它能幫助我們方便的共享知識、管理知識并使整個組織的經(jīng)驗沉淀下來,使用它我們可以在一定程度上避免重復(fù)的溝通和重復(fù)的錯誤。當(dāng)然JspWiki等工具也可以替代之。
- 自動化單元測試——Junit系列
- 很
多非功能性的bugs是黑盒測試同學(xué)無法發(fā)現(xiàn)的,Junit系列開源框架能幫助研發(fā)人員快速的構(gòu)建基于白盒的單元測試代碼,它不僅能進(jìn)行功能性測試,還可
以進(jìn)行非功能性測試,同時Junit單元測試還可以通過遵循Maven規(guī)范在持續(xù)集成的構(gòu)建中進(jìn)行執(zhí)行,從而有效的把關(guān)軟件的質(zhì)量。目前我們正在利用
Junit實現(xiàn)數(shù)據(jù)層/業(yè)務(wù)邏輯層/服務(wù)層/控制器層的單元測試。
- 配置管理——SVN 或 GIT
- 一般在企業(yè)里集中研發(fā)使用SVN比較合適。
- GIT是高效率的離線式配置管理工具,非常適合松散合作型的團(tuán)隊。
- 代碼量統(tǒng)計——SVNStat
- 我
們使用SVNStat統(tǒng)計每日的總體代碼工作量和每個研發(fā)人員的代碼修改量和提交分布,我們可以從中可以發(fā)現(xiàn)一些研發(fā)管理上的問題并觀察工作量分布的情
況。我們開發(fā)了一個工具將SVNStat的代碼量統(tǒng)計報告的生成與Jenkins每日集成綁定在一起,這樣,每日更新的代碼量統(tǒng)計報告可以為研發(fā)過程的管
理提供一定程度上的參考意見。
- 測試管理——Testlink,主要用于自動化測試復(fù)用。
- 代碼評審——Phabricator,進(jìn)行代碼審查的好工具。
使用以上工具,可以支撐3~1000+人的研發(fā)團(tuán)隊協(xié)同工作,經(jīng)實踐證明 Very Good