一、用户故事解决什么问题
"作为系统,我希望重构订单接口"——这样的故事没有用户价值,开发没法验收,客户也没法判断该不该做。临沂软件定制开发公司在企业管理系统项目中坚持用户故事从角色、动作、价值三要素写起:谁、想干什么、为什么。视角一换,团队自然会多问一句这个功能到底帮用户完成了什么任务。
用户故事是敏捷团队表达需求的标准方式,经典句式是"作为某类角色,我希望完成某件事,以便获得某种价值"。它刻意写得简短,因为故事的目的不是一次写全细节,而是作为开发团队与客户后续对话的承诺:卡片留在待办列表里,细节在迭代计划会上当面聊清楚。
用户故事与传统功能清单的最大区别,是出发点不同。功能清单从系统视角罗列"要有什么按钮、什么报表",用户故事从使用者视角描述"谁、想干什么、为什么"。视角一换,团队自然就会多问一句:这个功能到底帮用户完成了什么任务?答不上来的功能,往往就是不该做的功能。
二、验收标准怎么写
写故事时常见的毛病是把故事写成一句技术说明,例如"实现订单接口的重构"。这背后没有用户价值,开发团队既没法验收,客户也没法判断它该不该做。正确的写法是先问这个技术动作服务于谁、改善了什么体验,把价值写出来,再谈怎么实现。
验收标准是用户故事不可分割的另一半。故事卡片加几条简短的验收条件:什么情况下算成功、什么情况要提示什么、异常分支怎么处理。有了验收标准,开发知道做到什么程度算完成,测试照着写用例,客户验收时有据可依,三方对故事的理解自然对齐。
故事大小要有个衡量办法。"一个迭代能做完"是经验标准:太大的故事跨迭代、估不准、风险集中,要拆小。拆分的角度有很多:按操作步骤拆、按数据范围拆、按规则复杂度拆。拆完之后每个故事仍然是一块可独立交付、可独立验证的价值,而不是把一个大故事生硬切成三段。
做软件定制写需求时,先把价值写清楚再谈实现。
用例图是场景分析的传统工具:标出系统里都有哪些角色、每个角色要完成哪些主要任务、任务之间有什么包含或扩展关系。它特别适合项目早期统一团队对系统范围的理解——开完一次用例工作坊,产品、开发、测试对"这个系统到底要服务哪些人做哪些事"就有了共同图纸。
用户故事的另一个价值是优先级排序。待办列表按业务价值排队,团队永远先做最值钱的故事。当时间不够时,先保证核心故事可用,锦上添花的故事往后放。这种排序机制,比"什么都要、什么都急"的需求管理方式,交付质量高得多。
备注:用户故事必须从用户价值出发,而非技术动作。