假如需求拆分像切蛋糕一样简单 | 敏捷实践

上周的文章中,我们了解了用户故事的 INVEST 原则,以及研发需求拆分的两个标准:

  • 大需求拆分的终点是用户故事,而故事要能在一个迭代中完成;
  • 用户故事下的开发子任务应尽量满足 0/1 判断标准,且工作量建议设置为 0.5~1 人/天。

本篇内容,Liga 将进一步介绍需求拆分的两种常见方式和具体拆分流程。

一、 需求拆分的两种方式


01 水平切片 Horizontal Slice

如果将一个史诗级需求视作一个千层蛋糕,那么水平切片意味着将千层蛋糕逐层分解,每个人只能吃到其中某一层的味道。

在传统研发工作中,人们通常会按照职能和组织架构,将整个需求横向地拆分成「每个职能小组的任务」,且每部分工作只被对应层次的成员所理解。例如:

任务 1:创建新的数据库表格

任务 2:创建传输协议

任务 3:创建 DAL 以访问存储过程

任务 4:构建 UI/UX 页面

研发需求的水平切片示意图.png

02 垂直切片 Vertical Slice

需求的垂直切片则像是将大蛋糕纵向切分成一块块小蛋糕,每块小蛋糕都能尝到「千层」的完整口感。

垂直切片要求将完整需求分解成若干个小但有价值的、可独立交付的用户故事。 每个故事只交付需求中的部分价值,但需要每个切片始终包含完整的开发架构,且能被小组的全体成员知晓和理解。

以「重构账户管理功能」为例,它可以被垂直切分成多个用户故事,交付多个价值:

故事 1:用户可以拥有多个账户

故事 2:用户可以更换账户头像

故事 3:用户可以查看头像使用的历史记录

故事 4:用户可以添加邮箱作为联系方式

研发需求的垂直切片示意图.png

03 垂直切片更适合敏捷开发

在之前的文章中我们说过,敏捷开发更适用于需求多变的、功能耦合度低的、价值可持续叠加的项目,或迫切需要推进市场反馈和验证的产品。👉点击回顾:敏捷之道 | 敏捷开发真的过时了么?

水平切片将需求横向地拆分成了各个架构层中的开发任务。对软件团队来说看似清晰,但每个部分的任务并不能独立交付给客户,不同任务间存在很强的依赖性。

如果采用这种不甚符合 INVEST 原则的需求拆分方式,又想要试行敏捷开发,就可能遇上许多问题:

  • 难以统一工作目标:每个职能小组仅从自身具体工作出发推进工作,难以就「用户价值」认知达成统一,堆高团队沟通成本;

  • 优先级排序难度加大:敏捷方法的核心就是持续滚动的优先级评估和价值排序,但横向切片带来的高耦合度,使得各项工作不仅有时序依赖,还难以量化价值和优先级,进而导致团队的交付速度下降,甚至会严重影响企业的市场竞争力;

  • 试错成本提高,项目风险不可控:由于水平切片的任务无法独立交付,管理者和业务相关方很难在项目过程中根据已完成的工作判断推进方向的正确性,或者及时察觉架构中存在的问题。这不仅增加了开发团队的试错成本,更可能因为无法响应市场的快速变化,而承担更大的项目风险。

为了避免上述种种问题,做到目标统一、灵活应变、降低试错成本、提升交付效率,敏捷团队势必要采用全新的方法,打破组织架构间的「隐形墙」,更快地向用户提供价值。

比方说:将完整的功能需求拆分成多个可独立交付价值的用户故事。这正是敏捷开发中的最佳实践——垂直拆分。

二、 需求拆分第一招:SPIDR 框架


敏捷教练兼 Scrum 联盟的联合创始人 Mike Cohn 指出:“几乎所有需求都可以通过五种方法完成拆分”。他用首字母缩略词「SPIDR」总结了这五种方法。

20220714 Spidr.png

01 Spikes 探针

Spike 探针,或称技术预研,通常指功能的小型原型实现,或是对新技术的调研和可行性评估。

探针法通常适用于需求不明确或太复杂,团队需要更多信息以供决策的情况。通过技术预研充分理解需求内涵,快速探知可能的技术方案,初步判断工作量,以支持需求的细化拆分。

02 Paths 路径

如果完整需求存在多个实现路径或场景(通常由 和/等/或 等描述词体现),那么拆分时不必遍历所有情况,只需要选取部分路径并将它们编写成用户故事即可。

举个例子🌰:线上购物的用户可以使用银行卡或三方支付完成订单支付

根据「或」的描述,可以将该需求拆分成两个场景「使用银行卡完成支付」、「使用三方渠道完成支付」。进一步细化会发现,三方渠道也有多个实现路径,比如直接对接支付宝、微信,或采用聚合支付手段等等。

路径法指出,当需求存在多个实现路径时,无需遍历所有路径,只需要交付最有价值的部分路径即可。所以,假设我们通过评估认为,率先支持微信支付,开发工作量小且带来的用户价值高,那么整个支付功能就可以作如下拆分:

20220714 Spidr-路径.png

