原文摘自http://www.360doc.com/content/17/0213/14/30350201_628677923.shtml

小P说

复杂需求用户故事拆分可遵循3个原则、9种方法。

像惠普和中兴通讯这样的大型跨国公司都有规模庞大的研发组织,建立了敏捷教练团队,并在研发组织中广泛推广敏捷项目管理。我曾经在这两家公司参加了敏捷项目的咨询和实施,接触到的不少客户是电信、金融、能源等大型企业。用户需求往往非常复杂,掌握复杂需求用户故事的拆分方法非常关键,这直接影响敏捷项目的成败。具体说来,复杂需求用户故事拆分可遵循3个原则、9种方法。

3个原则

INVEST原则

拆分用户故事要遵循比尔·维克(Bill Wake)的INVEST原则,即一个合适的用户故事应该是独立的(Independent)、有价值的(Valuable)、可讨论的(Negotiable)、小的(Small)、可估算的(Estimable)和可测试验证的(Testable)。

二八原则

根据帕累托原则也就是二八原则,一个迭代80%的价值可能来自于其中20%的用户故事。假如有两种故事拆分方式,当第一种拆分方式将低价值部分拆分成独立的故事,而另一种拆分方式没有做到时,就意味着后一种方式把浪费隐藏到了每个小故事里。此时,应当选择前一种拆分方式,这样可以把低价值的故事直接作废或推迟实现。

  

二八原则的验证方法是:在拆分后的一系列故事中,高价值、中价值、低价值的故事要一目了然,要能很明显找到一个实现它可以得到高价值或能降低大部分风险的故事。

故事适中原则

故事太大不好。故事太大,里面内容庞杂,头绪太多,可能导致无处下手或在一个迭代内无法完成。“小”这一特性要求我们拆分大的故事。但拆分故事时依然要遵循INVEST原则。

  

故事太小也不好。比如有的敏捷团队太过细分故事:对于数据库建一个故事、对于UI建一个故事等,这样虽可以满足“小”这一特性,但它却不是“独立的”和“有价值的”。

  

故事应该要多小呢?建议每个迭代6~10个故事,当然故事拆分的颗粒度取决于项目团队的生产效率。对很多团队来讲,当一个用户故事庞大到8个甚至13个故事点的时候就需要进行拆分了。

  

建议每个迭代内的用户故事的故事点数差别不宜太大,拆分后得到的故事最好规模差不多大。把一个8点的故事拆分成4个2点的故事比拆分成5点和3点的故事更有用,因为PO能更自由地编排优先级。

9种方法

理查德·劳伦斯(Richard Lawrence)和他的团队总结出故事拆分的9种经典方法。

简单/复杂

假如团队正在讨论的某个故事变得越来越大,我们可以停下来并提问:“可以工作的最简单版本是什么?”捕捉这一简单版本作为一个单独故事,然后把所有变体和复杂性拆解到它们各自的故事中。

  

例如,作为手机用户,我希望在开机状态下系统能尽可能地寻呼到我,以便我不错过任何电话。故事1,……系统能记录我最近活动过的小区进行寻呼……故事2,……系统能记录我最近活动过的三个小区进行寻呼……故事3,……系统能记录我之前所在MSC进行边界寻呼……

推迟性能实现

不要太早考虑性能要求,我们常常忘了“让它工作,然后让它更快”这个原则。

  

比如我们会有这样一个用户故事:作为用户,我希望能够在1秒内获取查询结果。可能这个1秒的优化会花去我们很多时间,而且优化后由于其他模块的影响,查询速度可能再次变慢,所以我们可以尝试拆分成以下故事:故事1,作为用户,我希望能够获取查询结果。故事2,作为用户,我希望查询结果能够在1秒内获取。把故事1放入早期迭代,故事2可以尽量晚一些,在交付前完成,以排除其他模块可能带来的影响。

基于工作流步骤进行拆分

识别出用户为完成具体工作流采取的特定步骤,然后通过一些增量阶段实现工作流。如果已经能画出具体场景的流程,则可以先从工作流程拆分。该方法也叫作最简路径法,即先拆出最简路径,再基于最简路径添加步骤,直到覆盖完整路径。

接口可变性

对于需求中业务流程和逻辑规则相同,仅涉及接口不同,也就是获取数据的渠道和方式不同,我们可以基于接口的差异进行故事拆分。

  

例如,作为微信用户,我可以添加好友以便扩大朋友圈。故事1,……我可以通过摇一摇方式添加好友……故事2,……我可以通过扫二维码方式添加好友……故事3,……我可以通过手写输入方式添加好友……

