用户故事

用户故事描述了对用户、系统或软件购买者有价值的功能。

用户故事应该具备以下特点:

1) 独立的:应该避免故事间的项目依赖。在对故事排列优先级时,或者做计划时,故事间的相互依赖会导致问题。

2) 可讨论的:故事不是签署好的合同,故事是功能的阶段描述,它提供了适量的信息给开发人员和客户团队,提醒他们在以后进行关于需求的对话。它并不是需求本身,因而不需要包含所有细节。

3) 对用户或客户有价值的:每个故事必须对用户有价值,因此应该避免那些只对开发人员有价值的故事,例如技术和实现细节,用户界面等。保证每个故事对客户又加重的最好方法是让客户来便携故事。

4) 可估计的:对于开发人员来时,应该能够估算故事的大小。如果故事太大而无法进行估算,则需要分解成更小的故事。但有时也需要史诗故事作为占位符或提示。

5) 小的:故事的大小很关键,故事太大或太小,都无助于制定计划。史诗故事在执行前,需要分成更小的故事。合适的故事大小取决于团队,它的容量及所使用的技术。

6) 可测试的:故事必须是可测试的,成功通过测试可以证明开发人员正确地实现了故事。如果故事不能被测试,开发人员将无法知道什么时候才算完成了代码。

用户故事的优点有:

1)强调对话交流而不是书面沟通:

使用用户故事的目的并不是让我们事无巨细的记录下想要的特征,而是提醒开发人员在将来需要与客户进行沟通与交谈。相较于追求完美的需求文档,更有价值的是运用频繁的沟通来加强恰当的故事。

2)容易被用户和开发人员理解:

用户故事中通常没有太多的技术术语或领域术语,用户和开发人员都可以理解。另外,用户故事通常实在用户故事会中讨论出来的,参与者能够从用户故事清楚的回忆起讨论清楚的情节。

3)大小适合于做计划:

与用例和场景不同,用户故事的大小可以掌控,可以很方便的用于发布规划以及进行编程和测试。

4)适用于迭代开发:

用户故事与迭代开发相辅相成,我们并不需要在开始编码之前写出所有用户故事。 我们可以写出一部分故事,就进行编码和测试,然后按照需要的节奏重复这一过程。写故事时,我们可以按照我们认为合适的粒度去写。正式由于我们很容易对故事本身也进行迭代,因此用户故事很适合迭代开发。

5)鼓励推至考虑细节

团队可以费城迅速的写出数十个用户故事,让大家对系统有一个整体概念,然后就讨论前几个故事的细节并开始编码,而其他故事在后来对于开发进程变得重要时,才补充更多细节来代替简单的描述。这远比被迫先完成一份完美的软件需求文档进展快许多。

6)鼓励参与性设计

把交谈的中点从系统特性转移到用户使用该系统目标的故事,会使讨论变得有趣,激发用户的积极性,成为软件设计的参与者。

如何编写优秀的用户故事

1)从目标故事开始:在一个大型项目中,尤其是有许多用户角色的项目,确定用户故事有时让人无从下手。最好的办法是考虑每一个用户角色,了解用户使用软件的目标,然后从目标开始分析出新的故事。

2)切蛋糕:当面临一个大的故事时,通常有许多方法可以将它分解成较小的故事,比较好的方式是让每个故事都提供某种程度的完整的功能,即“切蛋糕”。这样的好处是,首先在开发中尽早设计软件应用架构的每一次能够有效降低最后时刻才发现层次架构方面问题的风险;其次,尽管不十分完美,即使只提供部分功能,但只要发布的功能可以跑,就可以把程序发布给用户使用。

3)编写封闭的故事:一个封闭的故事是指随着一个有意义的目标的实现而结束的故事,它能让用户使用后觉得她完成了某个任务,带给用户一种成就感。一个大的非封闭的故事,可以分解成多个小的封闭故事。

