写点什么

TFS 团队的敏捷转变:向三周一个 Sprint 进军

  • 2012-12-10
  • 本文字数:1539 字

    阅读完需:约 5 分钟

Buck Hodges 认为,过长的发布周期导致 TFS(Team Foundation Server)团队养成了不良的开发习惯,然而光靠生搬硬套 sprint 来缩短发布周期是不够的,还需要配合其他一些软件计划和软件开发方面的改进。

起初,TFS 要好几年才发布一次。微软的 Buck Hodges 说,这曾让 TFS 的开发人员养成了不良的习惯。当交付日期来临,开发人员则往往将没有完成的功能赶鸭子上架。开发人员认为,与其让某个功能等两三年再上线,不如在漫长的维护阶段再去修复遗留的缺陷。于是,TFS 带着两千多个缺陷上线就成了司空见惯的事了。

另一个问题是因特网的时效性。享受在线服务的用户往往想要获得及时有效的更新,一旦硬是让他们等着打补丁,他们很容易感到失望。所以在计划 TFS 网络版时,如果告诉客户要等几年才能有个更新版本出来,那绝对是痴人说梦。(注:网络版刚刚通过了 beta 测试,现在名为 Team Foundation Service 。)

计划

发布周期短并不意味着缺乏方向。TFS 研发工程师会从一块标有未来 18 个月他们大致要完成的工作的故事板开始入手,随后分解出六个月的主干计划,并将集中开发此计划中的某个选定的应用程序模块。

TFS 团队由 130 名成员。他们被分成多个功能组,各组负责各大领域,如版本控制、工作项跟踪、自动化构建等。每组由 12 名成员组成(6 名研发工程师,5 名测试工程师以及 1 到 2 名项目经理),各自为政,管理自己的功能待办事项列表。

为了确保市场需求和工程研发不冲突,很多功能可能已经发布到了 TFS 但并未被启用。这有利于进一步测试,也能把功能积攒起来,发布一个大版本。

Scrum

从 TFS 2012 开始,团队就开始使用 Scrum。他们的 Scrum 采用三周为一个 Sprint。他们觉得短一点的周期相对更有利于全局掌控,而较长的周期很难让团队及时修正错误,从而导致相似问题重复发生。

选择 Scrum 的另一个原因是可以通过真实的使用场景来测试软件。微软认为 Scrum 在他们客户中最流行。

Sprint 开始和结束时,团队都会发送邮件公告天下,再三强调跨团队的沟通。Sprint 开始时的电子邮件概括了每个团队将要完成的故事,而完工邮件则包含了已完成功能的演示。

发布节奏

尽管 TFS 采用三周为周期的 Sprint,发布可能仍旧保持四个月一次。这意味着每个发布都会非常庞大而且充满隐患。为了缩减每个发布的规模,他们曾尝试月度发布,但这又和 Sprint 的周期太接近了,最终他们决定合二为一,都是三周为一周期。

要这样做,就得防止等到维护期再去修复缺陷的思想死灰复燃。每三周 Sprint 之后,都会有一周的核实确认。它不是为了缺陷修复,而是为了确保任何无法运行的功能都必须被禁用或拿掉。核实确认的那一周通常和下一个 Sprint 的第一周并行进行。

测试

如果某个功能开发需要整整三周,也就是整个 Sprint 的时间,那么它同样会在 Sprint 发布时被禁用。在下一个 Sprint 中,测试人员将验证它,一旦完全通过则在部署时解禁。而那些只需要一两周就能实现的小功能则可以在单个 Sprint 中完成测试和发布。

所有测试都是自动的,并且滚动触发。现在跑完所有测试需要 2 到 3 个小时。由于测试周期比较长,所以签入的代码并不强制要求通过所有测试。取而代之的是,他们将 TFS 设置为只要求签入的代码可以顺利地被构建即可。下面是开发人员签入代码后收到的邮件的例子:

分支

TFS 的网络版(the Service)和客户安装版(the Box)使用的是相同的基础代码。此外,大多数功能都是在主分支上进行开发的。只有区别显著的功能才会在另外的分支上开发。并且只有当这个功能完成后,在下一个 Sprint 开始的时候才会把分支合并回主干上。

