用户故事到需求实例化

news2024/11/19 10:18:49

用户故事

用户故事是敏捷开发方法中的核心概念之一,它提供了一种简洁的方式来描述软件功能需求,同时强调这些功能为用户或业务带来的价值。用户故事通常是由用户、产品经理或业务分析师编写的简短描述,用于与开发团队沟通需求,并作为开发工作的基础。

一个典型的用户故事包含以下几个关键要素:

  1. 用户角色(Who):这描述了谁会与系统进行交互,即系统的用户或用户群体。

  2. 用户活动(What):这描述了用户想要做什么,即用户与系统之间的具体交互行为。

  3. 业务价值或目的(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),更加明确需求的具体表现。

需求实例化是一种思想和方法,旨在通过具体的实例或场景来详细阐述和理解需求。这种方法以用例为驱动,聚焦于用户目的和场景的描述,采用了迭代和增量的方式进行分析。

需求实例化的主要目的是消除歧义、减少浪费,并确保需求在传递过程中不失真。通过实例化的方式,可以将抽象的需求用具体的例子描述得更清楚,帮助团队成员更好地理解需求,并减少在需求传递过程中可能出现的误解和偏差。

需求实例化通常包括以下几个步骤:

  1. 定系统:确定系统的边界,明确与外部系统、子系统的关系。
  2. 找用户:识别系统的用户,包括直接和间接的用户,以及他们的角色和职责。
  3. 找意图:明确用户的目的和需求背后的动机,确保真正理解用户的需求。
  4. 定场景:描述用户在特定场景下与系统交互的情况,包括前置条件、交互过程和后置条件。
  5. 列功能:根据场景和需求,列出系统需要实现的功能点,确保每个功能点都有明确的描述和验收标准。

通过需求实例化,团队可以更好地理解需求,减少误解和歧义,提高开发效率和质量。同时,实例化需求也有助于团队在短迭代或基于流的开发中有效地应对变更,保持文档的及时性和相关性。

例如,还是以上面用户故事US 2-1为示例,可以建立下列的需求实例化的内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1521301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面向对象(下)

