2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:072732
用户头像

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

关注

评论

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

共创、共享、共赢云生态,华为云ECS助力企业轻松上云

IT科技苏辞

助力企业降本增效:华为云ECS,助力企业数字化转型需求

IT科技苏辞

【web 开发基础】PHP中的类和对象(55)

迷彩

面向对象 封装、继承、多态 类与对象 PHP基础

我凭借这份pdf,最终拿到了阿里,腾讯,京东等八家大厂offer

钟奕礼

程序员 Java 面试 Java、 java 编程

Android程序签名打包

芯动大师

Android Studio 打包签名 签名的含义

支持故障自动秒级检测,华为云VPN更省心!

IT科技苏辞

运维训练营第十课作业

好吃不贵

实力是最好的武器!华为云ECS助力企业更好发展

IT科技苏辞

PostgreSQL 技术内幕(四)执行引擎之Portal

酷克数据HashData

postgresql

java程序员:拜托别再问我Spring原理了!你问的这篇文章都有

钟奕礼

程序员 Java 面试 Java、 java 编程

华为云全球加速GA,为企业跨国办公保驾护航

与时俱进的时代

笑对过往、活在当下、期盼未来

阿Q说代码

程序员 flag 年度总结

华为云对象存储OBS,助力企业降本增效

清欢科技

华为云ECS弹性服务器,加快企业数字化转型的进程!

IT科技苏辞

华为云智能云接入ICA,助力企业轻松上云

与时俱进的时代

5分钟搞懂BFF

俞凡

架构 BFF

BAT大厂java程序员面试必问:JVM+Spring+分布式+tomcat+MyBatis

钟奕礼

程序员 Java 面试 Java、 java 编程

8年java技术岗面试官总结:2022超强面试大全,抓住2022的小尾巴

钟奕礼

程序员 Java 面试 Java、 java 编程

数字经济时代,为什么华为云ECS能获得更多用户的青睐?

IT科技苏辞

开启全新身份!华为阅读畅读会员震撼来袭,限时首月9元快来领取

最新动态

2022年度总结:虽迷茫,仍前行

年度总结

无需企业搭建基础设施,华为云弹性公网IP经济实惠又便捷!

与时俱进的时代

解决“双十一”电商行业数据存储难题,华为云OBS值得期待

清欢科技

2022年中国数字文化娱乐产业综合分析

易观分析

产业 文娱

华为云智能云接入ICA,企业数据上云的信赖之选

与时俱进的时代

【web 开发基础】如何调换数组中的键和值(53)

迷彩

数组合并 数组操作 PHP基础 数组整理

如何准备Java技术岗春招面试:史上最全Java核心知识点笔记奉上

钟奕礼

程序员 Java 面试 Java、 java 编程

回顾与展望Zebec举办的“Web3.0 TechHive Summit 2022 大会”

BlockChain先知

【web 开发基础】PHP8中数组的序列化和反序列化(54)

迷彩

数组 对象 序列化 反序列化 PHP基础

出海有“云”!华为云全球加速助力跨国企业提升网络体验

与时俱进的时代

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