故事点是一个度量单位,用于表示完成一个产品待办项或者其他任何某项工作所需的所有工作量的估算结果。

当采用故事点估算时,我们为每个待办项分配一个点数。待办项估算结果的原生数据并不重要,我们只关注最后得到的相对估算结果。一个估算值为2的用户故事应该是估算值为1的用户故事的2倍。而它也应该是另一个估算值为3的用户故事的三分之二。

团队不要采用100、200、300,或者1百万、2百万、3百万,而要使用1、2、3。估算结果是比值,而不是绝对值。

故事点包括什么内容

由于故事点数代表了开发用户发故事所需的全部工作量,所以团队的估算必须考虑到影响工作量的所有因素。这可能包括:

  • 要开展的工作的数量
  • 工作的复杂度
  • 要开展的工作中存在的任何风险或不确定性

在用故事点估算时,必须要考虑以上每一个因素。让我们看看每个因素是如何影响故事点的。

要开展的工作数量(The Amount of Work)

如果要开展的工作越多,工作量的估算值当然就会越大。考虑两个网页开发的案例。第一个网页只有一个字段和一个要求输入姓名的标签。第二个网页有100个只需要输入一小段文本的字段。

第二个网页并不比第一个网友更复杂。字段之间是不存在交互的,每个字段只不过是一点文本而已。因此第二个网页并不存在额外的风险。这两网页之间的唯一区别就是第二页有更多的事情要做。

应该给予第二个网页更多的故事点数。但它即使有多了100倍的字段数,可能仍然得不到多100倍的点数。毕竟,由于规模经济效应,第二个网页的工作量可能只是第一个网页的工作量的2或3或10倍。

风险和不确定性(Risk and Uncertainty)

产品待办项的风险和不确定性会影响其故事点估算值。

如果产品待办项的干系人在询问需求事说得不清不楚,那么团队在估算时应当把不确定性也反映在估算结果中。

如果要实现一项功能时需要改动一段缺乏自动化测试的、结构脆弱的老代码,那么估算结果中也应该反映这个风险。

复杂度(Complexity)

在进行故事点估算时,还应该考虑复杂度。回顾一下之前那个有100个琐碎文本字段且字段之间无交互的Web网页开发的例子。

现在考虑另一个也有100个字段的网页。但这些字段中,有些是采用日历控件弹出的日期字段;有些是格式化的文本字段,如电话号码或社会安全号码;另一些字段则需要做信用卡号码的校验和验证。

页面上的字段之间还需要相互交互。如果用户输入一个VISA卡,会显示三位CVV字段。但是如果用户输入美国运通卡,则需要显示四位CVV字段。

尽管这个页面上仍然只有100个字段,但这些字段更难实现。它们更复杂,需要花更多时间才能实现。开发人员出错的可能性更大,因此不得不采取一些预防和纠正措施。

这种额外的复杂度都应该反映在所提供的估算结果中。

要考虑所有因素:工作数量、风险和不确定性,和复杂度

把这三个因素合成一个数字并提供一个估算值,貌似是不可能的。然而其实是可能的,因为可以统一到工作量这个因素。

首先,估算人员要考虑的是:完成产品待办项所描述的那些工作,到底需要多少工作量。

然后,估算人员要考虑的是:在处理产品待办项的风险和不确定性方面需要付出多少工作量。通常可以通过考虑到问题发生的风险以及风险确实发生会造成的影响来做到。因此,例如,一个可能会发生并将消耗时间的风险将会增加估算值,而一个不太可能发生且无关紧要的风险则不会增加估算值。

此外,估算人员还要考虑要开展的工作的复杂度。复杂的工作需要花费更多的心思,可能需要进行更多的试错试验,可能需要与客户进行更多的反复,还可能需要花费更长的时间来验证和改正错误。

所有这三个因素必须都结合考虑。

要考虑“完成的定义”中的要求

故事点估算必须要覆盖直到实现产品待办项待真正完成的所有事项。如果团队的“完成的定义”中包括了创建自动化测试来验证这个故事(并且这是一个好主意)这个事项,那么创建这些测试的工作量也应该包含在故事点估算结果中。

故事点可能是个难以把握的概念。但是花时间去充分理解——故事点数代表着其工作的数量、复杂度及其风险和不确定性——将会是值得的。

作者:Mike Cohn

文章转自:scrum中文网

文章链接:http://www.scrumcn.com/agile/scrum/19837.html

