敏捷需求管理(一):从用户想法到Product Backlog

如何从最初的客户想法到持续维护的 Product Backlog, 大家的做法各有千秋。这里分享我们的一些做法,见下图:

第一步:独立需求。这里是从愿景开始,根据角色、行为、数据对象拆分为独立的需求

第二步:粗颗粒细化需求。这里的目的是为了分析成本考量,但并不是类似 Use Case那样的细化,只需要包含 90%的用户使用场景即可,有很多做法,其中一个是选择 3个 examples,一个 happy path,另两个是使用频率较高的异常流程。这里主要涉及的是商业规则

第三步:价值 /成本分析,这里要分析价值、成本,在此基础上再次拆分故事,最后完成优先级的排序

第四步: Velocity分析,目的是可以明白团队完成的速度

第五步:制定发布计划,根据发布目标、团队完成的速度,选择故事组,这里要考量发布目标会形成故事的耦合和依赖

第六步: PO组和开发团队分步进行故事细化和故事开发,这里要考量的是 Product Backlog的持续管理、大团队 PO团队和开发团队的协作方式等。

 

故事分为两种:一种是获得客户需求的故事,另一种是准备进入开发的故事。前者不需要细节,后者需要更多的细节。在开发团队进行迭代的过程中, PO团队同步在进行下两个迭代的需求细化,即 PO团队一定会比开发团队领先两个迭代。在 PO的迭代过程中,可以和开发团队的核心人员在一起讨论,讨论的内容包括: PO提供更多的选择,由开发团队从技术的角度反馈,然后约束 PO的选择。这个过程最好在迭代开始之前完成。开发团队在质疑需求的时候,可以从以下角度: Who(使用该需求的角色)是否有更多,他们对应的属性?、做什么、业务规则、业务数据、交互界面、质量标准等

 

敏捷产品管理之梳理 Backlog 上篇文章大家都学习到了如何描绘产品愿景,其实就是通过粗粒度级别的选择性描述这一简约方式,来激发大家的创造力和执行力。那如何在愿景建立以后确定每次迭代周期里的需求大小、需求的优先级以及验收的标准,这就是 Backlog 发挥出的巨大作用。 Backlog 英文意思为“积压的工作“,Product Backlog 其实就是一个具有优先级的需求列表, 并对每个需求进行了粗略的估算。 首先我们来区别一下传... 阅读详情

相关推荐

软件项目管理 4.3.敏捷需求建模方法

软件项目管理 4.3.敏捷需求建模方法 【公众号 “项目管理研究所” 将会第一时间更新文章并分享行业分析报告】 归档于软件项目管理初级学习路线 第四章 软件需求管理 《初级学习路线合集 》 前言 大家好,这节我们学习软件项目管理—敏捷需求建模方法。 一、建模方法 敏捷思维认为项目需求是慢慢清楚的过程,对需求可以采用渐近明晰的方法应对变化。 敏捷需求从Product Backlog(产品待办事项列表)开始,需求的来源包含产品想法的一个有序列表,一个长短不定列表,可以是模糊的或是不具体的,逐渐完善,越

weixin_43394532的博客 1959

需求分析

NABCD模型&产品Backlog ●一、NABCD模型 1) N (Need 需求)   为了解决餐饮企业在同行中的竞争优势,为用户提供方便快捷的点餐服务,减少顾客到店后的点餐、等餐及结算过程消耗的时间,免去花费大量时间去排队,减少了服务人员因为忙碌而导致下单慢的问题,也减少了服务员等待顾客选餐的时间,给客户带来极大不同的用户体验。 2) A (Approach 做法)...

weixin_33816611的博客 185

Jira新手必看:Scrum敏捷开发中的Backlog、Epic、用户故事到底怎么用?

本文详细解析了Jira在Scrum敏捷开发中Backlog、Epic和用户故事的核心概念及实践应用。通过Jira操作指南和实用技巧,帮助新手快速掌握如何有效管理项目需求、组织Epic和编写高质量用户故事,提升团队协作效率。

plum99的博客 223

【敏捷开发】Scrum之Product backlog的编写

敏捷开发的Scrum框架中,产品backlog的编写,是所有敏捷实施中的开始和核心。Scrum的产品backlog,从根本上来说,它就是由需求组成的一个列表,通过用户故事(user story)的形式来展示出来,并按照业务价值和重要性进行了优先级排序,并且需要在列表中对每条故事的验收标准进行说明。产品列表应该包含的重要信息:产品列表需要一个可以共享的工具进行管理,虽然正规意义上来讲,这个文档应该归产品负责人所有,但是我们并不能把团队的其他成员排除在外,team成员需要频繁的使用文档,来对需求的信息进行确认.

f135917h的博客 2424

手把手教你用Arduino和开源电路DIY一个手机连接的电化学传感器(附GitHub源码)

