软件研发是一个创造性的工作,因此也是非常复杂的系统。通常一个完整的软件研发流程包括:分析--设计--编码--测试--发布等步骤。为减少人力因素导致的项目延期甚至失败,适当地引入和合理地使用工具可以辅助开发过程高效执行。
软件研发团队
“高效研发之----工具篇”系列文章将对下图所列的研发各阶段的工具进行介绍。因每个工具在互联网上的介绍都很多,笔者不会对工具做过多详细的描述,而是将重心放在介绍工具在整个研发流程中的作用和价值。同时,由于笔者水平有限,所选工具主要是笔者所在团队使用的,每个工具都有不少替代者,对未列入的其他优秀工具,也欢迎大家推荐给笔者学习和补充。
研发工具
流程管理
禅道(www.zentao.net):禅道项目管理软件是国产的开源项目管理软件,专注研发项目管理,内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能,实现了软件的完整生命周期管理。
JIRA(
https://www.atlassian.com/software/jira):JIRA是Atlassian公司(这家公司有很多好产品!)出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。
代码管理
Apache Maven(https://maven.apache.org/):Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
Gradle(https://gradle.org/):Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
Git(https://git-scm.com/):Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
SVN(
https://subversion.apache.org/):SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。
Sonar(https://www.sonarqube.org):Sonar是一个开源代码质量控制工具。把它加到现在的持续集成工具中就能够让你的java开发项目集中处于质量控制之下。
PMD(https://pmd.github.io/):PMD是一种分析Java代码错误的工具。与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。
FindBugs(
http://findbugs.sourceforge.net/):FindBugs是一个专门分析JAVA代码问题的静态代码扫描工具,FindBugs可以发现的问题包括:多线程竞争问题,性能问题,安全问题,代码规范......
CheckStyle(
http://checkstyle.sourceforge.net/):CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。
Review Board(
https://www.reviewboard.org/):review-board是一套成熟的开源code review平台,目前已在业内得到广泛的使用。基本可以用于review任何代码和文件。
Gerrit(
https://www.gerritcodereview.com/):Gerrit是一个免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。
持续集成
Jenkins(https://jenkins.io/):Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
测试
LoadRunner(
https://software.microfocus.com/zh-cn/software/loadrunner):LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。
JMeter(
https://jmeter.apache.org/):Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
SoapUI(https://www.soapui.org/):SoapUI是一个开源的跨平台功能测试解决方案,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。
发布
disconf(
https://github.com/knightliao/disconf):disconf是一款百度开源的分布式配置部署框架,专注于各种分布式系统配置管理的通用组件/通用平台,提供统一的配置管理服务。
cheungssh(
https://gitee.com/CheungSSH_OSC/CheungSSH):CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念,创造的一套开源运维自动化系统。
监控
zabbix(https://www.zabbix.com/):zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。