什么是用户故事及用户故事在敏捷开发中如何编写
用户故事(user story)是从用户的角度来描述用户渴望得到的功能。一个好的用户故事包括三个要素:
1. 角色:谁要使用这个功能。
2. 活动:需要完成什么样的功能。
3. 商业价值:为什么需要这个功能,这个功能带来什么样的价值。
用户故事通常按照如下的格式来表达:
英文:
As a <Role>, I want to <Activity>, so that <Business Value>.
中文:
作为一个<角色>, 我想要<活动>, 以便于<商业价值>
举例:
作为一个“网站管理员”,我想要“统计每天有多少人访问了我的网站”,以便于“我的赞助商了解我的网站会给他们带来什么收益。”
需要注意的是用户故事不能够使用技术语言来描述,要使用用户可以理解的业务语言来描述。
用户故事来描述产品需求是敏捷开发实践必须学习和转变的第一项工作,最经典的三段论,“作为一个…(角色),可以<能够>…(功能),以便…(客户价值),这个语法很好地表明了需求的三个最重要的要素:角色,功能,客户价值。
为什么需要角色,
1. 有利于特定的用户核实,有一个“角色“字段,都令沟通工作可以与适当的角色进行,完成的产品自然也就令这些角色的人员满意。
2. 有利于开发人员理解场景,角色与“普通用户/管理员/执行人“这些区别,可以使开发人员更容易理解产品的用户,风格、操作人员的熟练程度、操作习惯。
功能描述最好遵从以下两条规则
1. 主语-谓语原则
比如,作为一个会议系统管理员,可以显示所有用户的提问,以便。。。。
是不是别扭,对可以转换成“可以查看所有用户的提问“,这样是通过角色+谓语的方式来描述
2. 动宾词组原则
在功能动作描述的时候,尽量采用动词+宾语的描述,如新建用户,查看所有评论等。
所以对于功能的描述应该是: 把角色作为主语,功能主题的描述采用动宾结构。
用户价值
用户价值看似很简单,但是其实是很难写,而且很重要。
如:作为会议管理员,可以查看所有用户的提问,以便了解哪些用户发表的评论。看上去这种价值描述不错。但是如果系统只是为了查看的话,会议管理员为什么要查看?如果评论很多,他如何查看?
所以用户故事的价值描述,给需求分析做了一些价值挖掘的要求,团队要去挖掘角色做这一动作的价值,要为角色挖掘出必要且合理的理由。
用户故事作为需求分析和研发的依据,是在敏捷开发实践过程中首先需要去实践的一个重要环节,看似简单的用户故事,在实际操作中是相对困难的,如何从传统的功能描述转变成客户和研发团队都能理解的用户,这里有很多技巧。包括如何确定角色,用户故事颗粒度,用户故事的评估等问题。
推荐大家一本书科恩(美)的《用户故事与敏捷方法》。
什么是用户故事及用户故事在敏捷开发中如何编写相关推荐
- 敏捷开发中如何写好用户故事?
什么是用户故事? 用户故事(user story)是一个用来确认用户和用户需求的简短描述,作为什么用户,希望如何,这样做的目的或者价值何在.用户故事在软件研发中又被描述为需求.用户故事通常的格式为:作 ...
- 敏捷开发中史诗故事与用户故事的颗粒度
作者:陈勇 出处:blog.csdn.net/cheny_com 用户故事的颗粒度一直是一个谈论已久的话题,但参加了很多研讨会,搜索了很多网络资源后发现一直没有定论,只好在这里原创一下. 前言:为何需 ...
- 敏捷开发中,团队成员认领的是任务还是用户故事?
一次敏捷workshop上,有同学问:"敏捷软件开发中,团队成员自己主动认领的,是用户故事还是被分解成的任务?"同学们一时讨论热烈. 稍具敏捷开发实践经验的同学都应该知道,答案是- ...
- 敏捷开发中的故事点到底是什么?如何预估故事点?
故事点 是敏捷项目管理和开发中的一种抽象的度量单位,用于估计实现一个或多个用户故事的复杂度,它是对工作量的一种描述方式.一个故事点就是一个数字,透过这个数字告诉整个团队用户故事的复杂度.复杂度包括功能 ...
- 项目中站立会议和故事墙的那些事儿—敏捷开发
项目组一直在推敏捷开发,但发现一个关于每日例会的问题. 场景: 每日例会是早上9:00, 把大家召集起来,这时有个主持人(每日轮流), 一个一个询问团队成员昨天做了什么,今天做了什么, 并记录在一个本 ...
- [转]猪和鸡的故事—谈谈Scrum敏捷开发中的角色和关系
让我们来看这么一个故事: 一天,一头猪和一只鸡在路上散步 鸡看了一下猪说:"嗨,我们合伙开一家餐馆怎么样? 猪回头看了一下鸡说:"好主意,那你准备给餐馆卖什么呢?" 鸡想 ...
- 如何面向用户价值编写敏捷开发用户故事
敏捷开发中的用户故事采用的语法模式看似简单,却蕴含着深刻的思想. "作为一个--,可以--,以(以便)--"不同于一般专注于功能的需求条目描述方法,三个--把角色.功能.价值跃然纸 ...
- 敏捷开发用户故事系列之二:如何面向客户价值编写故事
这是敏捷开发用户故事系列的第二篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九) 敏捷开发中的用户故事采用的语法模式看似简单,却蕴含着深刻的思想. "作为一个--,可以--,以(以 ...
- 敏捷开发用户故事系列之九:开发与跟进
这是用户故事系列的第九篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九) 产品负责人常常被描述成在计划会前准备好用户故事,在计划会上讲解并帮助开发团队估算后就万事大吉,只等月底接收" ...
最新文章
- 模拟信号可以传输声音和图像,那么文字呢--信息论系列
- Linear regression with one variable算法实例讲解(绘制图像,cost_Function ,Gradient Desent, 拟合曲线, 轮廓图绘制)_矩阵操作...
- 【控制】影响系统响应的因素
- VC6导入和使用二进制资源
- java单元测试内存数据库_基于内存数据库的单元测试
- CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)
- 使用anaconda
- nginx启动重启停止
- 通配符?子字符串匹配主字符串次数_leetcode 44 通配符匹配(c++)
- uwsgi怎么启动停止
- IE8_XP安装包.zip
- 调用DB2存储过程出现错误
- 神仙软件商店:到这儿买软件会员最多打5折,各种绿色开源软件还应有尽有
- Nessus安装教程
- 李克秋 加盟天津大学 计算机学院,17 天津大学
- 《科学》:基因编辑婴儿入选年度“科学崩坏”事件
- 免费易混实词辨析456组(1)
- MQTT的学习之Mosquitto简要教程(安装使用)
- c# WPF 动态设置button的IsEnabled属性
- 微信小程序语言c#,微信小程序推出最新脚本语言WXS,你需要知道的全在这里了...
热门文章
- 无用小程序之——论如何利用python的pyautogui和特别喜欢发“嗯”*n的人实现部分自动化QQ聊天
- 【Autosar 存储栈Memery Stack 1.NVM Block的了解】
- STM32项目总结及代码中delay函数需慎用
- scanf 函数 —— 基本的输入函数
- DoS攻击和DDoS攻击
- python第三方库,你要的这里都有
- 万维网服务器把信息组织成,万维网与因特网有什么关系
- oracle cursor rowcount,关于cursor的rowcount
- IOS开发广告接入iAD框架_InMobi框架
- Live800:客户服务无小事,别让服务击溃企业口碑