到底什么是故事点(Story Point)?相关推荐

  1. 用户故事为什么要关联开发数据?

    最近我和徐大神(Shaun Xu)在分享Scrum实践经验时,经常有听众问:"用户故事为什么要关联开发数据呢?".这个问题里提到的"开发数据"指的是代码提交.代 ...

  2. 代码传奇丨美女黑客张婉桥的“爱丽丝奇遇记”

    世界上最悲惨的事情之一,莫过于你的女朋友是一名黑客.因为你永远不知道,她究竟有什么手段来监控你.一位中国的美女黑客向世界证明了:她有办法监听到指定手机的所有通讯数据. >>>> ...

  3. 怎样高速读懂别人的项目

    作为入行未深的0基础程序猿.由于工作须要接手了别人的项目做优化.才发现已入苦海,由于可能原作者比較清楚程序的架构以及每行代码的含义所以非常多地方没有进行凝视.程序中一些变量以及定义都是使用的缩写.所以 ...

  4. 如何写一篇好的职场文档

    声明:本篇文章的主要内容本非笔者本人写述,而是来自一位笔者的一位导师,真的写的很棒,在原有的基础上笔者进行了一定的调整和融入,希望可以让更多朋友能有所帮助. 写在前面 • 以终为始,心中一定要有&qu ...

  5. 研发效能度量实践者指南(万字长文)

    作者简介:茹炳晟,腾讯T4级专家,腾讯研究院特约研究员,业界知名实战派研发效能和软件质量双领域专家."软件研发效能度量规范"团体标准的核心编写专家,Certified DevOps ...

  6. 来自腾讯相当好的文章:研发效能度量实践指南

    ​​作者简介:茹炳晟,腾讯T4级专家,腾讯研究院特约研究员,业界知名实战派研发效能和软件质量双领域专家."软件研发效能度量规范"团体标准的核心编写专家,Certified DevO ...

  7. 全国最搞笑的名字都在这了,看了不准笑!

    取‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍名是个艺术活,更是技术活!现在很多年轻的父母给孩子起名的时候都十分的坑孩,一些奇葩搞笑的名字真是让人哭笑不得,比如下 ...

  8. 和喜欢的女生聊天找不到话题了怎么办?

    一.关注聊天本身,而不是聊天话题 很多人都不知道怎么和女孩聊天,往往说着说着就没有了话题,而我认为:聊天根本就不需要准备话题! 话题式聊天法: 我们聊天的时候总是想要围绕着我们事先想的话题展开,而并没 ...

  9. 《海底两万里》的读书笔记作文4000字

    <海底两万里>的读书笔记作文4000字: <海底两万里>是法国作家凡尔纳的代表作,是著名的"凡尔纳三部曲"的第二部,另外两部是<格兰特船长的儿女> ...

最新文章

  1. 怎么调用获取被创建的预制体_Uber 开源 Plato:扩展性极强的开发测试会话 AI 平台,可实现多智能体并行训练...
  2. scrapy的name变量_python-将file_name参数传递给管道以在scrapy中...
  3. Java实现自定义队列和树结构_Java数据结构之链表、栈、队列、树的实现方法示例...
  4. MapReduce运行机制-Reduce阶段
  5. kali Linux 安装
  6. excel vba 从入门到精通_VBA词汇-基本元素篇
  7. Myeclipse2015把web项目添加至tomcat中,添加列表中却没有想要添加的项目
  8. Python (schedule库)简单使用
  9. SpringMVC文件下载IOException: UT010029: Stream is closed
  10. ae制作小球轨迹运动_教你如何用AE做出动画效果
  11. 计算机编程必备英语单词,编程序常用英语单词
  12. 电脑出现问题。你的PIN不可用,请单击以重置——解决方案总结
  13. 游戏拳皇命运服务器维护,拳皇命运
  14. RxSwift学习(四)--- RxSwift 高阶函数
  15. 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...
  16. 论文 | Credit Card Fraud Detection Using Convolutional Neural Networks
  17. Android面试攻略
  18. 如何开发旅游地产?——高赢利旅游地产的策划规划方法!
  19. Go 程序设计语言书中 源码
  20. c语言printf输出字母,C语言printf()格式化输出控制

热门文章

  1. 入职地府后我成了人生赢家_【200811推文】闪闪而恋作者:钦点废柴+入职地府后我成了人生赢家作者:有只胖头鱼...
  2. 我在兰亭这三年之大促的那些事儿
  3. Spring Security 之集群Session配置
  4. Script标签的async和defer
  5. Maven 让事情变得简单
  6. 网络地址转换(PAT)
  7. java中的IO操作总结(一)
  8. exchange2003如何恢复邮件
  9. Route 66地图安装的一个简单方法,在N70上验证过
  10. [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1