敏捷项目需求拆解&发现用户故事
需求文档和敏捷中的Epic,User Story, Task之间是什么关系以及如何将需求文档转换成敏捷方式的描述,指导开发人员。
一直是很多公司团队比较困扰的问题,那么最近笔者为了解决这些问题,上了一些课程,
现将核心内容,总结如下,希望对大家有帮助,一起探讨~~
在项目开发过程中,由于历史或者出于方便和规范的原因项目经理一般还是喜欢使用word文档来描述需求。
举个电商的例子,一般文档结构会如下所示
-------------------------------------------------------------------------
- 前言
- 功能性需求
- 商铺管理场景
- 建店申请
- 提交申请
- 查询所有申请
- 查看单个申请
- 。。。。。。
- 店铺
- 。。。。。。
- 建店申请
- 商铺管理场景
------------------------------------------------------------------------
一、如何将需求文档的内容转化成敏捷中的术语
上面这种格式文档对于敏捷开发团队来说可能是比较生疏的,因为开发团队一般常见的都是敏捷中的常用术语,如User Story, Task...
那么需求改如何变成敏捷术语中的Business Epic,Feature,User Story和Task呢?
下面举个栗子,需求如何对应到 SAFe(Scaled Agile Framework)框架 --常规的敏捷框架适用于中小型项目团队,而且不具有扩展性。基于常规的敏捷框架,SAFe 定义了一个可扩展的敏捷框架模型,它适用于大型团队的合作开发,可以帮助提高团队之间的协作性,降低团队管理的复杂性。
对于SAFe想做更多了解请看官网 https://www.scaledagileframework.com/
或者 https://www.ibm.com/developerworks/cn/rational/1606_wanghy_saf/index.html

从上图可知,拿到需求文档,
第一步,我们需要找到需求描述中的名词,名词一般是用来表述某项业务,所有将会对应到Business Epic或者是大的Feature。(描述偏业务性)
第二步,我们需要找到名词所对应的动词,动词主语是用户或者是外部系统的一般可以转化成User Story,也就是用户故事。(描述偏业务性)
第三步,还是要找动词,动词主语是开发者的,一般会转化为Task,也就是具体工作。(描述偏技术性)
敏捷术语和代码的对应关系
- Business Epic -->库/包
- Feature -->类
- User Story -->方法
一、如何防止需求遗漏
找到了所有的名字之后我们可以拿出每一个Feature建立以下表来捕捉用户故事。
第一行,参考上面第二步,列出所有的主语是用户或外部系统的名词
第一列,总是写上CIDED(增查查改删),第一个查为查询所有信息,理解为列表,第二个查为查询单个详细信息
然后在对应的格子中填写是否有相应的动词对个某个实体的某个特定的操作。

