ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

敏捷需求管理四要素:用户故事、优先级、迭代计划与闭环实践

敏捷需求管理四要素:用户故事、优先级、迭代计划与闭环实践 上周一个做智慧园区集成的朋友打电话给我说他们团队快被需求拖垮了。客户今天说大屏要加一个告警弹窗明天说接口字段要调整格式需求群里每天几百条消息开发抱怨需求从来不说人话产品经理也觉得委屈说客户原话明明都复制过来了。我帮他分析了一个晚上发现他们缺的不是加班而是把需求管起来的那套机制。后来在华为云DevCloud上帮他们搭了一套需求管理流程核心抓手就是四个关键词用户故事、优先级、迭代计划、需求闭环。这四个词看起来基础但绝大多数团队真没吃透。这篇文章就结合我在系统集成项目里的实操经验聊聊这四个关键词到底怎么落地到日常管理里。1. 为什么敏捷需求管理总在“救火”1.1 传统需求管理的三座大山很多团队长期依赖“需求规格说明书”来传递需求总觉得文档写得越厚越安全。做过系统集成的人应该都有同感一份几千行的SRS写完评审会开完大家觉得差不多了结果到了开发阶段发现很多描述含糊其辞同一个字段在第三章和第八章里的定义还不一样还要拉上客户反复确认。文档本身没有问题问题在于它太容易变成“一次性交付物”写完就束之高阁需求变更了也没人同步更新久而久之文档跟实际系统成了两个世界。第二座大山是变更审批流程过长。传统模式下一次需求变更要经过客户代表、项目经理、架构师、测试负责人层层签字审批周期动不动就是一周。集成项目里接口联调阶段某个第三方系统突然改了一个返回码如果按照老流程等审批整个迭代都得停摆团队只能口头约定先改后补单据时间一长变更记录就是一笔糊涂账。第三座大山是信息在传递中不断损耗。客户讲给销售听、销售讲给产品听、产品写成文档给开发看、开发理解完再给测试讲验收口径每一层都会加入自己的“脑补”。等做出来客户说“这不是我要的”其实是任何一个中间环节出现了理解偏差。这种损耗在传统长周期交付里几乎无法避免因为反馈回路太长等发现偏差时间成本已经付出去了。1.2 敏捷需求管理的核心逻辑小步快跑价值驱动敏捷需求管理的思路是把这个反馈回路缩短。不追求一次性把需求文档写满、写透而是把大需求拆成小块以固定节奏持续交付、持续获取反馈。需求不需要在开始就知道所有细节但每个迭代要交付的局部必须足够清晰、可验证、有明确价值。敏捷宣言里强调“可工作的软件胜过详尽的文档”并不是说不要文档而是说文档要为交付服务而不是为了写而写。需求管理落到工具上就是要有唯一的需求池产品待办列表、明确的状态流、可追溯的工作项关联关系。华为云DevCloud提供的Scrum模板正好覆盖这些能力。它不只是一个“电子表格看板”更是一个把用户故事、任务、缺陷、测试用例、代码提交关联起来的工作平台。工具本身不能解决需求混乱但如果规则定得对工具能放大规则的效果把团队的习惯固化下来。2. 关键词一用户故事——把“我想要”变成“用户可以”2.1 用户故事的标准结构谁、做什么、为什么用户故事是敏捷需求管理的最小表达单元标准句式是作为一个“角色”我希望“功能”以便“业务价值”。这三个部分少一个都不完整。少了角色你不知道给谁做的少了功能开发没法动手少了价值你就无法判断这个需求优先级该排多高。举一个系统集成场景的例子。一个常见需求是“设备信息导入”。用传统写法需求描述通常是“系统支持Excel批量导入设备信息字段包括名称、IP、厂商、型号、位置”。这看起来很清楚但它没有回答两个关键问题谁在用这个功能导入这些信息到底解决了什么业务问题改写成用户故事就是“作为系统集成管理员我希望选择Excel文件批量导入设备信息以便在项目初始化阶段快速完成上千台设备的资产录入。”这样一来角色是系统集成管理员功能是Excel批量导入价值是快速完成初始化。后续讨论时大家能立刻判断如果项目初始化可能只有几十台设备那这个“以千为单位批量导入”的投入产出比是否合理这就是用户故事格式最大的价值——逼你把“为了什么而做”说清楚。2.2 好故事的标准INVEST原则与颗粒度用户故事不是写出来就算完了好故事要符合INVEST原则。IIndependent代表独立故事之间尽量不要强依赖NNegotiable代表可协商故事是讨论的起点不是冻结的合同VValuable代表有价值每一条都要对用户或业务有可感知的价值EEstimable代表可估算团队能根据故事给出相对大小SSmall代表足够小小到能在一个迭代内交付TTestable代表可测试必须有明确的验收标准。实操中颗粒度是最容易出问题的。我的经验是一个用户故事的开发工作量要控制在1到3天内超过3天就该继续拆分。比如“支持设备导入”听上去还太大可以拆成“支持Excel模板下载”“支持校验设备名称不为空”“支持导入结果预览”“支持导入失败信息导出”等多个故事。每个故事独立交付、独立验收做完一个就有看得见的结果。2.3 在华为云DevCloud上描述与录入用户故事在DevCloud里项目初始化建议直接使用Scrum模板工作项类型会自带Epic、Feature、Story、Task、Bug。Story对应的就是用户故事。创建故事时描述字段可以直接套用标准句式也可以在自定义字段里单独加“角色”“业务价值”两个字段方便后续筛选查询。我建议在描述里至少维护以下内容用户故事原文、业务背景、验收标准。验收标准最好用检查项列表比如用户在设备导入页可以下载标准Excel模板模板内容包括名称、IP、厂商、型号、位置其中名称为必填上传非空Excel文件后系统显示校验结果包括成功条数和失败条数失败原因以列表形式展示在导入结果页导入完成后设备列表立即刷新无需手动刷新页面。这些验收标准就是开发自测和测试验收的共用基线。没有这些内容一个用户故事就只是一句话团队成员对“什么叫做完”的理解会完全不一致。3. 关键词二需求优先级——分清“必须做”和“以后再说”3.1 优先级排序不是拍脑袋而是算出来的优先级这个词每个人都在用但绝大多数团队的排序方式就是产品经理凭直觉拍板或者谁嗓门大听谁的。敏捷需求管理里的优先级排序本质上是一次价值与成本的取舍。推荐团队用两个相对轻量的方法分别是MoSCoW法则和WSJF打分法。MoSCoW将需求分成四类Must have必须有、Should have应该有、Could have可以有、Wont have这次不做。它特别适合系统集成项目因为集成项目中客户方提出的需求往往很多但很多属于“锦上添花”。比如“告警弹窗支持自定义颜色”可能是Could have“接口异常时自动重试3次”才是Must have。分类的过程其实就是和客户对齐预期的过程。WSJF则更适合用来给同一批需求进行相对排序。公式是业务价值与时间紧迫度的总和除以开发工作量与风险系数的总和。不用算得特别精确可以用1、2、3、5、8这种斐波那契数列打分。业务价值高、时间紧迫度高、开发量小、风险低的需求分数自然高应该排在前面。就算在Excel里打一次分也比拍脑袋靠谱得多。3.2 产品待办列表的排序与Backlog梳理有了打分还不够产品待办列表要常维护。产品待办列表Product Backlog就是所有用户故事的集合但它不是平铺的清单而是从上到下按优先级排列的“队列”。排在最上面的是下一个迭代要拿出来做的需求排在下面的是暂时没想清楚、甚至可能永远不会做的需求。在DevCloud里项目左侧导航里就有“工作项”或“Backlog”视图可以按优先级字段排序也可以通过拖拽手动调整顺序。建议每个迭代结束之后专门留出1小时做Backlog梳理参与人不一定全员产品负责人、技术负责人、测试负责人必须到场。会议只做三件事确认已完成的故事状态移除已经不需要的需求把新增需求按价值和工作量重新排入队列。要特别提醒一点产品待办列表只有一个负责人通常就是产品负责人其他人可以提建议但最后排序由这个负责人拍板。否则今天开发说这个技术债要还明天销售说客户那边缺个功能Backlog里塞满各种声音优先级等于没有优先级。4. 关键词三迭代计划——把需求切成节奏4.1 迭代是敏捷需求管理的“节拍器”迭代Sprint是敏捷开发的固定节奏有点像音乐里的节拍器。团队不会每个音符都随心所欲地演奏而是跟着稳定节奏走。需求管理也一样如果需求来了就做、随时插入团队永远处于“救火”状态。固定长度的迭代能带来两个明显好处一是团队对交付预期有共识二是需求变更有一个相对明确的“截止点”。迭代长度怎么定系统集成项目我建议用2周。1周太短光是需求澄清、联调准备就吃掉好几天往往还没进入状态就结束了1个月又太长反馈慢变更积压多需求团队容易失去紧迫感。2周是一个比较平衡的节奏周一计划周二到次周周四开发测试周五回顾下一周继续新迭代。每家公司业务节奏不同但一旦定下来至少先坚持4到6个迭代不要随意调整长度。4.2 迭代计划会从“产品待办列表”到“迭代待办列表”迭代计划会是每个迭代开始时最重要的一次会。开会的目标不是把所有细节聊透而是从产品待办列表里选出本次迭代要交付的故事并承诺“这次迭代结束时交付哪些可用的功能”。会议一般分两段前半段产品负责人说明本次迭代目标以及候选需求的价值后半段团队评估工作量并确认容量。容量估算是新手团队容易忽视的环节。假设团队5个人迭代周期10个工作日总容量是50人日但每天有晨会、评审、联调等各种开销实际可用率一般在60%到80%。按75%算实际容量就是5×10×0.75等于37.5人日。如果候选用户故事的估算工作量加总明显超过37.5人日就必须立即砍需求而不是承诺所有人加班赶上。在DevCloud里操作时先在工作项列表中筛选状态为“已规划”的用户故事然后批量勾选指定到当前迭代这些故事就进入了迭代待办列表。接下来团队在迭代详情中按看板视图拆解Task把每个故事变成更具体的开发任务。我习惯把Task命名成带有动词的原子操作比如“编写Excel解析工具类”“完成导入结果页前端布局”避免出现“处理导入功能”这种一看就不知道要干什么的大任务。计划会结束时团队要对着看板上的待办列表做一次公开确认本轮迭代承诺做哪些故事预计哪天完成。这份承诺不是为了追责而是为了建立集体目标。5. 关键词四需求闭环——从“做完”到“做对”5.1 Definition of Done团队对“完成”的共同契约“完成”这两个字在团队里的定义差异极大。开发说代码写完了算完成测试说用例跑完了算完成产品说客户确认了才算完成。需求要形成闭环必须先统一“完成”的口径这就是DoDDefinition of Done的作用。DoD是全团队共同认可的一组检查项每一条用户故事只要满足这些检查项就算真正完成。一套适合系统集成项目的经典DoD包括代码已完成并提交到迭代分支单元测试通过覆盖率符合项目基线代码评审通过功能测试通过测试用例已录入缺陷管理系统配套文档如接口说明、部署说明已更新产品负责人在真实环境完成验收确认看板中对应工作项状态已更新为“已关闭”。DoD的价值在于把“做完”的定义从个人自觉变成团队契约。比如某一次迭代开发觉得代码写完了但测试用例没执行、文档没更新那这个故事就不能被统计为完成。这能有效减少迭代结束时“接近完成但还没法上线”的状态。5.2 需求变更与可追溯闭环的关键需求生命周期里最让人头疼的就是变更。敏捷本身拥抱变化但拥抱的是“有价值的变更”而不是“随机打断”。所以必须有一个轻量但明确的变更流程。流程可以这样设计任何人提出变更先填写变更描述和业务价值发给产品负责人。产品负责人在产品待办列表里新增一条用户故事并标注“来源为变更”。技术负责人进行影响分析判断这个变更影响哪些已有工作项、涉及哪些外部系统。然后把影响分析结果和新增故事一起拉进Backlog排序。如果这个变更涉及当前迭代原则上不直接追加而是用另一个等量级的故事从当前迭代换出。这样能保证迭代承诺不被随意破坏。在DevCloud中工作项之间可以建立关联关系。比如一个紧急变更从客户问题单来可以把它关联到某个缺陷Bug再关联到对应模块的用户故事和任务。这样后续查记录时能从缺陷一路追溯到需求和代码提交形成完整的需求血缘。可追溯性不是事后补的而是要在状态流转时顺手维护成本最低。6. 在华为云DevCloud上落地这4个关键词6.1 项目初始化选择模板与配置工作项华为云DevCloud新建项目时有“Scrum”模板适合敏捷开发团队使用。模板自带工作项类型和看板但项目规则必须自己定。我建议项目启动后先把工作项的状态流收敛一下。太多团队把状态列维护成“新建、分析中、方案设计中、开发中、自测中、联调中、测试中、验收中、已关闭”状态设得越细大家越懒得更新。我的习惯是只保留五个状态新建、已规划、开发中、已测试、已关闭。其中“开发中”涵盖设计方案和编码“已测试”涵盖测试和产品验收“已关闭”必须对应DoD检查项全部完成。状态少维护成本低看板信息反而更真实。字段方面按前面说的给Story增加“角色”和“业务价值”字段有需要的团队可以再加“优先级得分”“业务价值评分”“工作量估算”。这些都是华为云DevCloud支持的自定义字段不复杂但能帮助团队在筛选时快速找到目标需求。6.2 一个迭代的完整操作走查下面以一个两周迭代为例完整走一遍。迭代开始前2天产品负责人维护产品待办列表把新想法写成用户故事按MoSCoW和WSJF排好序。迭代开始前1天Scrum Master创建迭代把产品待办列表顶部的一批故事拖进当前迭代。迭代第1天上午开计划会技术负责人把每个故事拆成Task团队认领并估时做完容量校验。迭代第1天下午开始开发。迭代期间每天早上站会就看DevCloud看板只问三个问题昨天做了什么今天准备做什么有没有阻碍。看板上的卡片是从“开发中”状态往后挪还是卡在原地不动一眼就能看出问题。测试同学从故事进入“已测试”状态开始验收如果发现缺陷就在当前迭代里直接建Bug并关联到对应故事上。迭代结束前1天做一次全面的状态清理确保所有故事进入了“已测试”或“已关闭”。迭代最后一天下午开回顾会打开燃尽图看团队节奏讨论“哪些做得好、哪些要改进、下一步改进什么”。整个过程中DevCloud不是一个打卡工具而是这四个人工作的数据底座。6.3 提升落地成功率的三点建议第一规则先行。上线工具之前先用一张A4纸写清楚谁负责维护Backlog谁有权调整优先级哪些状态必须经过测试规则不明确工具只会放大混乱。第二看板只看数据。团队很容易陷入“看起来在更新其实没人看”的假状态。我习惯每周随机抽3个故事核对它们的描述、验收标准、关联任务是否完整。这个动作做几次大家就会认真对待工作项。第三持续改进。迭代回顾不是走过场每次选一个最痛的问题改进不要一次列十项改进计划。比如第一个迭代专门抓“用户故事验收标准缺失”第二个迭代抓“状态更新不及时”。改进动作越聚焦落地效果越好。7. 常见问题与排查技巧实录7.1 需求变更频繁到底怎么管系统集成项目里需求变更是常态真正可怕的不是变更本身而是变更没有统一入口。经常出现客户直接找开发改功能、销售微信里口头答应需求、测试中途突然说实现方式和预期不符这些都是少数人的“私单变更”。应对办法是统一收敛到一个入口所有变更必须先到产品负责人这里登记变成一条用户故事或缺陷。登记之前先判断性质属于当前迭代范围内的紧急问题走“换不增”的原则即新增需求要从当前迭代替换出等价工作量的故事属于后续迭代的需求直接放进产品待办列表参与排序。这样既保留了敏捷对变化的响应能力又不会让迭代目标被频繁打乱。7.2 用户故事写不细验收时扯皮这种情况太常见了尤其是需求来自客户方、产品经理只做“传话筒”的时候。我建议把用户故事拆成两个必填部分一句话故事加验收标准。如果产品经理写不出验收标准说明需求还没想清楚不应该进入开发。评审会一定要拉测试参加由测试从验收角度提出疑问能逼出很多隐藏的需求细节。比如一个“实现用户登录”的故事没有验收标准时开发做了一套用户名密码登录实际上客户还期待短信验证码。有了验收标准至少在细化阶段就能发现这个差距而不是等演示时才被客户打回。7.3 团队成员不看板、不更新状态很多团队上了DevCloud但开发人员的习惯还是只在修改代码仓库时提交看板状态永远停留在上一周。根因通常有两个一是不知道自己要更新什么二是觉得更新状态对自己没价值。破解方法很简单把“更新看板状态”写进DoD作为故事关闭的必须条件。然后在每天站会上不口述“昨天做了什么”而是挨个讲解看板上卡片的状态变化。坚持两三个迭代大家会发现状态一旦滞后站会就说不清楚自然就会养成习惯。7.4 优先级争论不休产品负责人也拿不准如果产品负责人自己也纠结可以采用一个辅助决策的三维打分卡业务价值、交付成本、风险程度。业务价值高、交付成本低、风险可控的需求马上做业务价值高、但成本和风险也高的需求拆小后分阶段做价值低、成本高、风险大的需求直接不做或放到很后面。每次只需把候选需求列在表格里给每个维度评1、3、5分按总分排序再结合客户关系、合同约束做最终裁决。这个动作本身就会倒逼所有参与者把争论点摆到台面上。最后再分享一个小技巧每次迭代结束不要只看燃尽图打开DevCloud的“迭代统计”视图看看需求完成率、缺陷密度和平均流转时间。这三个数据能直接反映出需求管理是不是健康。如果一个团队需求完成率长期低于70%多半不是执行力问题而是前面四个关键词某个环节松了。回到用户故事、优先级、迭代计划、需求闭环这四个抓手把松掉的地方重新拧紧效果比换工具、换流程都来得实际。
返回列表