4.2 主要的缺陷管理系统

    缺陷管理系统 4 包括 OSS(Open Source Software)以及商用软件在内,有很多可供选择的产品。这里将介绍一些具有代表性的产品 5 。

    4 也可以称为 bug 管理系统或问题管理系统。

    5 产品的具体功能请参考相关资料。特别是商用产品,因为其价格、服务形式以及提供的功能等可能发生变化,所以请一定要参考供应商提供的信息。

    4.2.1 OSS 产品

    ●…… Trac

    Trac6 是基于 Python 的缺陷管理系统(图 4.1)。它导入简单,印象中过去几乎所有的开源项目都使用 Trac,之后被后来的 Redmine 以及 SaaS(Software as a Service)形式的 GitHub 和 PivotalTracker 等逐渐取代,最近已经很少看到了。但如果要说上手简单的话,Trac 至今依然是第一选择。

    6 http://trac.edgewall.org/

    4.2 主要的缺陷管理系统 - 图1

    图 4.1 Trac

    Trac 能够和 bug 管理及代码管理相关联,具备基于 Wiki 的信息共享等项目所需要的功能,还可以通过插件进行各类扩展。

    Trac 已经有了日语版的安装包。日本的开源社区也相当活跃,还出版了相关的书籍 7 。特别是由志愿者提供的 Trac Lightning8 在日语版 Trac 的基础上还加入了 Subversion 和 Jenkins,将它们合并成一个安装文件,初次使用时非常方便。Trac Lightning 是 Windows 平台的安装包,Linux 平台的话可以使用由相同人员开发的 Kanon9 。

    7 就中国国内的情况来看,目前好像还没有什么活跃的社区或相关书籍。只有 Trac 的 0.12 版支持中文显示。——译者注

    8 http://sourceforge.jp/projects/traclight/

    9 http://kanon.ultimania.org/

    Trac 原本是作为程序员的 bug 管理系统而开发的,因此用户界面比较简陋。如果团队中有程序员以外的成员,Trac 那过于简陋的接口就可能成为导入 Trac 的障碍。

    ●…… Redmine

    Redmine10 是比 Trac 稍晚的基于 Ruby on Rails 框架的缺陷管理系统(图 4.2)。因此,使用 Ruby on Rails 的项目导入 Redmine 的门槛会比较低。

    10 http://www.redmine.org/

    4.2 主要的缺陷管理系统 - 图2

    图 4.2 Redmine

    Redmine 同样具备了 bug 管理、代码管理、Wiki 等必要的功能,支持插件系统,扩展也比较容易。UI(User Interface)方面要比 Trac 更为易用、漂亮,非程序员使用起来也基本上没有障碍。

    Redmine 的日语开源社区规模大、非常活跃 11 ,而且还出版了很多相关的书籍 12 。现在已经取代 Trac,成为项目现场常用的缺陷管理系统。

    11 http://redmine.jp/

    12 http://redmine.jp/

    ●…… Bugzilla

    Bugzilla13 是基于 Perl 的缺陷管理系统(图 4.3)。原本是 Netscape 公司内部的系统,后来被作为 OSS 公开。现在由 Mozilla 基金会继续开发,可以说是 OSS 界最具“历史和传统”性质的缺陷管理系统。

    13 http://www.bugzilla.org/

    4.2 主要的缺陷管理系统 - 图3

    图 4.3 Bugzilla

    至今 Mozilla( Firefox)、Linux 内核、Java 的 IDE( Integrated Development Environment,集成开发环境)Eclipse14 等历史较长的 OSS 项目都使用 Bugzilla 作为缺陷管理系统。

    14 http://www.eclipse.org/

    Bugzilla 有着数量众多的插件,是一款经得起实际使用的优秀系统。但 UI 较老,习惯了现代 Web 程序的用户可能用起来比较吃力。虽然几乎没有新项目的开发现场会选用 Bugzilla,但至今仍有相当多的现场还在使用 Bugzilla,今后也会继续使用下去。

    ●…… Mantis

    Mantis15 是基于 PHP 的缺陷管理系统(图 4.4)。由日本人开发,过去在日本曾被广泛使用,但近年来几乎看不到了。新项目一般不会使用 Mantis,但在参加历史较久的项目时,还是有机会看到 Mantis 的。

    15 http://www.mantisbt.org/

    4.2 主要的缺陷管理系统 - 图4

    图 4.4 Mantis

    4.2.2 商用产品

    ●…… JIRA

    JIRA16 是由 Atlassian17 有偿提供的基于 Java 的缺陷管理系统(图 4.5)。虽说是商用的,但有 30 天的免费试用期。该产品可以以安装文件或 SaaS 的形式提供,功能丰富。如果项目预算允许的话,可以考虑使用 JIRA。

    16 https://www.atlassian.com/software/jira/

    17 https://www.atlassian.com/

    4.2 主要的缺陷管理系统 - 图5

    图 4.5 JIRA

    从 bug 的管理到需求的管理,JIRA 能够以不同的粒度管理问题票,还可以和版本管理系统进行关联。JIRA 拥有大量的插件,能够满足各类需求。JIRA 同样支持日语 18 。但是 Wiki 功能由同属于 Atlassian 的其他产品 Confluence19 来提供,这点需要注意。

    18 JIRA 本身不支持中文,但有收费的第三方汉化插件 http://www.confluence.cn/pages/viewpage.action?pageId=2164040 。——译者注

    19 https://www.atlassian.com/software/confluence/

    ●…… YouTRACK

    YouTRACK20 是以 IntelliJ IDEA 等 IDE 出名的 JerBrains 21 所提供的基于 Java 的缺陷管理系统(图 4.6)。这也是一款收费软件,但 10 个用户之内的可以免费使用。提供安装文件和 SaaS 两种形式。但需要注意的是该软件还没有中文版本。

    20 http://www.jetbrains.com/youtrack/

    21 http://www.jetbrains.com/

    4.2 主要的缺陷管理系统 - 图6

    图 4.6 YouTRACK

    ●…… Pivotal Tracker

    Pivotal Tracker22 是 PivotalLab 提供的缺陷管理系统(图 4.7)。特别适合于敏捷开发的 Scrum 开发流程。只提供 SaaS 形式的产品。

    22 http://www.pivotaltracker.com/

    4.2 主要的缺陷管理系统 - 图7

    图 4.7 Pivotal Tracker

    作为 Web 应用程序 Pivotal Tracker 非常有趣,并且能够通过拖曳直观地新建、移动问题票。多人同时编辑时能够在画面上实时地反映出来。UI 界面也易于使用。但是需要注意 Pivotal Tracker 没有中文版本。

    如果团队成员习惯于 Scrum 的话,Pivotal Tracker 是非常方便且易用的工具。

    ●…… Backlog

    Backlog23 是由日本的 nulab 24 提供的缺陷管理系统(图 4.8)。支持 SaaS 和安装文件两种形式。因为是日本公司的产品,所以对日语的支持方面完全没有问题,当然也支持多语言,包括中文 25 。

    23 http://www.backlog.jp/

    24 http://www.nulab.co.jp/

    25 http://backlogtool.com/cn/

    4.2 主要的缺陷管理系统 - 图8

    图 4.8 Backlog

    Backlog 能够与 bug 管理、代码管理相关联,也支持 Wiki 的信息共享,必要的功能可谓一应俱全。10 名用户、1 个项目以内可以免费使用。

    Backlog 以亲切易用的 UI 以及可爱的设计为特征,还可以使用表情符号,像使用手机一样发送表情。程序员以外的人用起来也能得心应手 26 。

    26 本书写作时就使用了 Backlog 的免费缺陷管理系统,用 Backlog 提供的 Git 来管理原稿。

    ●…… GitHub

    GitHub27 已经在第 3 章介绍过了。作为缺陷管理系统,GitHub 同样具备不俗的功能(图 4.9)。检索功能等可能稍微弱了些,但和代码管理的交互做得非常出色,还具备 Wiki 的功能。并且还有名为 GitHub Pages 的用于创建项目网页的功能,以及类似于 Travis CI 的 CI 工具。可以毫不夸张地说,GitHub 能够提供 OSS 项目所需要的所有功能。

    27 https://github.com/

    4.2 主要的缺陷管理系统 - 图9

    图 4.9 GitHub

    问题在于没有中文版本,并且基本上只有面向程序员的功能,程序员以外的项目成员使用起来可能有些困难。

    GitHub 虽然可以免费使用。但如果不想让其他人看到项目的内容的话,就需要购买私有代码仓库,将项目设置为私有,这点请注意。第 3 章中已经提到过,GitHub 还提供安装文件形式的 GitHub Enterprise,在公司内部使用的话可以考虑 GitHub Enterprise。

    4.2.3 选择工具(缺陷管理系统)的要点

    至此我们对主要的缺陷管理系统进行了介绍。无论是 OSS 还是商用产品,数量都相当多,选择起来比较困难。并且缺陷管理系统并不像版本管理系统以及 CI 工具那样有常规的选项。

    除了上面介绍的几款之外,还有很多其他的工具,大家也可以试着挑选适合自己的开发现场的工具。选择工具时需要确认的关键点因开发现场而异,但特别需要注意的是工具所提供的扩展性如何,以及是否易于实现。

    缺陷管理系统和版本管理系统以及 CI 工具不同,工程师以外的项目利益相关者也会比较多地接触到缺陷管理系统。并且很多缺陷管理系统都和团队的业务流程密切相关。因此,能否扩展缺陷管理系统,使其灵活地适应现场的开发流程,这一点同样很重要。

    这里介绍的缺陷管理系统都支持以某种形式进行扩展,一般会提供 REST API 或插件机制等。

    如果选用本次介绍的工具之外的其他工具,选择时一定要注意其扩展性。

    专栏 缺陷管理系统的应用事例
    原本用于软件开发项目中的任务管理的缺陷管理系统,近年来逐渐被扩展应用到了其他各个领域。
    例如,笔者所在的团队就在下列业务中用到了缺陷管理系统。
    • 用户咨询的管理
    委托其他部门的工作的管理
    这是因为缺陷管理系统所具有的定义任务、确定责任人和期限这样的任务进度管理功能对几乎所有的工作都是通用的。
    想必本书的读者基本上都是软件开发相关的工程师,缺陷管理系统能够在各类业务中起到作用,所以请一定在软件开发项目之外也试着应用一下。