工慾善其事必先利其器——研發團隊開源管理工具最佳實踐

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

使用以上工具,可以支撐3~1000+人的研發團隊協同工作,經實踐證明 Very Good

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章