4)约束卡片:对于一些必须要遵守而不需要直接实现的故事,尽管它不需要被估算,也不会像普通故事那样呗安排到迭代中,但他们仍然很有用。可以把他们放在醒目的地方,提醒开发人员不要违反约束,并针对约束编写验收测试来确保系统满足约束。

5)根据实现时间来确定故事规模:应该讲注意力放在那些即将发生的事情上,而不是放在更远的将来才发生的事情上。类似,对于故事而言,要基于故事实现的时间跨度,以不同的层次来编写故事。对于即将要实现的故事,它们的大小应该适合安排进下几轮迭代中;而对于更遥远的故事,他们可能会更大,且精确度更低。

6)不要过早涉及用户界面:由于用户界面说明或暗示了解决方案以及细节,因此用该尽量让故事不包含用户界面,而只是描述功能。

7)不是所有需求都可以写成故事:尽管用户故事是一个非常灵活的格式,可以很好的描述许多系统的很多功能,但它不是万灵药。如果发现系统某些方面更适合用其他表达方式,尽可放心使用。

8)在故事里包括用户角色:如果项目团队已经识别出用户角色,那么在别写故事时使用实际的用户角色而不是简单的“用户”。这使得开发人员能够联想实际的,真切的用户,开发出满足用户需求的软件。

9)至为一个用户编写故事:当故事只为单一用户编写时,故事的可读性通常是最强的。

10)以主动语态填写

11)由客户编写:在理想情况下,故事应由客户编写,这是客户的职责,不应转嫁给开发人员。另外,因为客户有责任排列故事的优先级,所以客户理解每个故事时至关重要的,而要做到这一点,亲自编写无疑是最好的方法

12)不要给故事编号:故事之前是独立的,没有先后顺序的,因此不应该给故事编号,如果有必要,可以给故事加一个简短的标题,并在其余的故事描述文本中使用这个标题作为缩写。

13)不要忘记意图:不要忘记,故事卡的主要目的是用来提醒开发人员和客户团队就功能进行讨论。因为仅仅是一个提醒,就要保持它的简洁性。可以加入必要的细节以便联系到继续对话的切入点,但是不要再故事中加入太多细节并以此取代对话。

用户故事不良征兆

1) 故事太小,导致经常需要调整估算;

2)故事之间相互依赖,导致很难做迭代计划;

3)镀金,开发人员在迭代中实现计划外的功能;

4)细节太多,导致前期花太多的攻速整理故事细节,或者写故事而不是讨论故事;

5)过早考虑用户界面细节;

6)想得太远,追求在前期花很多功夫捕捉故事相关的所有细节;

7)故事划分变化频繁;

8)客户难以为故事安排优先级,这可能是由于故事太大或包含了体现不出商业价值的用户故事;

9)客户不愿意写用户故事,也不愿意为故事安排优先级;

转载于:https://www.cnblogs.com/angela217/p/10076768.html