主要投入

根据主要投入或工作量来拆分故事。有时一个故事可以分为几部分,大部分的工作将用于实现第一个故事。

  

例如,一张信用卡处理的故事:作为一个用户,我可以用维萨、万事达、大来卡或美国运通支付航班费用。这个故事可以分成四个故事,每个卡型作为一个故事。但是首先实现第一种信用卡付费的工作量最大。一旦第一种信用卡能付费,再增加其他信用卡,其工作量就小很多。所以信用卡处理基础设施应该以支持第一个故事为目的进行构建,在以后添加更多的功能则相对简单。

  

我们只需要拆为两个用户故事:故事1,……我可以使用一种信用卡付费(维萨、万事达或美国运通中的一种)……故事2,……我可以使用所有三种信用卡付费(假定其中一种已经支持了)……这两个新的故事仍然不是独立的,但要比为每个卡型写一个故事依赖关系更清晰。

业务规则可变性

针对需求中固定的流程加载不同业务规则的情形,我们按照业务规则拆分故事。

  

例如,作为网站用户,我希望A网站能提供热门推荐以便我可以更快找到感兴趣的内容。故事1,……能根据帖子数量给出热门频道推荐……故事2,……能根据发帖数给出热门作者推荐……故事3,……能根据回帖数量给出最多评论推荐……

业务操作

有些用户故事使用了“管理”、“控制”等词汇,它掩盖了对故事执行的多种操作,大的用户故事可以基于不同类型的操作进行故事拆分。

  

例如,作为系统管理员,我希望能够管理使用系统的用户。通过与系统管理员沟通,了解到他希望能够增加使用系统的用户,也能够将不再使用系统的用户(如离职、更换部门等)删除,那么我们可以将用户故事拆分成下面几个更小的故事:故事1,作为系统管理员,我希望能够添加新用户,使其能够使用系统。故事2,作为系统管理员,我希望能够查询当前系统都有哪些用户。故事3,作为系统管理员,我希望能够修改用户的信息,方便我管理用户。故事4,作为系统管理员,我希望能够删除用户,保证只有必要的人在使用系统。

数据多样性

我们可以根据数据类别进行拆分。比如我的用户故事是:作为用户,我希望能够查看系统的警告通知。我们系统警告通知有很多类型,各种警告的内容差别很大,那么我们可以把这个大故事拆分成以下几个小故事:故事1,作为用户,我希望能够查看系统的异常流量警告通知;故事2,作为用户,我希望能够查看系统的恶意代码警告通知;故事3,作为用户,我希望能够查看系统的僵尸网络警告通知。

故事穿刺

故事穿刺其实就是摸着石头过河。一个故事比较大不一定因为它复杂,而是由于我们对实施知之甚少。在这种情况下,再多的讨论也不能让我们知道如何拆分它。我们可以在一定时间内针对怎么实施,先做个探针试验。试验过后,知道了深浅,揭开了面纱,我们往往就可以知道如何拆分它了。 

例如,作为用户,我可以用信用卡支付。然后,把它分成:故事1,调查信用卡数据处理机制;故事2,实施信用卡处理。

探针模式放在最后,因为它应该是你的最后手段,所以在采取探针模式之前尽量去使用前八种方式。

结语

需要强调的是,面对庞杂的用户需求,我们在拆分用户故事时不能单纯使用一种方法,而是应该综合运用上述技巧。这些拆分方法需要多练多用,才能熟能生巧,运用之妙,存乎一心,最终达到庖丁解牛的境界。

