关于用户故事

用户故事拆分方法总结 用户故事从用户的角度描述用户功能,它是一种轻量级、灵活的管理需求的方式。拆分用户故事,是敏捷开发过程中的一项重要的活动。遵循INVEST原则,参考通用的拆分方法,通过在日常工作中练习,你一定能做好。... 阅读详情

关于用户故事

用户故事,User Story,这个词儿来自于敏捷方法Scrum。到底什么是用户故事,因为近期重拾Redo一些项目方面和产品方面的工作,来整理整理相关知识。用户故事与另外几个概念,如用户故事切分、用户故事地图、用例、场景,都有啥关联或关系呢。

1、什么是用户故事

1.1 用户故事

用户故事,User Story。这是一个从属于产品设计的概念,它所指的,是从用户的角度来描述用户需求,要使用用户可以理解的业务预研来描述、切忌使用技术术语。

意即:

  • 角色:谁
  • 活动:需要做什么
  • 价值:为什么

用一句常见格式来描述,即:

As a role, I want goal/desire so that benefit.

或

作为一个“网站管理员”,我想要“统计每天有多少人访问了我的网站”,以便于“我的赞助商了解我的网站会给他们带来什么收益。”

用户故事要点(Ron Jeffries,3C):

  • 简述:用卡片(Card)来简要描述故事。
  • 细节:与Product Owner(或客户)交谈(Conversation)来明确细节。
  • 确认:验收评审,确认(Confirmation)被正确完成。

1.2 用户故事切分

故事有大小、长度,如何编写一个用户故事、才算得上好的用户故事?
它应该遵循INVEST原则:

  • 独立性(Independent):尽可能让一个用户故事独立于其他用户故事,解除相互依赖性,便于确定优先级、评估工作量。可以通过组合、分解的方式来达到“独立性”的目的。
  • 可协商性(Negotiable):这个用户故事的内容可以协商,是一个简短的描述,而具体细节在沟通阶段产出,避免过多的细节限制了与用户的沟通。
  • 有价值(Valuable):这个用户故事,必须对客户具有价值,因此应该站在用户的角度去编写,描述的是一个一个的feature,而非一个一个的task。
  • 可以估算性(Estimable):这个用户故事,优先级、工作量、安排计划,都是可行的,以减少评估上的不确定性。
  • **短小(Small):一个好的用户故事,可评估的工作量要尽量短小,确保在一个迭代周期内可完成。用户故事越大、风险越大。
  • 可测试性(Testable):这个用户故事可以测试以确认是可以完成的,所以必须在定义了验收测试通过的标准后才能认为故事划分完毕。

为了保证用户故事的颗粒度,上面说到了组合、分解的方法,我们也可以灵活应用,目标就是为了让产出的软件能够(Rachel Davies):

  • 能够工作
  • 交付价值
  • 能有效地得到用户的反馈

对于用户故事切分,不同的前辈也总结出一些更多的进一步的方法可供借鉴。

  • Richard Lawrence方法:

    • 根据工作流程的步骤来切分故事
    • 让业务规则中的每种变化都是其自身的故事
    • 切分“实现第一个[x]”,然后“实现其他的[x]”
    • 复杂故事中,将最简单的版本切分为单独的故事
    • 通过故事所操作的数据类型来切分
    • 通过简单数据输入方法和复杂方法之间的区别来切分故事
    • 当前故事的性能转移到一个或多个新故事
    • 按照CRUD(创建/读取/更新/删除)来切分
  • Bob Hartman方法:

    • 根据角色来切分
    • 将高风险和低风险的分离
    • 在每个故事上工作的开发者数量最大化
  • Rachel Davies对于根据输入/输出的数据来切分故事的方式提供了一些细节处理方法:

    • 可以为每个输入页面创建故事
    • 可以为输入页面每个可用元素创建故事
    • 可以创建简单的UI(简单≠漂亮)
    • 可以创建一个命令行界面

1.3 用户故事地图

当我们开始进行一个产品或者项目规划的时候,首先需要梳理出一个backlog,在其中按照优先级列出所要实现的场景和具体功能。

