7.2. 切蛋糕
当面临一个大的故事的时候,通常有许多方法可以将它分解成较小的故事。许多开发人员首先想到的是将故事按照技术路线分割。
比如,假设团队觉得故事“求职者可以发布简历”在当前这轮迭代中太大了,就必须分割。开发人员可能想沿着技术边界分割,示例如下:
- 求职者可以填写简历表
- 简历表上的信息被写入数据库
在这个案例中,一个故事会在当前迭代中完成,而另一个故事则(很可能)推迟到下一轮迭代里。这种做法的缺陷是,没有一个故事是单独对用户很有用的。
第一个故事说的是求职者可以填写简历表,但数据没有被保持。
第二个故事说的是从简历表上搜集的数据会写入数据库。如果没有第一个故事提供表格给用户,第二个故事就没有什么价值。
一个更好的办法是换一种方式编写故事,每个故事都提供某种程度的完整(end-to-end
)的功能。
Bill Wake(2003a)将其称之为“切蛋糕”(
slicing the cake
)
根据这个切蛋糕原则,我们可以把故事“求职者可以发布简历”像下面这样分。
- 求职者可以提交简历,简历上只包括诸如名字、地址、和教育背景这样的基本信息
- 求职者可以提交简历,简历上包括雇主想看的所有信息
在编写用户故事时,更倾向编写像一块完整蛋糕那样功能完整的故事。
具体有两个原因:
- 首先,在开发中,及早涉及软件应用架构的每一层能够有效地降低最后时刻才发现层次架构方面问题的风险。
- 其次,尽管不十分完美,即使只提供部分功能,但只要发布的功能可以跑,就可以放心的把应用程序发布给用户使用。