前言:在 上一篇 TFS2015敏捷开发实践 中,我们给大家介绍了TFS2015中看板的基本使用和功能,这一篇中我们来看一个具体的场景,如何使用看板来运行一个sprint。Sprint是Scrum对迭代的称谓,也是Scrum中团队协作的一个迭代单元,包含了Scrum中最主要的活动,我们来看看如何使用看板来支持这些活动。

TFS 2015中对看板功能进行了大量改进。我们可以通过对列,泳道,展示样式及卡片内容进行定制,使TFS看板具有更强的展示效果与可操作性。本篇博文中我就对TFS 看板进行了一些深度定制,以实现敏捷团队在TFS 2015看板上完成一个Scrum的Sprint。

团队介绍

团队组成:

  • 产品负责人: 1名
  • Scrum Master: 1名(团队成员轮流兼任)
  • 开发团队成员: 8名(5开发,3测试)

迭代周期:2周,10个工作日
团队平均速率:100(每个迭代完成100工作量的积压工作)

注:在敏捷团队创建之初,确定一个迭代的周期对于敏捷团队是最重要的。 迭代周期不是越短越好,迭代周期的选定包含很多要素:

  • 团队能交付一定量的产品增量
  • 产品负责人能承诺的不改变已经进行计划的积压工作的最长时间
  • 测试资源
  • 其他因素

Scrum事件发生时间:
迭代计划会议:迭代第一个工作日上午召开(星期二 9:30 )
每日站立会议:每日早上9:45到10点
迭代评审会议:迭代最后一个工作日下午召开 (星期一),选在周一下午召开是因为我们有一个周末的时间可以处理紧急问题
迭代回顾会议:迭代最后一个工作日下午评审会议完成后召开(星期一)

看板样式如下:

这里对我所使用的看板进行一下简单说明:

  • 采用6列:新建,当前迭代(会在迭代计划会议中将本迭代需要完成的PBI和Bug放入此列),开发,测试,发布(此列可选),完成。 其中当前迭代对应状态New, 开发对应状态Approved,测试与发布对应状态Committed。
  • 关于WIP,当前迭代列为每个迭代的平均完成积压工作数量;开发、测试列的WIP采用资源数*2-1的方法来计算,比如:开发WIP为 5(开发人员)*2-1 = 9。
  • 采用Bug与PBI双泳道,并且Bug泳道在PBI泳道之上。我这样设计是为了说明Bug的处理优先级应该高于PBI,处于当前迭代下游的开发人员,应该优先解决当前迭代列中的Bug。在显示效果上也更醒目。
  • 启动在开发、测试与发布列中的缓冲区,就是每个列下面的Doing和Done。因为大家都知道在看板中是采用拉动式生产方式,团队成员应该从自己所处列的上游拉取卡片到自己的工作列中。因此我们在TFS配置中启动列的缓冲区,这样可以明确的告知我们的下游团队成员哪些卡片使能够被拉取。比如:如果开发列中的卡片处于Done中,那么表示开发工作已经完成,测试人员可以对这些PBI或者Bug进行测试。

启动一个迭代

迭代计划会议开始之前我们的产品负责人一定要提前整理好团队积压工作列表,包括录入积压工作及按照商业价值/紧迫程度为积压工作排序。这部份工作一定要在开始迭代计划会议之前完成,不然会大大的降低会议效率。

迭代计划会议

最左侧是由产品负责人整理的挤压工作列表,优先级由上到下。那下面我们要确定这个Sprint我们要完成哪些工作:

    1. 先由产品负责人将最顶的积压工作拖拽到 当前迭代中,并设置字段 迭代路径

    1. 开发团队对工作量进行预估,同时让团队成员认领积压工作。关于工作量也多说两句:工作量与工时是量化完成工作的两个维度。工时很好理解就是完成积压工作需要耗费的单位时间,工作量是一个没有单位的数值,预估的方式为:在积压工作列表中选取一个最简单的积压工作,然后将工作量预估为1,其他的积压工作的工作量与这个相比较。 工作量数值一般采用近似于斐波那契数组的值:1,3,5,8,13,20,40,60,100。在TFS中工作项的工作量在积压工作项中设置,而所需工时需要在由积压工作项分解出的任务中设置。

    1. 与产品负责人一同确定验收标准

    1. 按照优先级依次将新建的积压工作项拖拽到当前迭代列,直到积压工作项的工作量达到饱和。

关于开发团队每个迭代的工作量总和可以通过TFS的Sprint 速率报表(Velocity)查看以往迭代的完成速率来确定。

  • 确定如何完成这些积压工作。细化需求,将积压工作项分解为任务。如果一个积压工作不能在一天内完成,我们又想知道每天的工作进度,可以将积压工作分解为任务,通过任务来跟踪团队成员每日的工作情况

每日站立会议

按照先开发人员再测试人员的顺序,每个团队成员只需要回答3个问题:

  1. 昨天做了什么? 完成了哪个积压工作或者任务。 如果积压工作完成,将积压工作从开发拖入到测试正在进行中

    • 如果该团队成员完成了工作,将卡片从当前列的Doing移动到Done,表示此工作在当前阶段已经完成。

    • 如果团队成员未完成整个PBI只是PBI分解出的任务,可以通过勾选卡片中任务前的勾选框来标记,任务已经完成,系统会自动将任务状态改为Done。这样我们可以通过任务来跟踪团队成员每天的工作及PBI的工作进度。

  2. 今天要做什么?该团队成员只需要从自身角色所在流程的上游获取新的卡片即可,比如开发人员在当前迭代中拉取新的PBI或者Bug到开发列的Doing中;测试人员将开发列Done中的PBI拖拽到测试的Doing进行测试
  3. 遇到了哪些问题?千万不要在站立会议上寻求问题的解决方案,这会占用团队的大量时间,只需要告诉大家你有什么问题就可以了。

