用户故事
用户故事是敏捷开发方法中的核心概念之一,它提供了一种简洁的方式来描述软件功能需求,同时强调这些功能为用户或业务带来的价值。用户故事通常是由用户、产品经理或业务分析师编写的简短描述,用于与开发团队沟通需求,并作为开发工作的基础。
一个典型的用户故事包含以下几个关键要素:
-
用户角色(Who):这描述了谁会与系统进行交互,即系统的用户或用户群体。
-
用户活动(What):这描述了用户想要做什么,即用户与系统之间的具体交互行为。
-
业务价值或目的(Why):这解释了用户为什么要进行这样的活动,即交互背后的目的或期望的结果。
用户故事通常遵循“作为一个[用户角色],我想要[用户活动],以便[实现业务价值或目的]”的结构。例如:
作为一个在线银行客户, | |
我想要能够查看我的账户余额和交易历史, | |
以便随时掌握我的财务状况。 |
在敏捷开发过程中,用户故事被用作计划和跟踪工作的基本单位。开发团队会根据用户故事的优先级和估算的工作量来决定在迭代中实现哪些故事。随着项目的进展,用户故事可能会经过进一步的细化和讨论,以确保开发团队对需求有清晰的理解。
用户故事的好处包括:
-
促进沟通:用户故事鼓励团队成员之间以及与业务代表和用户之间的对话,有助于澄清需求和期望。
-
灵活性:用户故事允许开发团队在开发过程中适应变化,因为需求可以在迭代之间重新评估和优先级排序。
-
可估算性:由于用户故事通常较小且具体,开发团队可以更容易地估算实现它们所需的时间和努力。
-
价值驱动:用户故事强调交付对用户有价值的功能,帮助团队专注于最重要的事情。
在敏捷项目中,用户故事通常会记录在故事卡上,这些卡片可以在团队会议中讨论、估算和优先级排序。故事卡还可以包含验收标准,这些标准定义了故事何时被认为是“完成”的,从而确保开发的功能满足原始需求。
一个基本的用户故事
US 2-1:作为一个旅行者,我想通过一次性的操作,快速删除事先预定的订单包(含飞机票、酒店和门票)
在敏捷开发模式中,每个用户故事的描述过于简单,是不具有可测试性的,需要给用户故事增加验收标准。
ATDD
ATDD,即在设计、写代码之前,明确系统功能特性的验收标准
ATDD(Acceptance Test-Driven Development)是一种敏捷软件开发方法,它将测试驱动开发(TDD)的思想扩展到整个软件开发过程中。ATDD强调开发团队在开发新功能之前,应该先与客户或用户进行交流,明确需求和期望,并基于这些需求和期望编写测试用例。这些测试用例用于验证软件是否满足用户需求和期望,从而确保软件的功能和需求得到满足,提高软件的质量和用户满意度。
BDD
从ATDD演化出来一种具体落地的开发模式就是行为驱动开发(Behavior Driven Development,BDD)。BDD只是将验收标准更加明确化,可以看作ATDD的实例化,即列出用户故事所可能遇到的应用场景,而且将这种应用场景的表达方式规定为GWT格式
Given:给定什么上下文/条件 AND/OR 其他条件。
When:当什么事件被触发。
Then:产生什么结果 AND/OR 其他结果
例如,用户故事(US)2-1至少存在两个场景:
① 场景1 取消操作时,距离使用时间不到24h;
② 场景2 取消操作时,距离使用时间超过24h。
需求实例化
BDD再往前推进一步,就是需求实例化(Requirements By Example,RBE),更加明确需求的具体表现。
需求实例化是一种思想和方法,旨在通过具体的实例或场景来详细阐述和理解需求。这种方法以用例为驱动,聚焦于用户目的和场景的描述,采用了迭代和增量的方式进行分析。
需求实例化的主要目的是消除歧义、减少浪费,并确保需求在传递过程中不失真。通过实例化的方式,可以将抽象的需求用具体的例子描述得更清楚,帮助团队成员更好地理解需求,并减少在需求传递过程中可能出现的误解和偏差。
需求实例化通常包括以下几个步骤:
- 定系统:确定系统的边界,明确与外部系统、子系统的关系。
- 找用户:识别系统的用户,包括直接和间接的用户,以及他们的角色和职责。
- 找意图:明确用户的目的和需求背后的动机,确保真正理解用户的需求。
- 定场景:描述用户在特定场景下与系统交互的情况,包括前置条件、交互过程和后置条件。
- 列功能:根据场景和需求,列出系统需要实现的功能点,确保每个功能点都有明确的描述和验收标准。
通过需求实例化,团队可以更好地理解需求,减少误解和歧义,提高开发效率和质量。同时,实例化需求也有助于团队在短迭代或基于流的开发中有效地应对变更,保持文档的及时性和相关性。
例如,还是以上面用户故事US 2-1为示例,可以建立下列的需求实例化的内容