敏捷实践 | 好的用户故事怎么写?

《敏捷开发中的「史诗」到底是什么?》中我们解释了如何写好一个大型用户故事 —「史诗」的方法~

本期文章,我们从「写好“小”的「 用户故事」视角着手,深入、准确的理解敏捷开发和团队产出价值~

在深入理解产出价值前,我们先来聊一聊「用户故事」。

用户故事


敏捷是一种基于产出价值的开发方法,「以客户为中心」要求其所有产品功能在得到客户需求、认可后,优先开发。

找出谁是用户尤为重要。一旦所有的用户被识别出来,为他们产出和增加价值的需求就会被记录下来,这样的需求被人们称为「用户故事」。

「用户故事」的背后有一套逻辑,它体现了敏捷开发的核心思想和人们所追求的价值体现。

逻辑是什么?编写的规则又是什么?

「用户故事」背后的逻辑与规则


通常来说,便于开发者创建、跟踪和测试用户需求的格式应该是以下这种:

作为<用户角色>,我需要<某项功能>以便获得<一些好处>

这里的用户指的是角色,如经理、文员、开发人员、图书管理员、业主等等。

好处,指用户将获得的价值,如:经理只需单击一下即可查看审计报告,好处—节省他的时间;店员可以搜索报告,好处—节省时间

图书管理员可以按类别搜索书籍,好处—他可以彻底改善客户服务;业主可以订购设备,好处—省去很多麻烦……

以下是24个用户故事示例,分别描述出不同平台/系统下每个需求对标的用户价值:

作为管理员,我希望我能在需要时为团队创建新用户

作为一名律师,我希望在主屏幕上看到我所有活跃的案件

作为一名学生,我想在黑板上看到我的历史成绩和当前成绩的汇总

作为司机,我希望我的GPS语音被激活

作为一名研究人员,我想看到我所做的最近几次搜索

作为用户,我希望能够恢复我的密码

作为收银员,我希望看到收银机中显示的总金额

作为一名飞行员,我想知道在当前条件下的最佳飞行高度

作为一名警察,我想看看由我开具的历史罚单

作为一名邮递员,我想知道今天投递邮件的估计时间

作为一名吉他手,我想知道我的手指在琴弦上的速度

作为割草机,我希望它能避免将刀片撞到坚硬的东西

作为一名跑步者,我希望心跳不规则时能被警告

作为一个盲人,我希望在路上遇到障碍的时候能被提示

作为信用卡用户,我希望当花费超过设定金额的时候会被提醒

作为一个孩子,我想把不活跃的玩具店都关掉

作为一名司机,我希望得到轮胎压力最大值时的报警

作为一名学生,我希望每天早上都能提醒我的课程表

作为一名经理,我想在计划时进行假设分析

作为测试人员,我希望看到分配给我的所有错误状态

作为机票预订者,我希望在飞机满载的第一时间就能收到通知

作为一名作家,我希望我的作品每隔几秒钟就能自动保存

作为读者,我希望看到过去2周内最畅销的书籍列表

作为一名厨师,我想看看访问量最大的食谱

以上这种编写用户故事的方式能让大家更直观的看到彼此的工作效益,然后根据用户故事的大小、需求内容、价值排序等预先排期,安排工作量。了解清楚这些,开发小组才能顺利开展接下来的工作。

在编写「用户故事」的过程中遵循 INVEST 原则,它是由6个英文单词的首字母拼在一起而成,它们分别是:

IIndependent

独立的:每一个用户故事都应尽可能独立以保证它们可单独开发和交付

N–Negotiable

可协商的 :应有可协商的空间,便于进一步讨论

VValuable

有价值的 :用户故事以为客户增加价值为结果导向

EEstimable

可估计的: 用户故事应可以被划分为不同大小的工作量

SSmall

小的 :不宜过大,每一个用户故事通常应该在40小时的工作内完成

TTestable

可测试的 :必须要有可验收完成的标准来确保其可被测试和确认完成

抽丝剥茧、 用户故事 传达了哪些信息?


这是一张用户故事动画版示例图,在图中它标注了以下几项信息:

  • 故事的唯一标识-story number,表明其在产品需求文档中的位置
  • 完整的需求描述-description,参照上面的撰写格式
  • 预估故事点数-estimated story points,方便开发团队评估工作量和排列优先级
  • 变化因素-exploration factor,描述了需求的不确定性程度,这个值可以是完整的、不完整的、动态的、稳定的等等
  • 故事类型-story type

除了图中标注出来的信息,完整的用户故事文档还应包含责任人、执行人、截止日期、需求反馈等这些关键信息。每一个用户故事卡片写好后,就可以按照未开始、进行中、已完成等节点,展示在项目开发的进度看板上,以便让团队更好地完成协作。

有关看板和Kanban的区别,小编记录在这里了,感兴趣的童鞋可点进来看看《分不清Kanban和看板的人只剩你了……》


「用户故事」的编写法则与敏捷开发的核心要义紧密相连,想要掌握清楚敏捷之法,可以从写好一个「用户故事」入手,其价值,开发方法、敏捷观念尽在其中~想要了解更多敏捷之道可点击关注 LigaAI 新一代智能研发协作平台,线上申请体验我们的产品,或关注我们的团队博客~

本文来源: Yodiz