目录 01、static1.1、static的使用1.2、static应用举例1.3、单例(Singleton)设计模式 02、main方法的语法03、类的成员之四:代码块04、关键字:final05、抽象类与抽象方法5.1、多态的应用:模板方法设计模式(TemplateMethod) 06、接口(interfac…

flink1.18.0 自定义函数 接收row类型的参数

比如sql中某字段类型 array<row<f1 string,f2 string,f3 string,f4 bigint>> 现在需要编写 tableFunction 需要接受的参数如上 解决方案 用户定义函数|阿帕奇弗林克 --- User-defined Functions | Apache Flink

C语言数据结构(7)——树、二叉树前言

欢迎来到博主的专栏——C语言数据结构 博主ID&#xff1a;代码小豪 文章目录 树二叉树特殊二叉树满二叉树完全二叉树 完全二叉树的存储结构 树 树是一个非线性的数据结构&#xff0c;由N个结点构成的集合。 树的各个结点由一个根结点联系起来&#xff0c;这个根节点没有前驱…

小球垂直跳动,C语言模拟重力加速度

位移公式 1、速度和时间关系&#xff1a; 2、位移和时间关系&#xff1a; 3、力和加速度关系&#xff1a; 4、空气阻力&#xff1a; 受理分析 以向下运动为正方向 1、向下运动整体受力&#xff0c;重力加空气阻力: 2、向上运动整理受力&#xff0c;重力减空气阻力&…

Apache zookeeper kafka 开启SASL安全认证

背景&#xff1a;我之前安装的kafka没有开启安全鉴权&#xff0c;在没有任何凭证的情况下都可以访问kafka。搜了一圈资料&#xff0c;发现有关于sasl、acl相关的&#xff0c;准备试试。 简介 Kafka是一个高吞吐量、分布式的发布-订阅消息系统。Kafka核心模块使用Scala语言开发…

MySQL基础架构

文章目录 MySQL基础架构一、连接器 - 建立连接&#xff0c;权限认证二、查缓存 - 提高效率三、分析器 - 做什么四、优化器 - 怎么做五、执行器 - 执行语句六、存储引擎1、存储引擎的概述2、存储引擎的对比3、存储引擎的命令4、存储引擎的选择 MySQL基础架构 大体来说&#xff…

力扣-20. 有效的括号(回顾知识哈希表,栈)

给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有…

HTML万字学习总结

html文本标签特殊符号图片音频与视频超链接表单列表表格语义标签(布局) html文本标签 标签简介<html></html>根目录<head></head>规定文档相关的配置信息&#xff08;元数据<body></body>元素表示文档的内容<meta></meta>表示…

“技多不压身”是什么意思?看完这篇文章你会明白:有了手艺,走遍天下都不怕!

“技多不压身”是什么意思&#xff1f;看完这篇文章你会明白&#xff1a;有了手艺&#xff0c;走遍天下都不怕&#xff01; 咱们的老祖宗流传一句话&#xff1a;“一招鲜&#xff0c;吃遍天。”这话说得直白&#xff0c;却道出了学一门手艺或技术对于人生的重要性。“李秘书讲…

Linux 学习笔记(16)

十六、 计划任务 在很多时候为了自动化管理系统&#xff0c;我们都会用到计划任务&#xff0c;比如关机&#xff0c;管理&#xff0c;备份之类的操作&#xff0c;我 们都可以使用计划任务来完成&#xff0c;这样可以是管理员的工作量大大降低&#xff0c;而且可靠度更好。 l…

电商经济和实体经济,哪个更有发展力?这篇文章讲的很详细!

我是电商珠珠 三年的冲击&#xff0c;使实体经济走向衰败&#xff0c;以至于到今天很多实体店仍无法正常营业&#xff0c;面临赔本的惨状。花大好几十万去做这件事&#xff0c;结果分币未挣。近年来&#xff0c;电商虽然发展的很快&#xff0c;但是平台众多&#xff0c;规则也…

“入站营销“VS“即时流量变现“客户该进谁家门?

在不断变化的市场环境下&#xff0c;两种主导战略“入站营销 ”和 “即时流量变现”决定了企业接触受众的方式。了解这些方法之间的根本区别对于企业制定有效的营销战略至关重要。 受众体的差别线索质量 “即时流量变现”&#xff0c;顾名思义&#xff0c;短时间&#xff0c;…

Leetcode - 周赛388

目录 一&#xff0c;3074. 重新分装苹果 二&#xff0c;3075. 幸福值最大化的选择方案 三&#xff0c;3076. 数组中的最短非公共子字符串 四&#xff0c;3077. K 个不相交子数组的最大能量值 一&#xff0c;3074. 重新分装苹果 本题是一道阅读理解题&#xff0c;就是将数组a…

springboot“力炫”健身馆网站

摘要 随着网络科技的不断发展以及人们经济水平的逐步提高&#xff0c;网络技术如今已成为人们生活中不可缺少的一部分&#xff0c;而信息管理系统是通过计算机技术&#xff0c;针对用户需求开发与设计&#xff0c;该技术尤其在各行业领域发挥了巨大的作用&#xff0c;有效地促…

7.1strcmp

strcmp 函数原型 extern int strcmp(const char *s1,const char *s2);规则 当s1<s2时&#xff0c;返回为负数&#xff1b; 当s1s2时&#xff0c;返回值0&#xff1b; 当s1>s2时&#xff0c;返回正数。 即&#xff1a;两个字符串自左向右逐个字符相比&#xff08;按ASCI…

springboot项目自定义切面增强方法功能(springboot记录日志)

说明 背景&#xff1a;记录系统接口日志入库&#xff0c;包含接口方法、入参、回参、响应时间、操作人、操作时间等信息。 方案&#xff1a;添加自定义切面处理 一、自定义切面注解 package com.gstanzer.supervise.annotation;import com.gstanzer.supervise.enums.Busine…

【BFS】走迷宫问题——acwing844

问题描述 给定一个 nm 的二维整数数组&#xff0c;用来表示一个迷宫&#xff0c;数组中只包含 0 或 1&#xff0c;其中 0表示可以走的路&#xff0c;1 表示不可通过的墙壁。 最初&#xff0c;有一个人位于左上角 (1,1) 处&#xff0c;已知该人每次可以向上、下、左、右任意一…

Ubuntu20下C/C++编程开启TCP KeepAlive

1、在linux下&#xff0c;测试tcp保活&#xff0c;可以使用tcp自带keepalive功能。 2、几个重要参数&#xff1a; tcp_keepalive_time&#xff1a;对端在指定时间内没有数据传输&#xff0c;则向对端发送一个keepalive packet&#xff0c;单位&#xff1a;秒 tcp_keep…

学习开发小程序的起航日记

2024年3月16日 不知不觉中三月份还只剩了一半的光景&#xff0c;我想写的内容还很多没有写&#xff0c;或者更应该说&#xff0c;是想积累的还有很多。现在最应该去完善Java的内容&#xff0c;可还是想先等等。想等搞清楚小程序部分&#xff0c;想等积累完小程序的内容。 这几…

unraid docker.img扩容

unraid 弹Docker image disk utilization of 99%&#xff0c;容器下载/更新失败 我的版本是6.11.5&#xff0c;docker.img满了导致容器不能更新&#xff0c;遇到同样问题的可以先用docker命令清除一下仓库(当然不一定能清理出来&#xff0c;我已经清理过只清理出来1G多点&…