而用户故事地图就有这么一种功效。
这里写图片描述
这里写图片描述
用户故事地图,代表一个完整的用户故事。其核心是一条从左到右的时间线(横轴),以及其下的自上而下的必要程度线(纵轴)。

  • 时间线(横轴,从左到右)

    • 在时间线的上方防止最大粒度的内容(可理解为Epic 史诗,即比较大的User Story);
    • 在时间线的下方放置二级粒度的内容(可看做backlog item,即待办列表项);
    • 在二级粒度内容的下面放置三级粒度的内容(即切分好的用户故事,可作为User Story Task)。

以上形式可以灵活按照实际产品情况进行削减,去掉Epic、将backlog item移到时间线上面。

  • 必要程度线(纵轴,自上而下)

用户故事地图的纵轴,而对于上述的Task(最小用户故事),按照必要程度、重要程度自上而下往下排列。

通过这种方式的划分,可以制定backlog及task用户故事的优先级,并安排迭代周期、迭代版本及对应任务。

大家一定多多少听过MVP,即Most Variable Product 最小化可用产品。这个概念,源于《精益创业》(埃里克·莱斯),有一定了解的朋友一定知道,MVP的目的是以最小的投入发布对用户有价值的产品,帮助我们快速试错,并通过不停的迭代最终找到产品的正确方向。

2、用户故事与其他相关概念

2.1 用例

Use Case

User Story关注的是业务场景和用户故事,更倾向于以用户角度描述响应业务功能的业务价值。用户故事会比较简单,重点是把业务需求和场景(或含业务价值/商业价值)说清楚即可。

而Use Case 用例,它包含了有业务用例和系统用例。其用例建模比较复杂,会涉及到业务流程、业务规则、输入、输出、界面和交互等等。

用户故事与用例里面的业务用例有点类似。但是,用户故事的粒度往往比用例的粒度更细化,如用例中的基本流、扩展流、业务规则都可能转化为用户故事(见上面“1.2用户故事切分”)。

还有一种比较明显的思维/角色/对象上的区别。用户故事从产品角度、业务场景看待,重在用户使用产品的目的/任务/流程/情节等等;而用例面向需求人员和开发人员,重在逻辑、次序。

2.2 场景

Scenario

Scenario 场景,有两拨人在用,当然,他们所指的含义也不一样。

  • 交互设计师(如Alan Cooper)
    • 在RUP(Rational Unified Process)中已有辨析:“场景”在 RUP 内部指用例实例,即只是一个经过可能的基本流和备选流的特定“路径”(即Cockburn所说的“一个行为序列”)。
  • 需求分析师(如Alistair Cockburn)
    • 在以用户为中心的设计方法和用户界面设计方法中常常将“场景”描述为使用经历(Cooper就这么做),这实际上包含了更多的细节,而不仅局限于事件流。虽然该附加信息可能与后来的设计阶段无关,但它对于了解用户、任务和环境却必不可少。

因此,场景可以在业务建模工作流程中广泛应用,但是在需求工作流中,重点则转移到用例上。

Alistair Cockburn:“用户故事”相当于“场景”的标题,而“用例”则是多个“场景”内容的集合。



参考:

百度百科:user story

泽众软测:User Story

知乎:User Story与Use Case的异同;User Story与Use Case是偏等价关系

新浪博客: User Story Mapping初体验;任务、用例、用户故事和场景

人人都是产品经理:创建用户故事地图



用户故事讲解(看最后的例子,你应该就知道怎么样写用户故事了) 一、什么是用户故事 用户故事描述了对用户、系统或软件购买者有价值的功能。一个好的用户故事包括三个要素: 1.角色:谁要使用这个功能。 2.功能:需要完成什么样的功能。 3.价值:为什么需要这个功能,这个功能带来什么样的价值。 二、如何编写用户故事 故事应该很清晰地体现对用户或客户的价值,最好的做法是让客户团队来编写故事。客户团队应包括能确定软件最终用户需求的人,可能包括测试者,产品管理者,真实用户和交互设计师。因为他们处于描述需求的最佳位置,也因为随后他们需要和开发者一同设计出故事细节并确定故事优先级。 为 阅读详情

相关推荐

用户故事地图