用户故事与敏捷方法笔记 --- 用户故事相关推荐

  1. 07.用户故事与敏捷方法——优秀用户故事准则笔记

    00.一个更好的办法是换一种方式编写故事,每个故事都提供某种程度的完整(end-to-end)的功能. 01.尽管不十分完美,即使只提供部分功能,但只要发布的功能可以跑,就可以放心地把应用程序发布给用 ...

  2. 08.用户故事与敏捷方法——估算用户故事笔记

    00.估算故事最好方法: *无论什么时候获得有关故事的新信息,都允许我们改变之前的想法 *适用于史诗故事和小故事 *不需要花很多时间 *提供进度和剩余工作的有用信息 *不太精确的估算也不会有太大问题 ...

  3. 用户故事与敏捷方法阅读笔记03

    今天读完了<用户故事与敏捷方法>的第12章:用户不是什么 用户不是IEEE 830,不是用例,不是场景.读完这一章,我了解到对于任何方法,总会碰到不顺的情况,我们会看看发生问题时的一些不良 ...

  4. 用户故事与敏捷方法pdf

    下载地址:网盘下载 内容简介  · · · · · · <用户故事与敏捷方法>详细介绍了用户故事与敏捷开发方法的结合,诠释了用户故事的重要价值,用户故事的实践过程,良好用户故事编写准则,如 ...

  5. 《用户故事与敏捷方法》读书笔记 02 细节是什么

    说"用户可以搜索岗位"是一回事,能够开始编码并作为测试的指导又是一回事.细节是什么?关于以下没有答案的问题又怎么办: 用户可以用什么进行搜索?州?城市?岗位名?关键词? 用户必须注 ...

  6. 《用户故事与敏捷方法》阅读笔记三

    用户故事具有多种好处: ①用户故事强调口头沟通:自古以来,口头表达是十分重要的.而且相比于书面书写的易产生歧义,口头表述更见简单明了,需求文档也是如此. ②人人都可以理解用户故事:相比于一些墨守成规的 ...

  7. 《用户故事与敏捷方法》阅读笔记一

    在没有读本书之前,虽然课上老师也讲用户故事,但是其实一直是对这个概念比较模糊,当时的理解就是用户故事就是简单的模拟用户使用软件的情形,也仅仅是模拟用户使用软件的情形,没有什么其他太多的用户.但是读了这 ...

  8. 象观敏捷之旅-用户故事与敏捷方法

    Date: 2015-05-04 21:07 一则漫画的启示 遇到的问题 编写严谨.漂亮.详细的文档本身成为一个目标,使用越来越冗长的文档,尝试用精确的语言来记录越来越多的细节和越来越具体的所谓全面的 ...

  9. 用户故事与敏捷方法-第一章问题答案

    1.1 用户故事包含哪三个部分 一份书面的故事描述,用来做计划和提示 有关于故事的对话,用于具体化故事情节 测试,用于表达和编档故事细节且可用于确定故事何时完成 1.2 客户团队由哪些人组成? 客户团 ...

最新文章

  1. 奠定了整个计算机科学的基础是什么,冯 诺依曼对计算机科学发展所作的贡献是什么...
  2. 《数据科学与大数据分析——数据的发现 分析 可视化与表示》一2.3 第2阶段:数据准备...
  3. leetcode 222 Count Complete Tree Nodes
  4. Java-For循环
  5. 使用 ramda 解析 .yarnrc/.npmrc 配置文件的例子
  6. 数据可视化课程_在这个由10部分组成的免费数据可视化课程中学习D3
  7. e.preventdefault() 别滥用
  8. [Vue进阶]为什么我的代码让别人看起来头皮发麻?
  9. 吴恩达机器学习第五回——支持向量机
  10. Linux安装python环境方法
  11. linux学习之文件操作
  12. Java实现最简单局域网QQ
  13. MSN不显示头像怎么办?
  14. 几种ESB(企业服务总线)介绍
  15. 小白如何从零开始运营微信公众号?
  16. HNUST OJ 1997 琪露诺的完美算术教室
  17. 1302: PIPI的族谱(二叉树)
  18. linux网络音频播放,通过 PulseAudio 实现局域网音乐播放
  19. visio2019画思维导图
  20. 华硕幻X GZ301VV原厂预装系统带ASUS RECOVERY

热门文章

  1. Layui数据表格(table)前后台交互
  2. PLSQL 缺少MSVCR120.dll
  3. a标签加onclick点击事件
  4. 【HAOI2008】【BZOJ1045】糖果传递(环形纸牌均分,前缀和)
  5. linux下载tar.gz文件夹,手把手给你细说linux-Ubuntu如何安装tar.gz文件
  6. 多个值合并成一个字段oracle排序,Oracle之多行记录变一行记录,行变列,并排序(wmsys.wm_concat)...
  7. HTML5 响应式网页设计之页面美化(一.响应式布局)
  8. mysql 5.7.10免安装_免安装版mysql5.7.10-16配置教程(2)
  9. Unity3D基础39:人物角色模型
  10. 牛客网暑期ACM多校训练营(第四场): B. Interval Revisited(DP)