用户故事

2013年4月22日

用户故事是软件系统预期行为的片段。它们在敏捷软件方法中被广泛使用,用于将大量功能划分为更小的部分,以便于计划。您可能还会听到将相同的概念称为“特性”,但“故事”或“用户故事”一词如今在敏捷圈中更为流行。

Kent Beck 首先将该术语引入极限编程中,以鼓励采用比冗长的书面规范更非正式和更具对话性的需求获取方式。故事的本质可以写在一张便签卡上(Kent 和我更喜欢 3 英寸 x 5 英寸的卡片)。故事在准备开发之前不会被详细描述,您只需要足够的理解,以便与其他故事一起进行优先级排序。

Bill Wake 提出了 INVEST 助记词 来描述好故事的特征

  • 独立性:故事可以按任何顺序交付
  • 可协商性:故事中的细节是由程序员和客户在开发过程中共同创建的。
  • 有价值:功能被软件的客户或用户视为有价值。
  • 可估计:程序员可以对构建故事的工作量做出合理的估计
  • 小规模:故事应该在短时间内构建完成,通常是几天的时间。当然,您应该能够在一个迭代中构建多个故事。
  • 可测试性:您应该能够编写测试来验证软件中该故事的功能是否正常工作。

描述故事的一种常见方式是“作为… 我想要… 以便…”的形式。“作为”子句指的是谁想要这个故事,“我想要”描述了功能是什么,“以便”描述了他们为什么想要这个功能。“以便”部分提供了重要的背景信息,有助于理解如何从客户认为他们想要的东西转变为提供他们真正需要的东西。

Mike Cohn 撰写了 现在有关编写用户故事的标准书籍。要了解用户故事在极限编程中的根源,请参阅 白皮书雅致的绿皮书。在我之前的一篇博客文章中,我讨论了为什么 用例和故事 是不同的。