用户故事地图 用户故事是描述用户需求分析的一个好方法,可以将backlog变成一个二维地图,从而容易看到整个规划的全貌,帮助开发人员快速的了解客户的需求,并确定产品模块的实现优先级,实现最大用户价值,学会讲一个好的用户故事是很有用的。 一个基本的用户故事包括三个要素:角色、活动、商业价值,其固定的描述格式:作为什么角色,要进行什么活动,才能实现什么商业价值。这个固定语句格式,只是了解用户故事的

zhaole524的专栏 5557

敏捷开发中史诗故事与用户故事的颗粒度

作者:陈勇       出处:blog.youkuaiyun.com/cheny_com       用户故事的颗粒度一直是一个谈论已久的话题,但参加了很多研讨会,搜索了很多网络资源后发现一直没有定论,只好在这里原创一下。 前言:为何需要讨论用户故事的颗粒度 其实需求颗粒度的问题由来已久,即

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 1万+

什么是用户故事

# 一、 什么是用户故事? ## 一、用户故事的概念 概念这种东西我喜欢说文解字的方式去理解和阐述;用户故事=用户+故事=人+故+事,那就是一个人因为什么原因要做什么事,提炼出来三要素就是who、why、what。从需求角度描述就是一个用来确认用户和用户需求的简短描述。 ## 二、用户故事的三要素 用户故事在软件开发过程中被作为描述需求的一种表达形式。为了规范用户故事的表达,便于沟通,用户故事通常的表达格式为:作为一个<用户角色>, 我想要<完成活动>, 以便于<实现价

jackey_sdc的博客 1896

划分用户故事(user-story)的原则

在敏捷开发过程中是通过用户故事来将需求具体化成可以进行迭代开发的一个个现实的可见的开发任务。因此在敏捷软件的开发过程中,用户故事的划分对于迭代和开发起着举足轻重的作用。 用户故事从其名字来看是站在用户的角度所描述的故事,同时也是用户所能看懂的故事,开发人员最容易犯下的一个错误就是站在自己的角度去思考和划分故事,这样就背离了用户故事的初衷。 那什么是用户故事?首先来说用户故事是对需求的细

rxr1st的专栏 2万+

讲故事的用户故事样例之1

曾几何时开始,用户故事的写法成了 用户故事经典句式+验收条件。 在https://blog.versionone.com/agile-acceptance-criteria/ 上提供了如下一个故事的样例。As an executive, I want to be able to filter the dashboard by department so that I can isolate dat

高效软件开发 5618

如何写好用户故事?

“什么是用户故事?为什么要写用户故事?用户故事可以带来哪些优势?” 在创建产品线路图或用户故事地图之后,就可以着手编写用户故事了。如何将产品线路图或者用户故事地图中的需求细化、拆分、编写用户故事,并让其更容易管理,比如:工时评估、优先级排序等等,本篇文章将会详细介绍。 01 什么是用户故事? 用户故事是从用户角度描述产品业务需求的一种方法, 它是敏捷框架中最小的工作单元。它的主要目是让业务人员和技术团队都可以理解需求。用户故事是一种清晰、有效定义产品需求的方式,并可以避免或.

m0_60202396的博客 2679

敏捷工具:用户故事地图梳理需求全景

文长:2770字时长:8分钟针对人群:用户体验设计师,业务分析师,产品经理,研发工程师1 概念什么是用户故事:迭代开发的一种工具代表了可开发的一个工作单元帮助我们跟踪一...

hailang2ll的专栏 3323

用户故事与敏捷方法—一些用户故事(实战二)

为了生成初始的故事清单,团队决定召开一次故事编写工作坊。团队决定从一个特定的用户角色或者虚构人物开始写出团队所能想到的所有故事,然后考虑下一个角色或者虚构人物。 Teresa的故事 团队决定从识别出的虚构人物Teresa入手。 故事卡1:用户可以使用作者、数名或者ISBN搜索书籍 故事卡2:用户可以查看书籍的具体信息。包括出版日期、内容简介、页数 故事卡3:用户可以把书籍放进“购物车”,...

ChibiMarukoChan的博客 1304

敏捷Agile: Epic vs UserStory vs Task