03 Interfaces 接口

当完整需求横跨多种客户端或者数据交互接口时,可以根据接口的多样性进行需求拆分。

例如,客户端可以分为移动设备和浏览器两大类,移动设备可以分为 iOS 系统、Android 系统等,而浏览器又可以分为 Chrome、Edge、Firefox等等。为了避免工作量过于庞大和繁琐,在实际应用中更常见的做法是,按照「可支持」和「暂时无法支持」两类来规划此类故事。

第二种情况是依据不同的数据操作接口进行拆分,例如在实现数据导入功能时,可能需要支持多种文件类型(Word,Excel,CSV)的导入,那么每一个不同的数据接口的实现都可以是一个独立的用户故事。

第三种情况基于不同的界面交互方式,递增拆分需求。如下图所示,在后台数据类型不变的情况下,根据工作时间、任务紧急程度以及客户接受程度等判断条件,将「精美的操作界面」交付分为两个故事进行:

  • 先交付「一个简单的 UI 」,向客户提供「可用」的界面(如左图所示);
  • 补充一个持续优化的故事「使用户界面更加精美」,向客户提供更极致的 UI 与体验(如右图所示)。

20220714  spidr-借口.png

图片出自 Bruce Wong 个人博客:https://brucetalk.com/2020/09/26/split-userstory/

04 Data 数据

依据不同的数据类型或者数据来源,拆分大型需求;通过专注于数据子集的功能实现,实现更简单的用户故事交付,是非常有效的方式。敏捷团队可以在一个迭代周期内只专注于一种数据类型的实现,交付价值。

05 Rules 规则

一些业务逻辑中会带有很多规则限制,敏捷团队可以按照业务规则和技术标准对用户故事进行拆分。

在时间紧、任务重的情况下,逐步实现对技术规范或业务规则的适应,是有意义的。这可以帮助团队快速试错、快速交付、获得用户反馈,之后再基于反馈进行逐步迭代,完善对应的业务规则,并达到相应技术标准。

三、Liga 总结


  1. 垂直切片更符合敏捷开发的要求。研发团队应该将大的需求纵向切分成多个小的、可独立交付价值的用户故事。

  2. 敏捷需求拆分框架之一:SPIDR。通过使用探针法、路径法、接口法、数据法和规则法,可以将大的需求拆分成符合 INVEST 原则的用户故事。

在下一篇文章中,Liga 将继续带来研发需求垂直拆分的第二招:用户故事切分流程图。请持续关注 LigaAI 动态。

阅读更多「LigaAI」的趣味分享与敏捷实践… 请关注 LigaAI@CSDN,持续接收更多干货分享~ 进一步了解我们的产品,请访问 LigaAI -新一代智能研发协作平台

相关推荐

研发团队的「技术债」如何进行量化管理?

技术债或许是所有研发团队都难以避开的课题。面对不可避免的技术债务,我们又该如何科学、恰当地管理和控制它?

LigaAI的博客 1593

技术分享 | SpringBoot 流式输出时,正常输出后为何突然报错?

最近在一个 SpringBoot 项目中遇到了一个很有意思的问题:正常通过过滤器和拦截器的线程变量,在正常输出后突然报错。这是咋回事?

LigaAI的博客 2280

用 MVP(最小可行性产品) 做低成本快速验证,为什么不灵了?| Liga译文

有数据称,九成的初创公司在成立五年内将走向失败。难道号称能快速验证市场的 MVP(最小可行性产品)失效了吗?

LigaAI的博客 1303

技术分享 | 弹窗开发中,如何使用 Hook 封装 el-dialog?

本文将分享如何使用 useDialog Hook 封装 el-dialog,实现更灵活、更易用的弹窗组件。

LigaAI的博客 1508

LigaAI x 极狐GitLab,共探 AI 时代研发提效新范式

LigaAI 和极狐GitLab 达成战略合作,联手打造 AI 赋能的一站式研发效能解决方案,共探 AI 时代研发效能新范式。

LigaAI的博客 1403

精彩回顾 | 「AI 驱动增长,研发数智化升级」分享沙龙成功举办

AI 应用元年,人工智能技术将如何助力企业发展新质生产力,构建增长动能?

LigaAI的博客 848

LigaAI 的 8 个年度关键词 | 2023 年度盘点

一起盘点回顾 2023 年的精彩文章!

LigaAI的博客 1241

我的效率自救之路:对低效的会议说“不!”

如果你也陷入了「会议 - 效率」悖论怪圈,一定不要错过这篇经验分享!

LigaAI的博客 1220

宁波银行:在「金融科技」引擎上,沉浸式提效减负

金融科技企业如何利用有限的研发资源,发挥更高的能效,创造更高的商业价值?

LigaAI的博客 1353

ChatGPT API 调用总超时?破题思路在这 | 技术分享

本文使用 monkey_patch 方式重写 API 参数,解决 ChatGPT API 调用超时问题。

LigaAI的博客 2089

技术分享 | 在 IDE 插件开发中接入 JCEF 框架