上面的列表可产生自粗略的需求说明,用来捕捉遗漏的需求,也可用来将需求用这个表来过渡,然后用As...I want...so that...格式描述成用户故事。
用户故事变成Task这个一般技术人员都会,这里就不再赘述。
一些参考数据:
- 自动化测试用例/功能点 = 1.2
- 一天大概能编写15~18个测试用例
- 名字平均6.5个动词 (3~9个动词)
- 一个名词35个功能点
- 一个功能点约等于1人天
- 一个功能点价格约等于1k
- 调整因子1.3根号人天数
敏捷项目需求拆解&发现用户故事的更多相关文章
- 【DevCloud·敏捷智库】如何利用用户故事了解需求
摘要:这篇文章主要解决因为不能很好地理解需求而估算做不好的问题,在这里可以了解下如何利用用户故事了解需求. 背景 很多团队在应用敏捷开发时,对估算经常感到困惑.这里所说的估算是指产品列表条目(PBI, ...
- 【DevCloud · 敏捷智库】如何拆分用户故事
提起用户故事拆分,我们听得最多的就是INVEST原则(关于INVEST原则可以参考文章“用户故事等于需求说明”——你一定没有写好用户故事),但很多人面临的问题是拿到一个较大的用户故事时,该如何拆分才能 ...
- 用户故事(User Story)
用户故事(User Story) 用户故事是描述对用户有价值的功能,好的用户故事应该包括角色.功能和商业价值三个要素.用户故事通常的格式为:作为一个<角色>, 我想要<功 ...
- 实验九 FBG 团队项目需求改进与系统设计
任务一 A.<项目需求规格说明书>分析 根据老师的指导以及本周所学的OOA,分析改进上周编写的<项目需求规格说明书>,发现需求项目书UML图例描述不够完善,仅仅是用例图没办法更 ...
- 划分用户故事(user-story)的原则
在敏捷开发过程中是通过用户故事来将需求具体化成可以进行迭代开发的一个个现实的可见的开发任务.因此在敏捷软件的开发过程中,用户故事的划分对于迭代和开发起着举足轻重的作用. 用户故事从其名字来看是站在用户 ...
- 用户故事驱动的敏捷开发 – 2. 创建backlog
本系列的第一篇[用户故事驱动的敏捷开发 – 1. 规划篇]跟大家分享了如何使用用户故事来帮助团队创建需求的过程,在这一篇中,我们来看看如何使用这些用户故事和功能点形成产品backlog.产品backl ...
- 产品经理-需求分析-用户故事-敏捷开发 详解 一张图帮你了解Scrum敏捷流程
产品经理-需求分析-用户故事-敏捷开发 详解 用户故事是从用户的角度来描述用户渴望得到的功能.一个好的用户故事包括三个要素:1. 角色:谁要使用这个功能.2. 活动:需要完成什么样的功能.3. 商业价 ...
- UDAD 用户故事驱动的敏捷开发 – 演讲实录
敏捷发展到今天已经在软件行业得到了广泛认可,但大多数敏捷方法都是为了解决某一特定问题而总结出来的特定方法或实践,一直缺乏一个可以将整个开发过程串接起来的成体系的方法.用户故事驱动的敏捷开发(User ...
- 菜鸟Scrum敏捷实践系列(一)用户故事概念
菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 敏捷开发 ...
随机推荐
- Unity3D NGUI事件监听的综合管理
首先,将Event Listener挂在按钮上 Event Listener的源码很简单 就是利用C#的时间委托机制 注册了UI场景的事件而已 public class UIEventListener ...
- 以太坊go-ethereum签名部分源码解析
以太坊go-ethereum签名部分源码解析 golang标准库里的crypto/ecdsa椭圆曲线加密算法所提供的函数有: ecdsa.PublicKey结构体通过持有一个elliptic,Curv ...
- linux新建用户并赋管理员权限
输入useradd新建一个用户 [root@java-devenv ~]# useradd yaoqi [root@java-devenv ~]# passwd yaoqi passwd 是修改用户密 ...
- jquery datatable ajax配置详解
我写的这个东西类似于个人笔记,如果你想要完整的而了解 可以去这里看看 http://dt.thxopen.com/ 包括英文原网站都不错. 通过配置ajax的属性和服务器交互 $("sele ...
- DotNetCore跨平台~Json动态序列化属性
回到目录 Json动态序列化属性,主要为了解决一个大实体,在返回前端时根据需要去序列化,如果实体里的某个属性在任务情况下都不序列化,可以添加[JsonIgnore]特性,这种是全局的过滤,但是更多的情 ...
- Java基础学习笔记十六 集合框架(二)
List List接口的特点: 它是一个元素存取有序的集合.例如,存元素的顺序是11.22.33.那么集合中,元素的存储就是按照11.22.33的顺序完成的. 它是一个带有索引的集合,通过索引就可以精 ...
- 记录python接口自动化测试--requests使用和基本方法封装(第一目)
之前学习了使用jmeter+ant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对"接口"以及"接口测试"有了一个基础了解,最近找了一些用pyt ...
- C语言使用指针变量指向字符串,对字符串进行处理后再将指针移向开头为什么不能输出?(使用Dev-c++进行编译)
# include <stdio.h> # include <stdlib.h> int main() { char *point_1="aaaaaabbbbbbzz ...
- 按指定id顺序查询
SELECT a.p,* FROM tb1 t,( as p union as p union as p union as p union as p ) a where t.id=a.id order ...
- Android属性动画 nineoldandroids
各种资源链接 nineoldandroids 任玉刚的五个图片滑动,点击menu http://blog.csdn.net/singwhatiwanna/article/details/1763998 ...