《敏捷软件开发:用户故事实战》—2 编写故事

举报
清华大学出版社 发表于 2019/10/22 16:32:03 2019/10/22
【摘要】 本节书摘来自清华大学出版社《敏捷软件开发:用户故事实战》一书中第二章,作者是[美] 迈克·科恩(Mike Cohn) , 王凌宇 译。

第二章

编写故事

在这一章里,我们将介绍如何编写故事。为了创建好的故事,我们需要关注六个特征。一个好的故事应该具备以下特征(INVEST):

l   独立的(Independent

l   可协商的(Negotiable

l   对用户或客户有价值的(Valuable to users or customers

l   可估算的(Estimatable

l   小的(Small

l   可测试的(Testable

《极限编程》(Extreme Programming Explored)和《重构实践手册》(Refactoring Workbook的作者比尔·威克(Bill Wake)建议用单词首写字母缩写INVEST指代这六个特征(Wake 2003a)。

独立的

我们应该尽量避免故事之间相互依赖。故事间的相互依赖会导致优先级排序和计划出现问题。例如,假设客户选定了一个高优先级的故事,而这个故事却依赖于一个低优先级的故事,这样就会产生问题。

故事间的相互依赖也会使估算变得更加困难。例如,假设我们在BigMoneyJobs网站上工作,需要编写故事:公司如何为在网站上发布职位进行付费。我们可以写出如下这些:

1.       公司可以用Visa信用卡对发布职位进行付费。

2.       公司可以用万事达信用卡对发布职位进行付费。

3.       公司可以用美国运通卡对发布职位进行付费。

假设开发人员估算需要3天的时间来支持第一种信用卡(不管它是哪种),然后给第二种和第三种各分别需要1天。对于像这些有相互高依赖关系的故事,你不知道如何对每个故事进行估算哪个故事应该给3天的估算?

当故事间出现这种依赖时,有两种应对方法可以避免。

l   将相互依赖的故事合并成一个更大但独立的故事。

l   寻找一种不同的方式来拆分故事。

将不同种类的信用卡合并成一个独立的大故事(“公司可以使用信用卡对发布职位进行付费”)是不错的,因为合并后的故事只需要5天时间。如果合并后的故事花费的时间要比这长得多,通常一个更好的方法是找一个不同的维度来拆分故事。如果对这些拆分后故事的估算时间更长,那么另一种拆分方法如下:

1.       客户可以用一种信用卡支付。

2.       客户可以用另外两种信用卡支付。

如果你不想将这些故事合并在一起,并且无法找到一个很好的方法来拆分它们,那么你还可以采用简单的方法,即在故事卡上放两个估算值:较高的估算值给二者之间必须在前面完成的故事,较低的估算值给后面接着要完成的故事。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。