- 持续集成及质量跟踪——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最擅长的领域。
- Redmine是用Ruby语言开发的,是目前最流行的需求任务管理和缺陷跟踪工具,事实上它还具有知识管理的功能。目前我们主要使用Redmine作为缺陷管理工具,这也是Redmine最擅长的领域。
- 知识管理——MediaWiki
- MediaWiki是非常流行的、简易的知识管理工具,使用它能帮助我们方便的共享知识、管理知识并使整个组织的经验沉淀下来,使用它我们可以在一定程度上避免重复的沟通和重复的错误。当然JspWiki等工具也可以替代之。
- MediaWiki是非常流行的、简易的知识管理工具,使用它能帮助我们方便的共享知识、管理知识并使整个组织的经验沉淀下来,使用它我们可以在一定程度上避免重复的沟通和重复的错误。当然JspWiki等工具也可以替代之。
- 自动化单元测试——Junit系列
- 很多非功能性的bugs是黑盒测试同学无法发现的,Junit系列开源框架能帮助研发人员快速的构建基于白盒的单元测试代码,它不仅能进行功能性测试,还可以进行非功能性测试,同时Junit单元测试还可以通过遵循Maven规范在持续集成的构建中进行执行,从而有效的把关软件的质量。目前我们正在利用Junit实现数据层/业务逻辑层/服务层/控制器层的单元测试。
- 配置管理——SVN 或 GIT
- 一般在企业里集中研发使用SVN比较合适。
- GIT是高效率的离线式配置管理工具,非常适合松散合作型的团队。
- 代码量统计——SVNStat
- 我们使用SVNStat统计每日的总体代码工作量和每个研发人员的代码修改量和提交分布,我们可以从中可以发现一些研发管理上的问题并观察工作量分布的情况。我们开发了一个工具将SVNStat的代码量统计报告的生成与Jenkins每日集成绑定在一起,这样,每日更新的代码量统计报告可以为研发过程的管理提供一定程度上的参考意见。
- 测试管理——Testlink,主要用于自动化测试复用。
- 代码评审——Phabricator,进行代码审查的好工具。
使用以上工具,可以支撑3~1000+人的研发团队协同工作,经实践证明 Very Good