作者: 阮一峰

日期: 2017年8月29日

软件开发(尤其是商业软件)离不开项目管理,Issue 是最通用的管理工具之一。

本文介绍 Issue 的基本用法。

一、Issue 是什么?

Issue 指的是一项待完成的工作,通常与系统的改进相关,中文可以译为"问题"或"事务"。下面这些都是 Issue 的例子。

  • 一个软件的 bug
  • 一项功能建议
  • 一项待完成的任务
  • 文档缺失的报告

每个 Issue 应该包含该问题的所有信息和历史,使得后来的人只看这个 Issue,就能了解问题的所有方面和过程。

历史上,Issue 起源于客服部门。用户打电话反映问题,客服就创建一个工单(ticket),后续的每一个处理步骤、每一次与用户的交流,都要更新工单,记录全部信息。这就是 Issue 的前身。

因此,Issue 的原始功能是问题追踪和工单管理,后来不断扩展,逐渐演变成全功能的项目管理工具,还可以用于制定和实施软件的开发计划。

除了软件,其他项目也可以使用 Issue,比如有人把自己住宅的改善计划都做成了 Issue。

二、Issue 跟踪管理系统

专门管理 Issue 的软件,叫做 Issue 跟踪管理系统(Issue tracking system)。它面向所有人,普通用户也可以使用。

还有一种 Bug 跟踪管理系统,通常只面向开发者,比如下图的 Bugzilla。它和 Issue 系统可以同时使用,但是也可以被 Issue 系统取代。

一般来说,Issue 跟踪管理系统应该具有以下功能。

  • 项目管理
      - 指定 Issue 的优先级
      - 指定 Issue 所在的阶段
      - 分配负责 Issue 的处理人员
      - 制定日程
      - 监控进度,提供统计
  • 团队合作
      - 讨论
      - 邮件通知
  • 代码管理
      - 将 Issue 关联源码
      - 将 Issue 关联代码提交与合并

三、Github Issues

目前,最出名的 Issue 跟踪管理系统是 JIRA。它是一个收费软件,这里就不介绍了。下面通过免费的 Github Issues,来介绍如何使用 Issue。

3.1 基本用法

每个 Github 代码仓库都有一个 Issues 面板。

进入该面板,点击"New Issue"按钮,就可以新建 Issue。

上图是新建 Issue 的界面,左侧填入 Issue 的标题和内容,右侧是四个配置项(只有项目管理者才能看到)。

  • Assignees:人员
  • Labels:标签
  • Projects:项目
  • Milestone:里程碑

下面,一个个介绍这些配置项。

3.2 Assignee

Assignee 选择框用于从当前仓库的所有成员之中,指派某个 Issue 的处理人员。

下拉框里面单击人名即可。

3.3 Labels

Issue 可以贴上标签,这样有利于分类管理和过滤查看。

新建标签,要在 Issues 面板的首页,点击 Labels 按钮。

这时,会显示六个默认的标签。

如果想新建更多的标签,可以点击 New label 按钮。然后,填写标签名,选择标签颜色。

3.4 常用 Label

对于大型项目, 每个 Issue 至少应该有两个 Label ,一个表示性质,另一个表示优先级。

表示性质的 Label,可以参考这篇文章的范例。

表示优先级的 Label,可以采用下面的级别。

  • 高优先级(High):对系统有重大影响,只有解决它之后,才能去完成其他任务。
  • 普通优先级(Medium):对系统的某个部分有影响,用户的一部分操作会达不到预期效果。
  • 低优先级(Low):对系统的某个部分有影响,用户几乎感知不到。
  • 微不足道(Trivial):对系统的功能没有影响,通常是视觉效果不理想,比如字体和颜色不满意。

3.5 Milestone

Milestone 叫做"里程碑",用作 Issue 的容器,相关 Issue 可以放在一个 Milestone 里面。常见的例子是不同的版本(version)和迭代(sprint),都可以做成 Milestone。

新建 Milestone,要在 Issues 面板的首页,点击 Milestones 按钮。

这时,再接着点击 New milestone 按钮,然后填写 Milestone 的名称和内容,还可以指定到期时间。

3.6 全局视图

Issues 面板只能查看和操作当前仓库,Github 还提供全局视图,让用户查看和操作所有与自己相关的 Issue。