如果我们每个列的卡片过多,每个团队成员在站立会议过程中只想展示自己的卡片怎么办?可以使用看板中的快速搜索功能

迭代评审会议 & 迭代回顾会议

  • 向产品经理交付在测试完成列中的积压工作,不在新建与发布列Done列中的其他工作项当前Sprint未完成积压工作。
  • 根据接受标准向产品负责人展示交付物,如果产品负责人接受交付,将积压工作项拖入完成列。
  • 如果产品负责人不接受,开发团队同意下个迭代进行修改,可以添加标签注明是哪个迭代的积压工作,并在下个迭代计划会议中将积压工作项拖拽到当前迭代中


对于迭代评审会议的其他事件与迭代回顾会议,由于不涉及看板就不在这里赘述了。在本文中大家可以看到如何使用TFS看板来完整的运行一个Scrum迭代,下个帖子我将向大家讲述怎样在TFS平台上提高我们的源代码开发效率。


请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

TFS 2015 敏捷开发实践 – 在Kanban上运行一个Sprint的更多相关文章

  1. TFS 2015 敏捷开发实践 – 看板的使用

    看板在现代应用开发过程中使用非常广泛,不管是使用传统的瀑布式开发还是敏捷开发,都可以使用看板管理.因为看板拥有简单的管理方法,直观的显示方式,所以很多软件开发团队选择使用看板进行软件开发管理.本文不在 ...

  2. 微服务与敏捷开发(Scrum/Kanban)的核心思想之我见

    微服务与敏捷开发(Scrum/Kanban)的核心思想之我见   关于"微服务"和"敏捷开发"的文章网络上有很多,所以这里不再重复叙述这些概念的解释和特点,而是 ...

  3. [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum

    [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum 1,Scrum概述 上篇中提到敏捷开发有两种主流的方法,一个是XP,另一个是Scrum,本篇简要介绍Scrum方法.Scrum是 ...

  4. 环信联合创始人: Saas敏捷开发实践!

    马晓宇 --环信联合创始人/执行总裁 我们是一个做云服务的创业公司,所以我就云服务创业公司的角度,来谈谈我们是怎么去实践敏捷开发的.确切地说,就是讲讲我们这几年的这些教训... 1-创业公司敏捷开发流 ...

  5. 《HP大规模敏捷开发实践》读书笔记

    读这本书的心得,敏捷是实践出来的,哪怕不懂srcum**等方法,只要坚持心中的价值观,朝一个方向改进,哪怕不能“任何时候都拥有符合发布要求的代码”,今天比昨天好,也是成功.     通过业务分析确定开 ...

  6. WePY - 小程序敏捷开发实践丨掘金开发者大会

    声明:内容转载他处,如有侵权,可协商下架 本主题虽然在其它地方讲了很多次,但还是有非常多新内容.因为很多东西正在做或者想要做.本次分享主要分为以下几个部分: WePY 的介绍 WePY 的用户 上面展 ...

  7. 92.vue---新手从本地项目开发到服务器线上运行爬坑。

    因为我做的是后台,所以不用做SEO 参考 本项目的定位是后台集成方案,不太适合当基础模板来进行二次开发.因为本项目集成了很多你可能用不到的功能,会造成不少的代码冗余.如果你的项目不关注这方面的问题,也 ...

  8. 在 Docker 上运行一个 RESTful 风格的微服务

    tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/d ...

  9. 现在k8s新版里,如何在每个node上运行一个带privileged的daemonset

    以前,我们会在kubelet上加--allow-prividged启动参数来实现. 而现在,更推荐的是用pod secureity policy来实现.前面的那种方式以后会被废弃. https://k ...

随机推荐

  1. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  2. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  3. AutoFac在项目中的应用

    技能大全:http://www.cnblogs.com/dunitian/p/4822808.html#skill 完整Demo:https://github.com/dunitian/LoTCode ...

  4. SDWebImage源码解读之SDWebImageCache(下)

    第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极 ...

  5. [转]Patch文件结构详解

    N久不来 于是不知道扔在哪儿于是放这里先 如果你觉得碍事的话 帮我扔到合适的版块去.. 导读这是一篇说明文 它介绍了标准冒险岛更新文件(*.patch;*.exe)的格式文章的最后附了一段C#的参考代 ...

  6. HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置

    在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...

  7. duang~免费的学习视频来啦:学霸君之全栈测试

    学霸君向童鞋们推荐一款 同名学霸学习 视频教程 重点是完全免费收看学习噢!!! 今天 学霸君推荐腾讯课堂的学霸君之全栈测试 复制下方链接至腾讯课堂中报名学习 https://ke.qq.com/cou ...

  8. 移动应用App测试与质量管理一

    测试工程师 基于Html的WebApp测试, 现在一些移动App混Html5 HTML5性能测试 兼容性 整理后的脑图 测试招聘 弱化大量技术考察 看重看问题的高度 看重潜力 测试经验 质量管理 专项 ...

  9. atitit.细节决定成败的适合情形与缺点

    atitit.细节决定成败的适合情形与缺点 1. 在理论界有两种观点:一种是"细节决定成败",另一种是"战略决定成败".1 1.1. 格局决定成败,方向决定成败 ...

  10. Windows下MySQL无法启动

    问题描述: 从网上下了5.7 的MySQL,在bin目录下执行 start mysqld ,弹出个cmd窗口一闪就没了,也看不清是什么报错.mysqld --install安装了服务,也启动不了.   ...