本文分享如何用 JCEF 框架解决 IDE 插件开发中“代码难复用”、“用户体验难统一”等问题,释放研发资源。

LigaAI的博客 3673

准「AI 时代」下,如何衡量程序员的工作效率和生产力?

都夸 AIGC 好,说 AI 工具可以提高工作效率,但是你真的知道如何判断和衡量 AI 工具对组织的影响吗?

LigaAI的博客 872

SaaS 出海,如何搭建国际化服务体系?(三)

SaaS 企业出海,跨国、跨时区的异步团队如何展开高效的协作与工作?

LigaAI的博客 516

SaaS 出海,如何搭建国际化服务体系?(二)

SaaS 出海潮下,不同规模的企业如何搭建并落地国际化服务团队?

LigaAI的博客 542

SaaS 出海,如何搭建国际化服务体系?(一)

SaaS出海潮下,一个主要由中国人构成的团队在推进海外产品落地的过程中,可能会遇到哪些困难?

LigaAI的博客 621

生成式 AI 如何释放开发者的生产力?

技术管理者有望通过 AIGC 应用,大幅缩短四类关键开发任务的完成时间,进而提升组织生产力。

LigaAI的博客 613

新晋技术管理者如何推动组织变革?

技术管理者通过系统流程、行为和奖励三个重要工具,能够积极推动组织变革,优化团队工作方式,并改善成员评估体系。

LigaAI的博客 419

向上管理:三个技巧,教会你如何与上级、老板高效协作

向上管理是什么?刻板印象中,它总与“职场政治”、“拍马屁”、“奸逆之臣”密不可分,但本文将向你展示向上管理的全新打开方式:领导资源化。

LigaAI的博客 668

如何提高技术领导力?与你分享 5 个心得

「如何培养和提高技术领导力」是开发者成长旅程中最重要的命题之一。无论你想成为技术专家,还是技术管理者,都能从本文获得可复制的实践经验。

LigaAI的博客 1066

产品路线图如何制定?斯坦福大学产品管理课程为你支招

一个合格的产品路线图依赖哪些输入?需要输出哪些信息? 本文将与你分享,笔者在斯坦福大学产品管理课程中习得的路线图管理方法。

LigaAI的博客 534

「程序员转型技术管理」必修的 10 个能力提升方向

本文将为有意走向技术管理的开发者们,提供 10 条具象的成长和转型建议,但别忘了,技术管理转型并不是开发者的唯一出路。

LigaAI的博客 584

产品管理经验分享:删掉 500 个产品待办事项后,我逃离了「假敏捷」

灵魂三问:你的产品待办列表中有多少项工作? 最早的一项在什么时候被创建?列表中有多少维护过但从没进入迭代的待办事项?

LigaAI的博客 337

如何用 NPS 确定研发优先级,打破技术与业务的次元壁?

VUCA 时代下,研发团队应当如何培养、平衡客户视角与商业视角,专注于价值交付,避免陷入「僵尸 Scrum」困境?

LigaAI的博客 402

这 4 个系统可靠性评估指标,可能比 MTTR 更靠谱!

VOID研究报告指出,对复杂的软件系统而言,MTTR 可能不是一个合适的可靠性管理指标。这是怎么回事?

LigaAI的博客 516

LigaAI:从效率、度量和价值维度,成为研发团队的智能医生

「拿不到团队数据」和「无法衡量研发价值」是困扰千万研发团队的难题,LigaAI 将以 AI 为矛,打破定式,以全新的方式赋能研发管理。

LigaAI的博客 443

高绩效团队的 5 个优秀习惯,看看你占了几个?

卓越的团队不一定在才能、技术或者机会上比别的团队更具优势,但是好的工作习惯和工作方式一定会让他们脱颖而出。

LigaAI的博客 354

研发质量指标大 PK:MTTR vs MTBF,谁是靠谱王?

研发管理中,「提高代码/测试质量」更重要,还是「提升故障响应能力」更重要?今天我们从管理指标量化的角度展开解读。

LigaAI的博客 724

介绍 9 个研发质量度量指标

研发质量度量指标中的 MTTR、MTBF、MTTF、MTTD、MTRS 都是什么?今天一次性讲清楚!

LigaAI的博客 1783

3 个技巧,让你像技术专家一样解决编码问题

于开发者而言,比学习语法更重要的,是用代码解决实际问题。本文从技术专家解决问题的技巧出发,提出了三个帮助开发者提升复杂问题解决能力的方法。

LigaAI的博客 904

ChatGPT 之后,B 端产品设计会迎来颠覆式革命吗?| Liga妙谈

ChatGPT 掀起了国内的大模型革命,当一部分先行者正在努力探索中国 LLM 的形态,LigaAI 关心起了 GPT 类人工智能在 B 端产品的落地与影响。

LigaAI的博客 1693
上一篇: 任务拆分中的「敏捷刺客」,你中招了吗?| 敏捷实践
下一篇: 研发需求拆分的全流程详解 | 敏捷实践
LigaAI
LigaAI 企业官方账号 企业官方账号
博客等级 码龄6年 258粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值