Epic-Story-Task Epic Epic是User Story逻辑上的集合, 一个Epic可以被break down成多个小的User Story; 一个Epic可能需要多个Sprint才能完成. User Story vs. Task 在JIRA中,User Story与Task可以算作同一级别,其中 User Story 可以代表一个user feature, 一个有user va...

邮箱 rex.guan@outlook.com 8606

Microchip Studio 7.0 从下载到项目调试:AVR开发者的完整入门指南(附常见问题解决)

本文为AVR开发者提供了Microchip Studio 7.0从下载安装到项目调试的完整入门指南。详细介绍了如何获取安装包、创建第一个AVR工程项目,并配置编译与调试环境。同时,文章重点解决了开发过程中常见的编译错误和仿真问题,帮助开发者快速上手并高效使用这一官方集成开发环境。

joy55的博客 336

机器人抓取(一)—— ROS MoveIt! 程序控制真实UR5机器人运动(python)

接上篇:ubuntu18.04 ros-melodic 安装 ur_robot_driver,驱动真实的 ur5 机器人 上文在 ubuntu 系统中配置了ur 机器人ros功能包 universal_robot 和驱动 Universal_Robots_ROS_Driver,并实现了用 moveit_rviz 拖动机器人运动。本文旨在学习如何使用 moveit python 用户接口moveit_commander,实现真实的ur5 机器人轨迹规划与控制。 1. ur5 机器人控制 参考:MoveIt »

zxxRobot的博客 1万+

用户故事,史诗故事和主题故事

本文转自:scrum中文网 文章链接:http://www.scrumcn.com/agile/scrum/18871.html 敏捷团队喜欢以一种刚刚好的方式处理需求。我们采用最低限度地、逐渐细化并保存在产品待办项(Product Backlog)中的特性描述文字,来替代传统长篇大论的需求文档。 我们发现用户故事是最好的描述方式,这种形式能够捕获到特性足够多的信息,并促进产品负责人和团队在...

Agile_zhanglao的博客 5552

利用Matlab高效处理Comsol仿真数据的可视化技巧

本文详细介绍了如何将Comsol仿真数据高效导入Matlab并进行专业可视化与后处理。核心内容包括正确的数据导出格式设置、三维矩阵重构方法、二维截面与三维体渲染技巧,以及基于Matlab的定量分析与批处理自动化流程,帮助工程师和科研人员深度挖掘仿真数据价值,提升工作效率。

weixin_29065791的博客 362

用户故事与用户故事地图——互联网平台建设

全文包括什么是用户故事、如何讲故事、用故事进行沟通、用故事进行产品设计、用户故事地图、用户故事与用户画像、应用实践七部分。enjoy~ 以下是数字化转型的分享线路图,您现在所在的位置为序号的分享:生态圈建设中,最关键的一部分,载体之平台建设。 以下是正文: 我们开始分享平台设计的用户体验部分,这个是平台建设中,平台的用户体验,是企业全链路精准用户体验...

测试0901-1 1815

InSAR图像配准:从像素级到亚像素级的精度提升策略

本文深入探讨了InSAR图像配准技术,从像素级到亚像素级的精度提升策略。通过分析最大频谱法和相干系数法的适用场景,结合频域补零插值和四叉树分块等高级技术,实现1/8像素级的高精度配准。文章还提供了实用的精度验证方法和常见问题排查指南,为InSAR数据处理提供全面解决方案。

nginx7reverse的博客 836

【SECS】初识SECS协议

项目标题的第一位和第二位告诉下面有多少字节表示项目的长度。而项目的长度是指项目标题后面的字节数,这里第一个字节就是项目标题。1个字节可以表示的最大长度是0-255,所以只要项目标题后面的字节数小于等于254,都是0x01。

weixin_48618536的博客 1644

用户故事详解