本文详细介绍了如何利用Arduino和开源电路DIY一个手机连接的电化学传感器,成本不到300元即可复现价值数千元的专业设备。从硬件选型、电路搭建到固件开发和手机应用实现,手把手教你完成整个项目,特别适合科研人员、环境监测爱好者和理工科学生。附GitHub源码,方便快速上手和扩展功能。

weixin_42561040的博客 336

深入傅里叶级数与傅里叶变换:从基础到应用

傅里叶分析为我们提供了一种理解信号频率结构的强大工具。从傅里叶级数到傅里叶变换,再到快速傅里叶变换(FFT),其理论与应用紧密结合,对现代科学技术的发展意义非凡。如果你对信号处理、数据分析或工程计算感兴趣,傅里叶分析是必须掌握的基础工具。希望本文能帮助你对傅里叶分析有更深入的理解!如果有问题或想法,欢迎在评论区讨论!

qq_56683019的博客 3523

敏捷开发:Scrum 中的 Product Backlog 详细介绍

Product Backlog 产品待办列表# 在计划开发产品功能时,都希望产品功能上线后,用户能够喜欢并经常使用。 因此在开发产品新功能时,就要衡量哪些产品需求是对用户最有价值,这是最应该思考的问题。 然后把这些有价值的需求集合放在一起。当然,也有与需求实现相关的其它工作项。 在 Scrum 框架中,把产品待开发的功能集合放在一起就叫产品待办列表(Product Backlog)。它是 Scr...

weixin_36939718的博客 804

【EMC电磁兼容】02.04——原理图的实战落地细节

原理图上的关于EMC的落地体现一、元器件的选型二、原理图上的EMC体现在哪里?1.芯片电源管脚滤波去耦:2.时钟电路滤波设计3.低速电路滤波抗干扰设计4.通讯接口电路的防护滤波5.系统输入电源端口电路的防护滤波6.系统接地的定义7.芯片软件功能的审查 一、元器件的选型 ​ 原理图最初设计涉及到选型元器件方面: 元器件选型 不仅仅功能需要满足要求,还需要考虑其它细节参数在不同应力下的反应,封装的不同也会产生不同的变化。 元器件替代 常常因为成本原因进行器件替代,除了要考虑功能参数相同时也要考虑系统参数

Time to Forget 2243

敏捷学习~backlog

