什么是用户故事?

用户故事描述了对系统或软件的用户或者购买者都有价值的功能。用户故事由以下三个方面组成。

一份故事的书面描述,用于做计划和提示。

有关故事的对话,有助于充实故事的细节。

传递和记录故事细节的测试,用来判定故事是否完成。

由于用户故事通常用手写的纸质卡片来描述完成,荣恩(Ron Jeffries)用了3个首字母相同的单词来描述:卡片(Card)、对话(Conversation)和确认(Confirmation)[Jeffries 2001]。卡片可能是用户故事最可视化的表现形式,但它不是最重要的。瑞秋(Rachel Davies)在《敏捷教练》一书中表示,卡片“表现客户需求,而不是记录它们”。这是思考用户故事的最佳方式:尽管卡片可能包含故事的文本,但细节在对话中确认,并在确认后记录下来。

故事卡1.1是一个用户故事的例子,这是一个来自假想的BigMoneyJobs职位招聘和搜索网站的故事卡。

用户可以在网站上发布简历。

故事卡1.1 一个写在卡片上的用户故事雏形

为了保持一致性,这本书其余部分的示例都将取自BigMoneyJobs网站。其他关于BigMoneyJobs的例子可能包括下面几个。

用户可以搜索工作。

公司可以发布新的职位空缺。

用户可以限制查看到简历的人。

因为用户故事表达的功能应该对用户是有价值的,下面的例子对这个系统而言并不是一个好的用户故事。

该软件将用C++写。

该程序将通过连接池连接到数据库。

第一个例子对于BigMoneyJobs来说不是一个好的用户故事,因为它的用户不会关心使用哪种编程语言。但是,如果这是一个应用程序编程接口,那么作为系统的用户(她自己就是程序员)写的“该软件将用C++编写”是不错的。

在本例中,第二个故事也不是一个好的用户故事,因为这个系统的用户并不关心应用程序如何连接到数据库的技术细节。

也许你已经读过这些故事,并且在尖叫“但是等等——使用连接池是我系统中的一个需求!”如果是这样的话,请等一下,关键是要以能够体现客户价值的方式编写故事。有一些方法可以来表达这样的故事,我们会在第2章中看到这样的例子。