大多数敏捷软件开发和测试中关于收集需求出现的问题都来源于用户故事。的确,对于很多敏捷团队来说要以如此简洁的形式准确表达出需求并非容易的事。如何编写好的用户故事是很多刚开始接触敏捷开发流程的团队所经常遇到的问题。如果在编写用户故事的时候稍有不慎,很可能会导致开发错误的测试用例和错误地理解需求,然而最糟糕的是实现了与预期不一致的功能最终导致本次迭代宣布失败。接下来让我们来看看在编写用户故事过程中五个最常犯的错误。
用户故事简介
所谓用户故事就是指使用一段简短的描述表达出用户的需求。在很多敏捷方法如极限编程和Scrum中,都使用用户故事来表达需求。任何时候,只要有可能的话用户故事都应该由客户编写,否则,至少要由能够代表客户的商业代表或者能够代表潜在客户的代表来编写。用户故事应该尽量保持简短,而且最好能够写在3×5英寸的卡片上。卡片上的文字应该表明该用户在系统中的角色,从该用户的角度来表述的需求,以及实现了这个功能的好处。
这么做的主要目的是为了能够根据该新功能的达成条件(DoD)来估算团队完成这项功能所需要的时间。用户故事同时也促进了团队的交流,从而挖掘出更多的商业和技术需求,同时也减少了对需求的主观推测。有人会把用户故事和用例以及场景混淆,它们最大的不同就是用户故事更加简短而且不会描述程序的界面、步骤或流程。用户故事的达成要用验收测试来确认,验收测试通常来源于验收标准,验收标准有时也被叫做达成条件。在用户故事级别的估算,我们通常使用点数,理想日数或者其它单位而不是使用实际时间来衡量在某个功能特性上所需要的时间。在编写用户故事的时候,我们通常使用这样一个模板:“作为一个…我希望能够…这样我就可以…”。这里的每个空对于表达和理解需求来说都非常重要。
五个常犯的错误
1. 从用户的角度编写用户故事
例子:“作为一个用户,我希望能够管理广告,这样我就能够移除过期的和错误的广告。”
扎眼一看,你可能会觉得这个用户故事没有什么问题,因为所有需要的元素都有。但是再仔细想一想,这里说的用户到底是谁?这个管理广告的功能要为谁开发?这个用户对广告管理又有多了解呢?他是一个希望进行数据库清理和广告管理的portal管理员?还是一个希望知道自己已经都放了多少广告,并且能够移除不再需要或者有错误内容的广告的广告商呢?正如你能想到的,我只是提到了两个不同角色对系统的不同需求而已。所以,在这个例子中所缺少的是用户的角色。
2. 为Product Owner创建的用户故事
例子:“作为一个Product Owner,我希望系统能够有删除广告的功能,这样用户就能够删除广告了。”
我们从这个例子再次看到了一个拥有所有标准元素的错误的用户故事。首先,这个用户故事是很典型的“你需要一个用户故事嘛,就给你一个好了”形式。很显然,写这个用户故事的人只是为了完成任务,因为通常你只会在你的团队正在开发一个敏捷开发管理软件的时候系统中才会出现Product Owner的角色。如果出现这个问题,就表明了你的公司在实施敏捷流程的时候出现了状况。第二,这里出现的问题和第一点是一样的,就是用户故事中并没有能够代表用户期望的角色出现。
3. 为开发人员创建的用户故事
例子:“作为一个开发人员,我希望能够替换掉文件夹界面,这样我就完成了维护文件夹界面了。”
这是一个技术型待办列表或者技术型需求的典型例子。有时候,这样的用户故事代表着一个所谓的技术债务,也就是说,长期累积下来的没有进行的维护任务,例如软件升级、重构、框架修改等等。这种用户故事要完成虽说没错,但是在这个例子中它并不能表现出其中的商业价值以及对客户的价值,因此Product Owner并不会买账的。另外,从敏捷的角度来看,你需要在每次迭代之后都能够产生可交付的商业价值,而且团队需要在评审会议上展示给股东看。那么我们应该如何编写此类用户故事呢?重新以用户角色的角度来编写。例如:“作为一个商业用户,我希望系统能够同时进行多个搜索,这样我就可以更快地完成我的工作。”然后,在把这个用户故事拆分成任务的时候就可以定义一些如:“重构搜索处理机制,使其能够为单个用户进行多线程搜索”,“升级Java的版本到64位版。”这个时候,验收标准就需要定义成可以量度或者测试的。例如:“单个用户可以同时进行5个搜索。”和“搜索必须在4秒钟之内返回结果。”
4. 没有商业价值或者用户价值
例如:“作为一个商业广告商,我希望能够过滤选项。”
在这个例子中,我们既看到了角色,又看到了需求,但是却没有看到商业价值和原因。我们可以问:“为什么一个商业广告商会需要过滤选项呢?他到底想要干什么呢?”
5. 没有验收标准或者达成条件
在这里你可以使用上面的任何一个作为例子。没有验收标准通常所导致的后果就是低估了工作量,同时也会导致错误地划分任务和错误地估算。用户故事很有可能会因此无法通过测试,或者是由于误解了用户故事而导致测试用例无法覆盖正确的用例。验收标准在确认需求的理解和确定用户故事的完成中扮演着非常重要的角色。验收标准的另外一个作用就是使得Product Owner和团队之间的沟通更加频繁。一个获得验收标准的好办法就是多问“如果…会怎么样?”,“…在哪里?”,“什么时候…?”,“如何…?”等问题。同时也可以举例和画图来消除疑虑。这通常会在提炼、重新计划或者分割用户故事的时候发生。
原文地址:http://www.scrumalliance.org/articles/366--common-mistakes-we-make-writing-user-stories
分享到:
相关推荐
一、项目简介 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷 二、技术实现 jdk版本:1.8 及以上 ide工具:IDEA或者eclipse 数据库: mysql5.5及以上 后端:spring+springboot+mybatis+maven+mysql 前端: vue , css,js , elementui 三、系统功能 1、系统角色主要包括:管理员、用户 2、系统功能 前台功能包括: 用户登录 车位展示 系统推荐车位 立即预约 公告展示 个人中心 车位预定 违规 余额充值 后台功能: 首页,个人中心,修改密码,个人信息 用户管理 管理员管理 车辆管理 车位管理 车位预定管理,统计报表 公告管理 违规管理 公告类型管理 车位类型管理 车辆类型管理 违规类型管理 轮播图管理 详见 https://flypeppa.blog.csdn.net/article/details/146122666
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql 部署环境:maven 数据库工具:navica 更多毕业设计https://cv2022.blog.csdn.net/article/details/124463185
内容为Python程序设计的思维导图,适用于新手小白进行浏览,理清思路
2024-Stable Diffusion全套资料(软件+关键词+模型).rar
mmexport1741417035005.png
COMSOL三维锂离子电池全耦合电化学热应力模型:模拟充放电过程中的多物理场耦合效应及电芯内应力应变情况,COMSOL锂离子电池热应力全耦合模型,comsol三维锂离子电池电化学热应力全耦合模型锂离子电池耦合COMSOL固体力学模块和固体传热模块,模型仿真模拟电池在充放电过程中由于锂插层,热膨胀以及外部约束所导致的电极的应力应变情况结果有电芯中集流体,电极,隔膜的应力应变以及压力情况等,电化学-力单向耦合和双向耦合 ,关键词: 1. COMSOL三维锂离子电池模型; 2. 电化学热应力全耦合模型; 3. 锂离子电池; 4. 固体力学模块; 5. 固体传热模块; 6. 应力应变情况; 7. 电芯中集流体; 8. 电极; 9. 隔膜; 10. 电化学-力单向/双向耦合。,COMSOL锂离子电池全耦合热应力仿真模型
基于传递矩阵法的一维层状声子晶体振动传输特性及其优化设计与应用,声子晶体传递矩阵法解析及应用,Matlab 一维层状声子晶体振动传输特性 传递矩阵法在声子晶体的设计和应用中具有重要作用。 通过调整声子晶体的材料、周期和晶格常数等参数,可以设计出具有特定带隙结构的声子晶体,用于滤波、减震、降噪等应用。 例如,通过调整声子晶体的周期数和晶格常数,可以改变带隙的位置和宽度,从而实现特定的频率范围内的噪声控制。 此外,传递矩阵法还可以用于分析和优化声子晶体的透射谱,为声学器件的设计提供理论依据。 ,Matlab; 一维层状声子晶体; 振动传输特性; 传递矩阵法; 材料调整; 周期和晶格常数; 带隙结构; 滤波; 减震; 降噪; 透射谱分析; 声学器件设计,Matlab模拟声子晶体振动传输特性及优化设计研究
头部姿态估计(HeadPose Estimation)-Android源码
永磁同步电机FOC、MPC与高频注入Simulink模型及基于MBD的代码生成工具,适用于Ti f28335与dspace/ccs平台开发,含电机控制开发文档,永磁同步电机控制技术:FOC、MPC与高频注入Simulink模型开发及应用指南,提供永磁同步电机FOC,MPC,高频注入simulink模型。 提供基于模型开发(MBD)代码生成模型,可结合Ti f28335进行电机模型快速开发,可适用dspace平台或者ccs平台。 提供电机控制开发编码器,转子位置定向,pid调试相关文档。 ,永磁同步电机; FOC控制; MPC控制; 高频注入; Simulink模型; 模型开发(MBD); Ti f28335; 电机模型开发; dspace平台; ccs平台; 编码器; 转子位置定向; pid调试。,永磁同步电机MPC-FOC控制与代码生成模型
light of warehouse.zip
内容概要:文章深入讨论了工业乙醇发酵的基本原理及工艺流程,特别是在温度和气体排放(如CO2及其他有害气体)影响下的发酵效果分析。文章介绍了乙醇发酵的重要环节,如糖分解、代谢路径、代谢调控以及各阶段的操作流程,重点展示了如何通过Matlab建模和仿真实验来探索这两个关键环境因素对发酵过程的具体影响。通过动态模型仿真分析,得出合适的温度范围以及适时排除CO2能显著提升发酵产乙醇的效果与效率,从而提出了基于仿真的优化发酵生产工艺的新方法。 适用人群:从事生物工程相关领域研究的科学家、工程师及相关专业师生。 使用场景及目标:适用于实验室环境、学术交流会议及实际生产指导中,以提升研究人员对该领域内复杂现象的理解能力和技术水平为目标。 其他说明:附录中有详细的数学公式表达和程序代码可供下载执行,便于有兴趣的研究团队重复实验或者继续扩展研究工作。
本资源包专为解决 Tomcat 启动时提示「CATALINA_HOME 环境变量未正确配置」问题而整理,包含以下内容: 1. **Apache Tomcat 9.0.69 官方安装包**:已验证兼容性,解压即用。 2. **环境变量配置指南**: - Windows 系统下 `CATALINA_HOME` 和 `JAVA_HOME` 的详细配置步骤。 - 常见错误排查方法(如路径含空格、未生效问题)。 3. **辅助工具脚本**:一键检测环境变量是否生效的批处理文件。 4. **解决方案文档**:图文并茂的 PDF 文档,涵盖从报错分析到成功启动的全流程。 适用场景: - Tomcat 9.x 版本环境配置 - Java Web 开发环境搭建 - 运维部署调试 注意事项: - 资源包路径需为纯英文,避免特殊字符。 - 建议使用 JDK 8 或更高版本。
这是一款仿照京东商城的Java Web项目源码,完美复现了360buy的用户界面和购物流程,非常适合Java初学者和开发者进行学习与实践。通过这份源码,你将深入了解电商平台的架构设计和实现方法。欢迎大家下载体验,提升自己的编程能力!
系统选用B/S模式,后端应用springboot框架,前端应用vue框架, MySQL为后台数据库。 本系统基于java设计的各项功能,数据库服务器端采用了Mysql作为后台数据库,使Web与数据库紧密联系起来。 在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。
这是一款专为大学生打造的求职就业网JavaWeb毕业设计源码,功能齐全,界面友好。它提供简历投递、职位搜索、在线交流等多种实用功能,能够帮助你顺利进入职场。无论你是想提升技术水平还是寻找灵感,这个源码都是不可多得的资源。快来下载,让你的求职之路更加顺畅吧!
useTable(1).ts
实验一: 1、进行CCS6.1软件的安装,仿真器的设置,程序的编译和调试; 2、熟悉CCS软件中的C语言编程; 3、使用按键控制LED跑马灯的开始与停止、闪烁频率; 4、调试Convolution、FFT、FIR、FFT-FIR实验,编制IIR算法并调试,并在CCS软件上给出实验结果。 实验二: 1、利用定时器周期中断或下溢中断和比较器比较值的修改来实现占空比可调的PWM波形; 2、改变PWM占空比控制LED灯的亮暗,按键实现10级LED灯亮暗调整; 3、模拟数字转换,转换过程中LED指示,并在变量窗口显示转换结果; 4、数字模拟转换,产生一个正弦波,转换过程中LED指示,转换完成后在CCS调试窗口显示波形。 实验三: 1、SCI异步串行通信实验; 2、SPI及IIC同步串行通信实验; 3、CAN现场总线串行通信实验; 4、传输过程中LED指示。 实验四: 1、电机转速控制实验。
LINUX系统管理与配置.docx
chromedriver-mac-x64-136.0.7055.0.zip
地级城市驻地,dbf 地级城市驻地,prj 地级城市驻地.sbn 9 地级城市驻地.sbx 地级城市驻地.shp 地级城市驻地.shx 9 国界线.dbf 国界线.prj 国界线.sbne 国界线.sbx 国界线.shp 国界线.shx )经纬网.dbf ]经纬网.prj 经纬网.sbn 经纬网.sbx 经纬网.shp 经纬网.shx 全国县级统计数据.dbf 全国县级统计数据,prj 全国县级统计数据.sbr 全国县级统计数据.sbx 全国县级统计数据.shp 全国县级统计数据.shx )省会城市.dbf 省会城市,prj 省会城市.sbn 省会城市.sbx 省会城市.shp 省会城市.shx 省级行政区.dbf 省级行政区,pn 省级行政区.sbn 省级行政区,sbx 9 省级行政区.shp 9 6 省级行政区,shx 县城驻地.dbf 县城驻地,prj 擷垃岑械鰣媛城驻地.sbr 藶勇瑁鴎隐城驻地.sbx 县蓿玨蒴城驻地.shp 苽6城驻地,shx 线状省界.dbf 线状省界,prj 1线状首界,sbn 线状省界.sbx 线状首界.shp 线状省界,shx 线状县界,dbf □]