写点什么

你们的 Backlog 是什么颜色?

  • 2010-05-23
  • 本文字数:2455 字

    阅读完需:约 8 分钟

最近在悉尼和惠灵顿举行的软件开发大会(SDC,Software Development Conference)上, Philippe Kruchten 教授作了一篇题为“你们的Backlog 是什么颜色”的演讲,主要内容是把软件架构的重要方面同交付系统的功能组件一起纳入敏捷项目中。

Kruchten 认为:敏捷注重 YAGNI(你不会需要它)、重构以及把决定放到“最后责任时刻(Last responsible moment)”做,这些会带来重要决定做得太晚的风险。对于任何一个项目,总有一些需要尽早作出的关键决策,为正在进行的工作铺平道路——对于这些决策,“最后”责任时刻事实上非常接近项目的开始阶段。

这些关键决策是驱动开发产品架构结构的决策。做出不好的选择(或者做出不慎重的选择),会导致系统无法适应不断变化的业务需求。选择有关系统的架构结构,要在开发过程早期进行考虑。

他说:许多敏捷项目注重功能性需求(以用户故事表达),而忽略架构的方面,抱着不负责任的态度“我们可以以后再重构”,总是过于频繁地把“以后” 放在一边,直到为时已晚。

他举了一个例子:一个采用敏捷方法的金融交易系统。

用户故事已经识别好,发布计划以及开发工作已经启动。最初的几轮迭代取得了巨大成功——功能交付了,客户参与度非常好,而且所做的功能完全符合业务需求。一旦有足够多的功能构成一个“最小的可行产品”,一个发布就会投入到生产环境中,而项目却陷入了绝境——那些已经开发好的功能可以运行,但产品却无法应付实际环境中的交易量。客户不得不重新使用老的系统(还没有被关闭),而开发团队则回去重构产品,以应付真实环境的需要——不幸的是,重构意味着不得不对大部分已经完成的工作进行彻底的重建,唯一可以利用的组件是界面设计。项目最终取消了,而客户的组织非常不情愿再去尝试敏捷。

他并不是建议回去做大的前期设计,只是鼓励大家慎重考虑系统的重要质量方面,并确保架构特性同功能性故事一起考虑。架构特性是由产品的“非功能性”或者质量需求驱动的——诸如性能、可靠性、容量、可维护性、安全性、可用性以及可测性等方面。这些方面会影响产品的架构——一开始就必须设计好它们,而不是事后再去重构。

他承认取得进度的迫切需要——我们不希望开发团队花费 1 或 3 轮迭代,忙于“探索”对用户没有显著价值的东西。他认为,把架构需求编进产品的整体发布计划中是可以做到的,确保在开发产品的时候,架构基础以及实用性功能都构筑起来,并且我们能够同时在日益增长的功能上,以及满足质量目标的能力方面取得进展。因此,例如第一轮迭代可能只能看到一个单一的输入界面,但负载测试会显示系统的那部分组件,将能够应付生产环境的要求。

他提供一种方法,让工作变得可视化,并确保架构需求得到重视,而且与基于可视化的工作一起排列优先级——把颜色代码的概念应用到产品 Backlog 中的各个条目中。

他说,backlog 可能会有四种颜色的工作:

  • 绿色——将要交付的功能特性,功能性用户故事
  • 黄色——支持质量需求的架构基础
  • 红色——确认好的缺陷,需要重视
  • 黑色——开发产品过程中产生的技术债务,推迟的关键决策或者已经完成的劣质工作

图片:Backlog 中的颜色

注意那两个维度——积极对消极价值,可视化对非可视化功能

绿色的部分是可见的功能,在产品 backlog 列表上最为常见——定义了产品中将要交付的功能的用户故事。在最终的产品中,这些对用户是可见的。

黄色部分的工作对用户是不可见的,但它们对整个产品有重大的价值。这些包括要完成以下工作:

  • 架构
  • 基础结构
  • 公共元素
  • 类库
  • 框架
  • 让组件可以重用

黄色(有价值但不可见的工作)部分需要在产品 backlog 和发布计划中明确说明,这样项目的利益相关者可以把它们与可见功能一起排列优先级。

红色部分(可见的缺陷)在产品开发过程中插入——在理想世界中,红色部分会非常少,但假定没有红色部分是很幼稚的。

黑色部分(技术债务)会在黄色部分被忽略时产生;技术债务也可能积累自之前的工作,如果项目基于先前的遗留代码。

建立初始发布计划时,同时计划绿色和黄色部分是很重要的,一心一意专注于可见的功能会导致产品看似完美,但却不能适用于生产环境,或者无法应付真实世界的安全威胁。同样地,单纯关注于黄色部分会把我们带回到大量的前期设计中(big up-front design),而且会导致延迟交付所有可见的价值,那时已为时已晚,缺少客户参与。

他认为,建立发布计划时应同时重视那两部分,就“像一个拉链”——把功能性部分和架构部分编织到一起,就像这幅图:

图:计划发布时,把可见和不可见的价值部分像拉链一样合并到一起

红色和黑色部分(可见的缺陷以及技术债务)不会在最初的发布计划中出现,但它们对项目进行的速率(完成的工作与交付的价值之间的比例)有很大影响。