访问 github.com/issues 这个网址,就可以打开全局视图。里面的 Issue 分成三类。

  • Created:你创建的 Issue
  • Assigned:分配给你的 Issue
  • Mentioned:提及你的 Issue

Created 和 Assigned 的含义显而易见,Mentioned 是指他人在 Issue 里面 @ 了你。下面是一个例子。

It looks like the new widget form is broken on Safari. When I try and create the widget, Safari crashes. This is reproducible on 10.8, but not 10.9. Maybe a browser bug?

/cc @kneath @jresig

全局视图还提供了搜索、过滤和排序功能。

四、看板功能

4.1 看板是什么?

看板(kanban)是敏捷开发的重要手段,主要用于项目的进度管理。所有需要完成的任务,都做成卡片,贴在一块白板上面,这就是看板。

按照不同的阶段,看板分成若干列。上图是一种常见的分法,将项目周期分成三列。

  • Todo (待开发)
  • Doing (开发中)
  • Done (已完成)

你可以根据实际情况,分出更多的列。

  • Todo (待安排)
  • Plan (计划)
  • Develop (开发)
  • Test (测试)
  • Deploy (部署)
  • Done (已完成)

4.2 Github 的看板功能

Github 提供 Issue 看板。首先,在仓库首页进入 Projects 面板。

然后,点击 New Project 按钮,新建一个 Project,比如"2.0 版"。

接着,点击 Add column 按钮,为该项目新建若干列。

最后,将 Issue 分配到对应的列,就新建成功了一个看板视图。

Issue 可以从一列拖到另一列,表示从一个阶段进入另一个阶段。

许多第三方工具可以增强 Github 的看板功能,最著名的是 Zenhub,这里就不详细介绍了。

五、码云的 Issue 系统

除了 Github 以外,Gitlab 也提供免费的 Issues 管理系统,而且 比前者更易用。但是,我不打算介绍它,而是想介绍开源中国社区推出的代码托管服务码云(Gitee.com)。

码云是 Gitlab 的深度定制,提供汉语界面,符合国人的使用习惯,并且访问速度极快,我感觉比 Gitlab 快了一个数量级。另一方面,开源中国的红薯老大一直支持我,我也想借这个机会,推广一下他们的产品,让更多的人知道这个优秀的国产 SaaS 服务。

5.1 新建 Issue

码云的每个仓库都有一个 Issues 面板。进入后,点击新建 Issue,就可以创建 Issue 了,里面的设置项比 Github 丰富好多。(注意,只有仓库的管理员才能看到设置项。)

其中的"负责人"(Assignee)、"标签"(Label)、"里程碑"(Milestone)与 Github 完全一致。"关联分支"指定 Issue 归属于哪一个分支,"开始时间"和"结束时间"指定处理日程。"置顶选项"指定哪些 Issue 出现在最前面,而且还分成高中低三档。

由于设置多,所以 Issue 列表提供的过滤开关也多。

5.2 看板功能

码云的看板功能比 Github 更友好,直接提供四个现成的看板。

  • 待处理
  • 进行中
  • 已完成
  • 已验收

所有 Issue 的初始状态都是"待处理",用户可以手动把它们拖到其他列。

5.3 企业版

码云跟 Gitlab 一样,也提供企业版。里面的"任务"模块有一个强大的 Issue 全局视图,分成四种浏览模式。

  • 指派给我的
  • 我发布的
  • 我参与的
  • 全部任务

这是默认的列表视图,可以点击右上角,切换成全局的"看板视图"。

这个界面还可以直接新建任务,而不用进入仓库主页。新建任务时,允许指定"关联项目"、"负责人"和"预计工时"。

新建任务以后,还可以对任务进行再次编辑,这时可以设置"优先级"、"关联项目"和"子项目"等。

我就介绍到这里了,接下来你可以点击进入 Demo,体验一下上面介绍的各项功能。

(完)