如何编写产品backlog 产品 backlog 是 Scrum 的核心,也是一切的起源。从根本上说,它 就是一个需求、或故事、或特性等组成的列表,按照重要性的级别 进行了排序。它里面包含的是客户想要的东西,并用客户的术语加 以描述。 backlog一般包含这几个字段 ID-----统一标识符,一个自增长数字 Name ----- 简短的描述性故事名 Importance-----重要性 Inisital estimate ---- 团队初步估算工程量(包括story point ,一般大致相当于一个“理

lingjunjie的博客 1918

02.Palantir Foundry平台功能和应用全景图

本文深入解析 Palantir Foundry 平台核心功能与应用全景。

687

三极管稳压电路仿真分析

Z1的负极连接到三极管的基极,三极管发射极E是输出,形成了一个射极跟随器,也就是说,E极的电压随着B电压变化而变化,但BE之间有一个压降,一般硅管0.7V左右,假设B极是6.7V,那E极就是6.7-0.7=6V,所以就有一个公式VOUT=Vz-Vbe,可以根据VOUT来选择合适的稳压管。从稳压管的SPEC中我们可以看到,Vz@Izt这个参数,指在Izt=20mA时,稳压管的稳压值Vz=5.1V,也就是说流过稳压管的电流在20mA以上,稳压效果最佳。三极管导通之后,E点电压会升高,当升高到Vbe。

U_YAO的博客 2325

产品Backlog和需求管理

产品backlog是一个按照价值排序的需求清单。为了达成产品目标,所有的需求都需要放到产品backlog中进行管理和规划。由

1579

Jetson编译安装pycuda

可使用nvcc --version查看是否有信息输出,若没有,且安装cuda的情况下,需要手动将CUDA 的路径添加到环境变量中。编译生成_pvt_struct.cpython-38-aarch64-linux-gnu.so文件。基于jetson orin nano jetpack512模块上安装pycuda。4、获取pycuda源码(版本根据实际情况获取)2、进入conda环境并安装cuda工具包。9、若未检测出来需要清除并强制编译。7、编译成功后安装pycuda。5、配置编译并设置环境变量。

qq_48175141的博客 972

Scrum 之 product Backlog

Scrum 之 product Backlog 转载自周金根 [ http://zhoujg.cnblogs.com/ ] Scrum的基本概念其实并不复杂,但是想做好并不容易,大家都知道product backlog的重要性,但是我们如何制定和展现它,如何评定优先级,如何进行初始评估?下面我将介绍和product backlog相关的一些问题。 在Scrum之 流程和术语介

wikiWang的专栏 1389

基于LightGBM和多模型融合的量化交易研究:沪深300为例【附代码】

📊 数据科学与大数据专业 | 数据分析与模型构建 | 数据驱动决策✨ 专业领域:数据挖掘与清洗大数据处理与存储技术机器学习与深度学习模型数据可视化与报告生成分布式计算与云计算数据安全与隐私保护💡 擅长工具:Python/R/Matlab 数据分析与建模Hadoop/Spark 大数据处理平台SQL数据库管理与优化Tableau/Power BI 数据可视化工具TensorFlow/PyTorch 深度学习框架✅数据科学与大数据技术毕业论文【数据】

lagougongzuoshi的博客 1670

Android16 3576 u盘固件升级功能添加

1.在u-boot/drivers/power/pmic/rk8xx.c。这里是读取power键的寄存器判断长短按。

tzj1058756809的博客 575

ACP科普:Product Backlog、Spring Backlog、Product Increment

Product Backlog、Spring Backlog、Product Increment是敏捷开发、ACP考试里常见易混淆概念。本文澄清一下。

Arthur Guo 的专栏 1354

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Scrum敏捷初识

一、Scrum的初识    软件市场发展越来越迅速和成熟,传统瀑布式开发模式存在一定的限制,敏捷从而有了更广阔的的平台与机遇。Scrum作为在敏捷中使用最常用的一种方案,受到众多的关注。    下图是典型的Scrum执行架构图。    其中,涉及很多的要素,以下部分将一一说明。    这其中,加入自我的理解,整体运作,主要在与两个关键环节:1,需求收集整理;2,研发流程控制。作为小小的产品经理,似...

未来~超越自己 4642

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Scrum在需求管理中的实践方法

接下来,在Sprint Planning会议中,团队会从Product Backlog里挑选高优先级的需求,纳入当前Sprint。从Product Backlog的优先级排序,到Sprint Planning的任务细化,再到日常跟踪和反馈循环,每一步都让需求更可控、更灵活。如果你也在为需求多变而头疼,不妨试试Scrum,从小处着手,比如先建立一个简单的Backlog,再逐步引入会议机制。记住,关键在于团队共识和持续改进,需求管理不是一蹴而就的,而是通过一次次迭代不断优化的旅程。

2509_93941743的博客 477

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Product Backlog的理念

Scrum的第一步是产品所有者清晰地展示产品的未来景象(vision)。这些是以按需求的优先列表展示的,按客户和商业价值排序,最高价值的项目排在列表顶端。这就是Product Backlog,它存在(并发展)于产品的整个生命周期。在项目开发的任何时候,Product Backlog是唯一具有权威性的“以优先权排序为准,需要完成的所有任务“的概况。只可以存在唯一一个Product Backlog

2311

产品待办列表梳理技巧:如何让Product Backlog始终健康有序

Scrum指南》将Product Backlog定义为所有潜在工作的有序清单。但很多团队在实际使用中,Backlog会逐渐产生需求堆积、条目冗长、粒度混杂的问题,导致迭代计划只能凭感觉挑选。本文面向产品负责人、Scrum Master和管理者,提供一套可落地的梳理方法。

2601_96002766的博客 182

混合敏捷研发(二) 敏捷开发中,Product Backlog 是否足以实现需求管理?

敏捷开发中,Product Backlog 是否足以实现需求管理? 敏捷方法指导团队将产品需求置于Product Backlog中管理,并按照优先级对每个产品需求进行必要的排列。在计划会(Planning Meeting)之前,由Product Owner从Product Backlog中挑选迭代周期准备开发的意向表(Willing List)进行总体...

weixin_34148456的博客 231

03-我们怎样编写Product Backlog

Product Backlog 是Scrum的核心。 它就是一个需求、或故事、或特性等做成的列表,按照重要性的级别进行排序。里面包含客户想要的东西,并用客户术语描述出来。我们称作"故事"(Story),有时也称作"Backlog 条目"。 "故事"包括如下字段: ID:统一标示符,自增字段。防止"故事"重复。 Name(名称):简短的、描述性的故事名称。它必须要含义明确,这样产品负责人和开...

weixin_34072458的博客 398

软件产品待办列表管理化的需求管理

软件产品待办列表(Product Backlog)作为敏捷开发中的核心工具,能够帮助团队高效管理需求、优化优先级并快速响应变化。如何将待办列表管理化,使其真正成为需求管理的利器,是许多团队面临的挑战。本文将从几个关键角度探讨如何通过科学化的方法提升待办列表的需求管理效率,为团队提供实用参考。例如,若竞品上线了新功能,团队可临时提升相关需求的优先级,确保产品竞争力。例如,测试团队提前介入需求评审,能更早发现潜在问题,避免后期返工。科学的待办列表管理能将碎片化需求转化为有序行动,最终实现产品价值的最大化。

kxmsbd_735的博客 162

Learning Scrum - The Product Backlog

http://www.mountaingoatsoftware.com/scrum/product-backlog The Product Backlog is the master list of all functionality desired in the

sony315的专栏 738
上一篇: 迭代开发还是流开发(二):Kanban提供了哪些不同思路
下一篇: 敏捷需求管理(二):如何有效拆分用户故事
Andy_AgileDo
博客等级 码龄17年 69粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值