一、切蛋糕
当面临一个大的故事的时候,通常有许多方法可以将它分解成较小的故事。许多开发人员首先想到的是将故事按照技术路线分割。
开发人员可能想沿着技术边界分割,示例如下:
- 求职者可以填写简历表
- 简历表上的信息被写入数据库
在这个案例中,一个故事会在当前迭代中完成,而另一个故事则(很可能)推迟到下一轮迭代里。这种做法的缺陷是,没有一个故事是单独对用户很有用的。
——————————————————分割线—————————————————————
一个更好的办法是换一种方式编写故事,每个故事都提供某种程度的完整(end-to-end
)的功能。
根据这个切蛋糕原则,我们可以把故事“求职者可以发布简历”像下面这样分。
- 求职者可以提交简历,简历上只包括诸如名字、地址、和教育背景这样的基本信息
- 求职者可以提交简历,简历上包括雇主想看的所有信息
在编写用户故事时,更倾向编写像一块完整蛋糕那样功能完整的故事。
具体有两个原因:
- 首先,在开发中,及早涉及软件应用架构的每一层能够有效地降低最后时刻才发现层次架构方面问题的风险。
- 其次,尽管不十分完美,即使只提供部分功能,但只要发布的功能可以跑,就可以放心的把应用程序发布给用户使用。
二、小结
编写封闭的故事:一个封闭的故事是指随着一个有意义的目标的实现而结束的故事,能让用户使用后觉得他完成了某个任务。
不要让故事过早设计用户界面。
用主动语态编写故事——例如要说“求职者可以发布简历”。
为单个用户编写故事——例如不要写“求职者可以删除简历”,而要写“求职者可以删除他自己的简历”。
让客户,而不是开发人员,编写故事。
不要给故事卡编号。