前言
工欲善其事,必先利其器!敏捷开发的持续交付,一定程度上导致了交付的碎片化,我们需要好的管理工具。
来自澳大利亚的 Atlassian 公司推出的 JIRA和 Confluence 是敏捷开发的两大利器,它们彻底地贯彻了敏捷开发所倡导的去中心化、协作、集体讨论、信息共享、灵活、透明、可视化等原则。
JIRA 是项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域(很多开源项目就是用 JIRA 收集和管理缺陷与交流)。Confluence 用于企业知识管理与协同和构建企业 wiki。JIRA 与 Confluence 相互结合,更是相得益彰。
下面我将详细介绍通过实战总结的 JIRA 和 Confluence 的使用攻略以及两者的融合(由于公司用的是英文版,所以下面所有的功能点和截图都是英文的,截图中的敏感信息也做了遮盖处理,如有不便,敬请谅解)。
JIRA:一站式敏捷管理神器
JIRA是完全按照敏捷开发管理所需要的所有要件来开发的,完美支持Scrum和看板方法,其易用性、灵活性、扩展性得到业界广泛认同,可谓是“谁用谁喜欢”。下面我精选了一些亮点和大家分享。
Epic, Story和Sub-task
在敏捷开发中,工件有下面几个层级:
Epic - 史诗故事。包含某个特性或子项目的相关用户故事,便于用户故事归组。
Story - 用户故事。具有业务价值的端到端交付,你懂的。
Sub-task - 用户故事下需要分配给不同人处理的子任务,不可单独交付,比如前端开发与后端开发,上、下游组件开发等。
在JIRA中,所有的工件都统称Issue,而每个Issue可指定一个Issue Type,上面提到的Epic,Story和Sub-task分别是一种Issue Type。JIRA的Issue Type非常丰富,而且可以自行定义,对应真实的工件类型,如Support Case、Change Request、Enhancement等。下面重点讲一下敏捷中最重要的几种Issue Type的层级关系。
Epic
由于一个Epic包含若干个用户故事(Story),在新建或编辑Story时,可以通过Epic Link的属性把该Story指向一个已有的Epic,从而建立两者的隶属关系。
Story
具有业务价值的端到端交付。满足INVEST原则。
在JIRA中,Story级别的Issue不仅限于Issue Type为Story。所有非Epic和Sub-task的Issue都可视为Story级别的Issue。
Sub-task
如果一个Story需要拆分成任干个任务交给不同人或团队完成,可以在Story中新建Sub-task并分配给相应的人或团队。Defect也是一种Sub-task。独立测试团队对某个Story进行测试时发现Defect,应该在该Story下创建Defect (Sub-task),把两者关联起来。
如下图,在一个Story级别的Issue中,可以按“More”按钮,然后按“Create Sub-Task”按钮来新建Sub-task。
Sub-task和Story级别的Issue是可以相互转换的。所以即使一开始关系建错了,也没有关系,这也体现了JIRA强大的灵活性和对延后决策的完美支持。
小结三者关系是Epic包含若干个Story,Story包含若干个Sub-task。
工作流(Workflow)
有了Issue后,我们需要工作流来管理进度和状态。JIRA支持不同Issue Type应用不同的工作流(Workflow),从而满足不同Issue Type的实际完成过程。比如,一个需要开发的Story自然要走标准的软件开发流程——需求、设计、编码、测试、上线等,一个简单任务或Sub-task则只需要走简单的任务流程——待处理、处理中、完成。在JIRA中,我们完全可以自定义不同的工作流并分配给不同的Issue Type。如果我们新建了一个Issue但后来发现它应该属于另一种Issue Type走不同的工作流,可以通过Move功能进行切换,非常灵活。
可视板
敏捷与精益都追求可视化。JIRA提供了强大的可视板功能并完美支持Scrum与看板两种方法。在JIRA的顶端的Agile菜单,可以调出可视板管理菜单,包括最近打开过的可视板。
在可视板功能中,我们可以根据所采用的敏捷方法,选择建立Scrum可视板还是看板可视板(这里澄清一个概念,很多人把可视板——Board与看板——Kanban等同起来,其实“看板”是一种方法,有3个要点:可视化,限制在制品,量度与流改善。可视板仅仅满足了“看板”中可视化的要求,没有后落实后两个要点,其实并不算在实施看板。“看板”是日语,我们要区分其中文的字面意思和其真实含义)。
在Board的菜单中,我们可以建立新的可视板。也可以Copy一个已有的可视板并进行修改。
在可视板配置界面中,我们可以通过帅选(Filter)功能来定义板的涵盖范围。这个范围可以非常灵活,既可以是一个JIRA项目中满足某些条件的Issue,也可以是几个JIRA项目的组合。JIRA的Filter功能非常强大,复杂的帅选条件可以编写JQL(JIRA中类似SQL的语法)来实现。
确定板的范围后,在Ranking的属性中按“Add Rank”或“Using Rank”,便可实现在板中通过拖动来实现优先级排序。
可视板中最重要的意义是进度可视化,因此我们可以按照自己的需求来定义板的外观,比如需要切分多少个竖列(每个竖列应该代表一道工序或一个角色需要完成的子任务)来观察Issue的流动情况,各类型Issue的状态需要分配到哪个竖列中等。
在看板方法中,一个很重要的原则是限制在制品,我们应该根据每个竖列所对应的工序或角色的交付能力来设定最大和最小并行任务数。设置好后,JIRA会根据在该竖列中实际并行任务数是否在限定以外来提示团队(在Scrum中,限制在制品是通过Sprint Planning完成的,因此一般无需再对竖列的并行任务进行限制)。
当一个可视板的范围比较大,里面涵盖的Issue数量和类型比较多时,我们还可以在板中建立横向的“泳道”来把Issue进行分组显示,提高管理效率。“泳道”的切分可以是按被分配人、Epic或自定义条件进行。
一个含“泳道”的看板可视板的例子:SCRUM,敏捷开发,敏捷内训,CSM-ACP敏捷认证考试培训:www.pmquanzi.com
发布管理
我们可以在JIRA中做发布计划。在管理界面中,管理员可以根据发布计划定义Version,包含发布日期与发布提要。在每一个Issue中,我们可以在Fix Version/s属性中指定它将在哪个Version发布。
我们可以通过Releases页面轻松发布Release Note。
通过代码版本控制软件如SVN、Git等的插件,只要在提交代码时,提交备注(Comment)中包含JIRA Issue Key,相应的代码提交信息也会显示在Issue中,从而建立Issue与相应的代码的可视关系。实现敏捷与DevOps里倡导的可追踪性。
Confluence——去中心化的文档与知识管理
可以把Confluence理解成Wiki。任何人都可以生成一份文档或知识点,任何人也可以对已有的文档或知识点进行编辑,所有编辑版本都会被自动记录,而且支持多人对同一页面的并行编辑。任何人也可以通过Comment对已有文档或知识点进行点评和讨论,构造协同、透明、信任的沟通环境。
除了可以构建普通的文档页面外,还可以通过其预设或自定义的模板生成会议记录、日历管理、博客、JIRA报告等。
下面我重点介绍几个炫酷功能:
丰富的格式化
作为一款文档工具,文档格式化自然必不可少。通过格式化,我们可以迅速通过Confluence构建专业的文档,包含书签、Header、表格、引述、代码引用等。
如果使用像Chrome这样的标准浏览器,复制的截图可以通过Ctrl-V直接插入到文档中,非常快捷。
Confluence的页面可以导出生成Word或PDF文档,方便发送。管理圈:www.pmquanzi.com
PS: JIRA Issue的Description也支持相同的格式化,也可导出为Word或PDF文档,便于我们为每一个用户故事或变更进行详尽、专业地记录。
页面关系灵活性
为了便于管理大量的文档,我们可以为不同的页面建立隶属关系,并可以通过Move功能随意变换这种关系,而且不影响页面的原链接地址,非常灵活。
表格过滤与透视
如果页面有表格,我们可以实现像在Excel里面的数据过滤与透视功能,如下图:
会议记录的行动跟踪
通过Confluence编写会议记录,不光可以记录会议议程,还可以记录行动并分配给具体个人和指定完成日期。Confluence有一个行动汇总页面,可以一次性看到不同会议的所有的行动完成情况。被分配的个人在行动完成日期前也会自动收到邮件提醒。
JIRA+Confluence 相得益彰
JIRA与Confluence的实时互动
只要把某个JIRA Issue的链接地址贴到Confluence页面里,该Issue的标题和实时状态会自动显示在Confluence页面中。
如果某个Issue被Conluence引用,在JIRA中也能看到相应的链接。
我们建议把项目中相对静态的信息,如项目的整体框架或者从项目拆分到特性等内容放在Confluence中,然后把对应的比较动态的工件通过JIRA来追踪,然后把JIRA Issue的链接放在Confluence页面中,建立两者的对应关系,整个项目的脉络,一目了然,而且在JIRA中的状态更新在Confluence页面中也能实时反映。或者通过Confluence的表格功能建立用户故事地图,然后把生成的用户故事通过JIRA记录,并把链接放在Confluence里的地图细节中。简单来说,静态的内容放Confluence,动态的内容放JIRA,并把两者链接起来。
实时报告与仪表盘
我们不时需要给客户提交项目报告。过去,我们需要手动整理这些信息,费时费力。通过这两大利器,我们可以轻松构建实时的报告和仪表盘,只消一次搭建的功夫。
我们可以在Confluence中把整个JIRA列表引入,列表的内容可以通过JQL灵活设定。
也可以把列表转换为图表,建立可视化很强的仪表盘。
写在最后
敏捷不光是一种软件开发方法,敏捷性需要体现在我们工作的方方面面。像JIRA和Confluence这样的利器能帮助我们事半功倍,同时,要用好这些工具,也需要对其背后的设计理念,也就是我们开头提到的敏捷原则去中心化、协作、集体讨论、信息共享、灵活、透明、可视化有充分的理解。
作者:刘华
来源公众号:GitChat技术杂谈 原文:「敏捷利器 JIRA 和 Confluence 使用攻略」