如何拆分复杂需求的用户故事?这些必杀技GET相关推荐

  1. 实例化需求:用户故事拆分的更好线索

    GitChat 作者:吴穹.雷晓宝.张刚 原文:实例化需求:用户故事拆分的更好线索 关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 [不要错过文末彩蛋] 用户故事拆分是敏捷实施的入门实 ...

  2. 用户故事拆分方法总结

    如何拆分用户故事 一.用户故事的定义 二.拆分用户故事的目的 三.用户故事拆分原则 四.用户故事拆分方法 1.工作流 2.操作 3.业务规则 4.数据 5.用户界面 6.主要工作 7.简单复杂 8.性 ...

  3. 敏捷开发中如何写好用户故事?

    什么是用户故事? 用户故事(user story)是一个用来确认用户和用户需求的简短描述,作为什么用户,希望如何,这样做的目的或者价值何在.用户故事在软件研发中又被描述为需求.用户故事通常的格式为:作 ...

  4. 「用户故事」竟然还可以这样写!?

    本文来自作者 刘华 在 GitChat 上分享「用户故事还可以这样写」,「阅读原文」查看交流实录 「文末高能」 编辑 | 娜美 用户故事很重要 用户故事很重要,是实施敏捷开发和持续交付的重要开端. 所 ...

  5. 20200510-读后感-用户故事地图-1.什么是用户故事地图以及有什么用

    读书的目的:敏捷教练的目的是为了改善团队研发能力和质量,可以交付更符合客户要求的有价值的产品: 所以读书的时候要带着这么一个问题,就是这里面哪些点,可以应用到工作当中去. 用户故事地图的目的是架起开发 ...

  6. 如何对一个产品编写完整的用户故事?

    用户故事是敏捷项目管理的核心实践之一,除了定义.表达"公式",本文将给大家分享用户故事的价值,比如用户故事在非技术的角度告知研发团队需求背景是什么,让研发团队更轻松的了解用户需求场 ...

  7. 敏捷开发中,团队成员认领的是任务还是用户故事?

    一次敏捷workshop上,有同学问:"敏捷软件开发中,团队成员自己主动认领的,是用户故事还是被分解成的任务?"同学们一时讨论热烈. 稍具敏捷开发实践经验的同学都应该知道,答案是- ...

  8. 如何简单高效的创建用户故事地图?

    或许您也遇到如下的问题: 1. 这个产品大概有哪些主要功能? 2. 不知道每个迭代什么时候发布,更不知道每个迭代要做哪些功能? 3. 某个功能能给客户带来什么好处? 相信读完这篇文章之后可以回答这些问 ...

  9. 软件测试用户故事评审实验报告,手把手教你写用户故事验收标准

    用户故事验收标准的定义 "验收标准"和"满足条件"交替使用,可以清晰的定义价值主张.用户流程或解决方案的特点. 验收标准可作为测试用例的催化剂,应该是可验证的, ...

  10. 怎么用leangoo做需求管理?(用户故事地图)

    用户故事是在敏捷开发中表达需求的主要方式,我们在做敏捷开发的时候都有需求池的概念,在Scrum中这个需求池就是产品backlog,需求池里面是条目化的需求,每一条通常是一个用户故事.按照Scrum的定 ...

最新文章

  1. 自定义监听器 java
  2. python天天向上的力量 A
  3. 【解题报告】Leecode 500. 键盘行——Leecode每日一题系列
  4. 男人最佳的生育年限,程序员们,看看吧!!!
  5. 妹子每天加班1分钟,半年崩溃!向公司索赔55万!
  6. 墨天轮章芋文:用十年打造中国的数据库生态体系
  7. ACOUG China Tour 2019上海站,等你来约!
  8. 【IT历史】SP和CP
  9. 新版贵金属喊单直播间 财经直播间系统 视频直播室在线喊单 源码
  10. 最好用的卸载软件工具(Your Uninstaller! PRO)
  11. iOS高仿app源码:10天时间纯代码打造高仿优质《内涵段子》
  12. centos8 配置DNS服务
  13. dedecms5.7(织梦)源码解析之程序安装补全篇
  14. TLR4助力攻克脑血管难题 | MedChemExpress
  15. 各种快递API接口—爱快递
  16. 大写字母转化小写字母
  17. 笔记本电脑属于个人计算机吗,黄真真:笔记本电脑属于个人计算机的一种形式莫?...
  18. SCI论文阅读-深度学习在测井气体红外光谱定量分析中的应用
  19. 【机器学习系列】概率图模型第一讲:从概率和图的角度理解概率图模型
  20. 安装 Unity 个人免费版

热门文章

  1. 安装sql2017时提示Polybase 要求安装Oracle JRE 7更新51 (64位)或更高版本”规则失败...
  2. 同济大学高等数学第7版视频
  3. 几款引擎比较:BigWorld,Unreal,CryEngine等
  4. Google Play 应用上架流程
  5. joystick手柄驱动安卓_万能手柄驱动(PPJOY) 官方版 (图文)
  6. attachEvent与addEventlistener兼容性
  7. 多周期MIPS CPU硬布线控制器设计
  8. 《SPSS统计分析与行业应用实战》之序言
  9. java舆情分析_java毕业设计_springboot框架的舆情监测系统
  10. 计算机加域后数据库无法登录,客户端多台计算机登录域失败,显示如下