介绍 在敏捷开发中, 用户故事 (user stories) 是一种轻量级,更灵活的替代品指定软件需求的传统方法 - 软件需求规范,用例规格等。 实际上,可以说用户故事是最重要的敏捷开发 (Agile Development) 中的工件 (Artifacts),因为它是主要将值流传递给用户的容器,敏捷开发就是快速实现价值 (Value)。 用户故事也可以作为我们整个增量价值交付 (increm...

Warren Lynch 的博客 2万+

【ArcGIS Pro微课1000例】0073:ArcGIS Pro3.5.2学习版下载及安装教程

ArcGIS Pro 3.5.2安装教程摘要:系统需Windows10及以上,8GB内存(推荐32GB)。安装步骤:1)安装.NET 8.0运行环境;2)执行主程序安装包,按向导完成基础安装;3)安装升级补丁;4)替换AfCore.dll文件并导入注册表。注意安装后删除临时文件节省空间。软件下载地址包含在百度网盘链接。安装过程需依次完成环境配置、主程序安装、补丁更新及破解步骤。

智慧空间实验室 1781

如何编写用户故事

在 LLM 时代,用户故事的编写应始终优先聚焦于问题定义,即角色-价值对,避免直接陷入解决方案的细节。通过有效地拆分用户故事,设计合理的整体解决方案和用户旅程,能够确保开发工作始终围绕用户的核心需求展开。

pumpkin84514的博客 1537

NSGA-II 多目标优化 —— 理论、案例与交互式 GUI 实现

本文详细介绍了 NSGA-II 多目标优化算法的基本原理、数学模型和实现流程。从非支配排序、拥挤距离计算到遗传操作,NSGA-II 通过对种群进行分层和排序,能够有效求解多目标优化问题,获得 Pareto 前沿解集。通过机械结构优化、资源分配和控制参数调优等典型案例,我们展示了 NSGA-II 在实际工程中的广泛应用。为帮助工程师和研究者更直观地理解算法求解过程,本文提供了基于 Python 与 PyQt6 的交互式 GUI 演示系统代码示例。

闲人编程的博客 2120

【问题解决】Python 异步 asyncio 卡死、协程不执行、任务泄漏,保姆级排错

本文详细分析了Python异步编程中常见的卡死、协程不执行和任务泄漏问题。文章首先列举了这些问题的典型表现,如程序卡住、死锁、任务未启动等。然后深入剖析了各类问题的根源,包括同步阻塞操作、未正确await、资源未清理等。针对这些问题,文章提供了两套解决方案:一是异步编程最佳实践,包括安全协程执行、带超时的执行、任务清理等实用方法;二是死锁检测和预防机制,通过锁管理和等待图分析来避免死锁。文章还包含可直接使用的代码示例,帮助开发者快速定位和解决异步编程中的常见问题。

博客 450

用户故事编写指南:写出最贴近用户实际场景的故事

用户故事都会写,但如何写才能更贴近用户实际场景?

minjiekaifa的博客 3705

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

全面解析用户故事地图

昨天一篇文章我们给大家分享了用户故事,这篇文章我们来分享故事地图。什么是用户故事地图?“用户故事”的概念来源于敏捷开发的理念。用户故事是从用户的角度来描述自己渴望得到的特性以及带来的价值。...

liudada8265的博客 6572

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

用户故事,什么是用户故事,怎么描述用户故事

用户故事,意为来描述用户渴望得到的功能。包含以下3个要素: 角色 who 要尽可能具体 开发团队不是用户 活动 what 通常每个用户故事都是唯一的 “系统”是暗示的,不会写在故事中 主动,而不是被动(“我可以得到通知”) 价值 value 许多故事可能共享相同的利益声明。 优点可能是其他用户或客户,而不仅仅是故事中的用户。 通常描述方式为: 作为<用户角色>,我要<完成活动>,以便于<实现价值> 例如, 作为<客户>,我想要<扫码登陆>,以便

Demon's blog 1044

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

今天谈谈用户故事地图,不是用户故事

摘要:用户故事地图其实并非是将描述好的用户故事汇总在地图上。而是通过分析、梳理,将用户故事展现出来,进而汇成了一副用户故事地图。

华为云官方博客 1788

敏捷的重要工具——用户故事

敏捷最重要的思想是关注交付价值,如何确定价值?需要沟通,需要新软件的人必需和开发新软件的人充分沟通,一个合适的工具“用户故事”、应运而生。(客户在项目整个过程中全程参与)

u011906276的博客 2990
上一篇: 【转】大企业的敏捷开发
山书生
博客等级 码龄23年 150粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值