如何使用 Issue 管理软件项目?相关推荐

  1. 浅谈管理软件开发类项目是怎么来的,怎么接到项目的,欢迎大家补充

    为什么80%的码农都做不了架构师?>>>    其实很多人问过我,吉日你的软件项目都是哪里来的?为啥你有做不完的软件项目? 我也简单理了一下思路,跟大家一起分享一下: 01: 首先你 ...

  2. java 进度管理系统,java毕业设计_springboot框架的软件项目开发过程进度管理

    今天介绍一个java毕设题目, 题目内容为springboot框架的软件项目开发过程进度管理, 是一个采用b/s结构的javaweb项目, 采用java语言编写开发工具eclipse, 项目框架jsp ...

  3. [转载]小软件项目开发的管理(好长)

    小软件项目开发的管理 创建成功的工程 成功项目管理的秘密 更好地领导一个项目的诀窍 参与变革,走向成功 CMM/TSP/PSP讲义稿 开发流程中的可用性 软件开发的管理和控制 如何组织软件开发团队 软 ...

  4. 华为敏捷DevOps实践:如何从Excel管理软件的方式中走出来

    业界有个小段子,研发不是请客吃饭,是倾家荡产. 是的,研发人员,尤其是从事软件的工程师门,普遍是比较傲娇的,在软件产品没有卖出去形成收入前,软件工程师的投入都是刚性成本.所以,为什么很多软件企业的老板 ...

  5. 管理软件实施(1)——什么是管理软件

    题记:搞管理软件实施很多年了,发现这项任务对一个项目的影响如此巨大,但在很多公司却没有引起足够的重视,于是想写点东西总结一下自己的工作经验,希望能对同行有些许帮助,今天开篇了.如果效果不错,希望能集结 ...

  6. 开发团队分配管理软件

    前言 开发团队分配管理软件项目解析 提示:以下是本篇文章正文内容,下面案例可供参考 一.了解目的 开发团队分配管理软件要实现什么? 1.软件启动时,首先进入登录界面进行注册和登录功能. 2.当登陆成功 ...

  7. 软件项目经理在面试的时候会问到哪些问题?

    作为一个软件项目经理,面试官可能会问您一些关于软件项目管理方面的问题.下面是一些可能会被问到的问题以及如何应答的建议: 您如何管理软件项目?                              ...

  8. 制造业ERP管理软件哪家好用?

    最近上网登录知乎账号发现很多网友邀请我回答ERP相关问题,我选了一类提问比较频繁的问题,结合我们公司之前选软件的经历给大家分享一下经验,下面列出的三条提问是网友邀请比较频繁的一类问题: 网友A问:公司 ...

  9. 软件项目如何调研(二)

    2.7.2 常见错误六:聆听,而不是提供解决方案 有的人在用户提出一个疑难点的时候,很希望把自己的产品特色展示出来,花了大量时间讲自己的卖点和特色,给用户做了大量启蒙工作. 当然有些用户还会对一些特色 ...

最新文章

  1. 八款开源 Android 游戏引擎 (巨好的资源)
  2. IOS 自定义NIB视图
  3. 25行代码AC_ 2017年C/C++ A组第四题 方格分割(dfs剪痕+解题报告)
  4. C语言变长数组 struct中char data[0]的用法
  5. Linux操作系统内核启动参数详细解析
  6. 我的世界变betty指令_Betty Hacker将开放式硬件电子产品嵌入蛋糕中
  7. BZOJ 1568 Blue Mary开公司
  8. CCF NOI1061 Wifi密码
  9. UTF-8 编码及检查其完整性
  10. Python numpy函数:all()和any()比较矩阵
  11. python 服务端渲染_详解React 服务端渲染方案完美的解决方案
  12. 珞珈一号夜间灯光数据评价
  13. 4python小项目---# 体脂率计算
  14. z-index ios失效
  15. Python分析抖音数据,让视频爆起来
  16. 做一个登陆效果,输入用户名和密码,如果用户名是:张三,密码是:123就提示登陆成功,否则提示登录失败。
  17. flutter图片聊天泡泡_Flutter 非常丰富的消息气泡效果合集
  18. Java并发HashSet报错ConcurrentModificationException解决方案
  19. phpstudy宝塔_宝塔和phpstudy的区别
  20. 简易的三子棋游戏(C语言)

热门文章

  1. D. Black and White Stripe
  2. 2016中国spark技术峰会见闻摘要
  3. 计算机三维制图论文,对三维动画技术与三维虚拟技术探析论文
  4. Grafana启动报错
  5. 利用win32diskimager制作U盘启动器
  6. Android中读取系统图库(包含相册)中的图片,显示图片与图片的路径
  7. DTK——显示helloWorld
  8. FastJson简单使用
  9. golang 导出excel表格的两个包使用对比
  10. NProgress插件