Sprint 结束时,代码会从主分支发布到产品库,也会每个季度更新一次分支。这些分支会继承上面提到的每日构建的版本号。

你可以在九频道观看完整视频讲解

查看英文原文: How TFS Embraced 3-Week Release Cycles

2012-12-10 10:072356
用户头像

发布了 114 篇内容, 共 34.0 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

技术干货 | jsAPI 方式下的导航栏的动态化修改

蚂蚁集团移动开发平台 mPaaS

容器 大前端 移动开发 mPaaS 动态化

java springboot自习室选座预约小程序源码

清风

计算机毕业设计

从Ftrace开始内核探索之旅

金蝶天燕云

Linux内核 Ftrace

【Flutter 专题】28 易忽略的【小而巧】的技术点汇总 (五)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

Apache APISIX 社区周报 | 2021 9.13-9.30

API7.ai 技术团队

开源社区 api 网关 社区周报 Apache APISIX

Apache APISIX 社区新里程碑——全球贡献者突破 300 位!

API7.ai 技术团队

开源社区 API网关 Apache APISIX

新书榜第一的《图解产品》,帮助内卷中的产品经理实现跨越式发展!

博文视点Broadview

iOS签名校验那些事儿

百度Geek说

后端

腾讯云,五轮面试,六个小时,灵魂拷问,含泪拿下 60W offer

收到请回复

Java 面试 大厂Offer

10 月 30 日 北京 LiveVideoStack 阿里云视频云专场限量赠票 100 张

阿里云CloudImagine

阿里云 音视频 高清视频 视频编解码 视频云

Python代码阅读(第38篇):根据谓词函数和属性字符串构造判断函数

Felix

Python 编程 Code Programing 阅读代码

第六届世界智能大会主题征集活动入选主题公布

InfoQ 天津

华为云企业级Redis:助力VMALL打造先进特征平台

华为云开发者联盟

华为云 云数据库 GaussDB(for Redis) 华为商城 VMALL

Apache APISIX 社区成员助力 openEuler 发布第一个社区创新版

API7.ai 技术团队

开源 openresty openEuler api 网关 Apache APISIX

【万字长文】吃透负载均衡

Java 负载均衡 架构 面试 后端

云小课丨SA基线检查:给云服务来一次全面“体检”

华为云开发者联盟

态势感知 华为云 基线检查 SA 上云合规

秀到飞起!Alibaba全新出品JDK源码学习指南(终极版)限时开源

收到请回复

Java jdk 面试

爱奇艺埋点投递治理实践

爱奇艺技术产品团队

数据治理 埋点 pingback

这几种Java异常处理方法,你会吗?

华为云开发者联盟

Java 数组 异常 程序

这篇 python 文章,是过去你错过的 python 细节知识点,滚雪球第4季第15篇

梦想橡皮擦

10月月更

Vue进阶(幺叁捌):vue 路由传参的几种基本方式

No Silver Bullet

Vue 路由 10月月更

官方线索|2021科大讯飞全球开发者大会

搬砖人

AI 大会 1024我在现场

一周信创舆情观察(9.27~10.10)

统小信uos

无处不在的Kubernetes ,难用的问题解决了吗?

望宸

容器 云原生 PaaS KubeVela kubenetes

阿里大牛珍藏版:高并发系统设计(全彩版手册)带你从基础走向实战

Java 架构 面试 后端 高并发

基于HarmonyOS分布式技术,这群学生赋予冰箱更智能的体验

科技汇

☕【Java技术指南】「技术盲区」看看线程以及线程池的异常处理机制都有哪些?

洛神灬殇

Java 线上程序问题 线程异常 10月月更

关于征集第六届世界智能大会平行论坛活动方案的通知

InfoQ 天津

产业互联网下半场,SaaS平台的机遇与挑战

雯雯写代码

SaaS

怎样才能画出清晰明了的时序图

华为云开发者联盟

接口 模型 UML 系统 时序图

开源许可协议介绍

webrtc developer

TFS团队的敏捷转变:向三周一个Sprint进军_Scrum_Jonathan Allen_InfoQ精选文章