认定缺陷确实存在时,必须马上予以解决。把它们留到以后解决的话,它们会恶化,并导致重大影响。经过几轮迭代后,团队会大致了解他们的缺陷率,并可以调整计划速率,以确保尽可能在发现新的缺陷前把它们修正掉。

如果项目启动的时候有已知的技术债务,那么计划要做的工作时必须考虑到这一点——遗留代码很可能已经有隐藏的缺陷在那里,而且重构那些代码可能并不容易,因而,再一次的、由于相关产品的质量问题导致交付价值率减少。

开发一个新产品时,没有最初的技术债务,但有引发债务的风险。推迟修复缺陷、忽略黄色部分、延迟关键决策却错过“最后责任时刻”都会导致技术债务的累积,并导致交付价值率的降低。

在项目进行的过程中,识别缺陷和技术债务时,重要的是要让项目团队可以看得到它们——这就是用颜色对 backlog 进行编码的概念。为了展示缺陷以及偿还技术债务,需要在产品 backlog 上加入新的故事。

他强烈建议对主要的故事列表标识颜色编码,以便清楚地表明工作类型——该故事是一个新的用户功能,一个架构组件,一个必须修复的缺陷还是一些需要偿还的技术债务?

通过在你的 backlog 上突出显示一些颜色,并让产品开发的所有 4 个方面都清晰可见,更加实际的项目计划和追踪是可以实现的。


你们的 backlog 中有什么样的颜色——你们使用什么方法,让所有工作变得可视化?

查看英文原文 What Color is your Backlog?

2010-05-23 20:572101
用户头像

发布了 38 篇内容, 共 96614 次阅读, 收获喜欢 1 次。

关注

评论

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

注意!2023,你需要了解这些IT趋势

引迈信息

人工智能 程序员 网络安全 低代码

华秋电子受邀参加产业高峰论坛,探讨电子行业新商机

华秋电子

开源工具系列6:Grype

HummerCloud

分享:ODC 如何精准展现 SQL 执行的耗时?

OceanBase 数据库

数据库 oceanbase

自学黑客/网络渗透,一般人我劝你还是算了

网络安全学海

黑客 网络安全 安全 信息安全 渗透测试

9000字,通俗易懂的讲解下Java注解

Java你猿哥

Java ssm 实战 Java工程师

ChatGPT王炸更新!能联网获取新知识,可与5000+个应用交互,网友:太疯狂了

Openlab_cosmoplat

工业互联网 开源社区 智能制造 ChatGPT

LP流动性挖矿代币分红模式dapp系统开发原理

开发微hkkf5566

3 天交付新需求?极狐GitLab APP 「极限编程 XP」实践

极狐GitLab

DevOps 敏捷开发 CI/CD 极限编程 极狐GitLab

软件测试/测试开发丨app自动化测试之Andriod微信小程序的自动化测试

测试人

微信小程序 软件测试 自动化测试 测试开发

为研发效能度量找到合适的参照系

思码逸研发效能

研发效能 效能度量

谈谈低代码的安全问题,一文全给你解决喽

加入高科技仿生人

软件开发 低代码 信息安全 低代码开发

EasyExcel 带格式多线程导出百万数据

三十而立

Java 互联网 IT

Moblink节省开发者时间精力和公司成本

MobTech袤博科技

智慧公厕管理系统哪家好?

光明源智慧厕所

智慧城市

对话数十位学术合作代表:如何提升前沿技术在商业领域的落地应用?

阿里技术

前沿技术

裸辞底气!GitHub飙升“java面试笔记2023” 了解下八股文天花板

三十而立

Java 互联网 面试 IT java面试

软件测试 |全局变量和局部变量有什么区别?

测吧(北京)科技有限公司

测试

软件缺陷是什么?

测吧(北京)科技有限公司

测试

测试策略与测试手段

测吧(北京)科技有限公司

测试

PCB生产工艺 | 第九道主流程之表面处理

华秋电子

3D模型分割新方法解放双手!不用人工标注,只需一次训练,未标注类别也能识别|港大&字节

Openlab_cosmoplat

模型 开源社区

熟悉的测试用例设计方法都有哪些?

测吧(北京)科技有限公司

测试

面试造火箭?GitHub飙升“2023(Java 岗)面试真题汇总”转载40万

三十而立

Java 互联网 IT java面试

让Web和App无缝链接的移动深度链接方案

MobTech袤博科技

软件测试 | 白盒的测试方法

测吧(北京)科技有限公司

测试

软件测试/测试开发丨app自动化测试之设备交互API详解

测试人

软件测试 自动化测试 测试开发 appium

EasyExcel 带格式多线程导出百万数据(亲测牛逼)

三十而立

Java 互联网 IT 程序猿

HarmonyOS 联合绿盟发布折叠屏软件规范,携HUAWEI Mate X3带来创新折叠体验

科技汇

【3ds MAX 插件】近期发布的几个小插件,总有一款适合你

Finovy Cloud

插件 3ds Max

你们的Backlog是什么颜色?_研发效能_Shane Hastie_InfoQ精选文章