用户故事的定义
用户故事是从最终用户的角度对软件需求的格式良好、简短且简单的描述,以非正式和自然的语言编写。它是敏捷软件开发过程中用于捕获用户需求的主要工件。
用户故事由产品经理或团队成员代表最终用户编写,解释正在开发的系统的预期功能。编写用户故事是为了按照预定义的模板捕捉需求中最重要的元素。
用户在编写用户故事时应牢记以下敏捷原则。
1. 可工作的软件是进度的主要衡量标准。
2. 最优先考虑的是通过早期和持续交付有价值的软件来满足客户。
3. 简单。
高质量的用户故事不仅可以帮助项目团队清晰准确地了解客户需求,还可以让项目估算和开发过程更加高效。
用户故事有什么用?
用户故事被用作在敏捷开发框架(例如 Scrum 和极限编程 (XP))中捕获高级需求的主要方式。
在敏捷 Scrum 框架中,产品待办列表中的项目被写为用户故事,因为它有助于项目团队和产品负责人从客户的角度关注需求。
在极限编程 (XP) 中,用户故事被用作产品验收的标准。XP 开发人员利用用户故事编写验收测试,这些测试甚至在产品代码创建之前就已完成。这种方法可以节省时间并确保项目代码符合客户的验收标准。用户故事还用于创建 XP 框架中发布计划会议的估计。
用户故事的历史
用户故事的最初想法是由 Alistair Cockburn 博士在 90 年代后期提出的。从那时起,用户故事的使用方式已经由多个从业者开发,即:
-
2001 年,Ron Jeffrey 提出了用户故事的 “三个 C” 公式。每个 C 分別代表: 卡片 (Card)、谈话 (Conversation) 和确认 (Confirmation)。
-
2004 年,Mike Cohn 出版了《User Stories Applied For Agile Software Development》一书,概括了用户故事原则。
-
2014 年,Jeff Patton 和 Peter Economy 出版了《用户故事映射:发现整个故事,构建正确的产品》一书,介绍了一套新的技术来识别、构建用户故事并提供更多可见性。
用户故事示例
这些是一些使用不同模板编写的用户故事示例,敏捷开发团队采用这些模板来捕获他们的需求。
模板:作为<角色>我可以<能力>,这样<获得利益>
- 作为经理,我希望能够查看正在进行的工作的状态,以便我可以计划何时将其交付给高级领导。
- 作为用户, 要支将新朋友添加到我的个人资料中,我应该能够向其他用户发送好友请求。
- 作为关注者,我希望能够在博客上发表评论,以便我收到作者的反馈。
4、基于五W模型的用户故事模板
模板:作为<who> <when> <where>,我<want> 因为<why>
示例:作为软件测试人员,当我以每个开发人员的名义记录缺陷时,我希望他们每个人都收到通知,因为这样开发人员就会知道我记录的缺陷。
使用用户故事的优势
一个结构良好的用户故事可以通过以下方式使软件开发过程受益:
-
它有助于阐明精确的用户需求:用户故事只有在一个句子中包含关键元素(例如用户的角色、能力、愿望和目标)时才能成功。将这些元素清楚地表达出来,使它们对整个产品团队更加精确,确保开发始终专注于最终用户的需求。
-
更好的协作:用户故事有助于让所有关键利益相关者不仅关注正在开发的内容,还关注开发原因。
-
能够降低项目风险:从本质上讲,用户故事是产品团队以用户为中心的工具。这有助于确保尽早发现疏忽和范围蔓延。
使用用户故事的缺点
这些是敏捷开发团队在使用用户故事来捕获需求时所面临的一些问题。
-
较少关注非功能需求 (non-functional requirments):用户故事主要关注捕获功能需求(即最终用户如何直接与系统交互)。非功能性需求,例如性能、容错性、可用性、耐用性、可修改性等,可能无法通过典型的用户故事模板清楚地或根本无法捕获。
-
难以为更大和更复杂的项目扩展:用户故事的格式是专注于单一功能的简单格式。随着项目变得越来越复杂,这些有时很难扩大规模。
-
产生模糊或不完整的需求:由于用户故事是用非正式的、更自然的语言编写的,工程师可能无法处理这些需求。然而,这可以通过如何编写出色的用户故事的适当培训来克服。