软件开发是一个从捕获客户需求到编码实现的过程。在我们传统的印象中,需求是厚厚的软件
规格说明书,实现则是无穷无尽的bug产生器。需求是在实现之前写好的,客户签字确认的。实现是程序员拿着需求不断猜测这该怎么做,那该怎么做的重新发现
的过程。在需求与实现之间横亘着一个巨大的鸿沟,做需求的人和写代码的人总是互相推诿责任,到最后客户总是得不到自己想要的功能。
敏捷软件开发方法有一整套实践,来促进客户与开发团队之间的交流与反馈。而User
Story则是这些实践中比较具有启发意义的一个主要实践,我认为它是承上启下的重要一环。因为在其上,它是具体用户角色完成具体目标的过程组成部分。而
在其下,它是编写验收标准(Acceptance Criteria)的具体上下文。它就像一条锁链一样,在需求与实现之间架起了一座危桥。
之所以称之为危桥,是因为一旦人们把User Story当做软件规格说明书一类的文档来看待的话,User
Story很快就不能反映客户的需求,同时也无法指导实现的开发。我们必须要把它当做危桥一样来对待,经常去重新评估实现难度,根据给客户带来的价值排优
先级。当发现它所覆盖的内容不再准确或者过时了的时候,对于危桥我们就不用犹豫,该炸掉重来就炸掉重来。
不严格地说,敏捷开发从需求到实现的单向流程(反馈的路径未包括其中)大概是这样的:
这个过程没有暗示任何瀑布式的开发风格,其实这个过程是反复的,不断有反馈回顾。画出这么一个流程性的图只是为了表明User Story是如何承上启下的。
要知道它是如何承上启下,还是要知道它自身是什么样的。明确的答案是:User Story应该Small(小规模),Testable(可测试),Valuable(有价值)。
Valuable是说User Story能够给利益相关人员提供明确的商业价值。往往表现为满足了用户某方面的预期。
Testable是说User Story可以给验收标准提供明确的上下文。也就是说这个User Story能够对程序的外部行为产生影响,比如界面,日志文件等用户看得见摸得着的东西。
Small是说User Story应该足够小,在商业过程中也就一步或者相关联的几步。小的目的是更好地符合迭代式开发的风格,能够在一个迭代内完成。
这三个特性直接支撑了敏捷开发的一些核心价值:给客户提供价值(对应valuable),保证质量(对应testable)和快速响应变化(small)。
User Story与传统的Use Case有一些不同。某些Use Case的书籍中提倡写出不同层次的Use Case,有High
Level的,有Medium Level的,也有Low Level的。从某种程度上来说,High Level相当于Goal,Medium
Level相当于User Story,而Low Level相当于Acceptance Criteria。但是由于Use
Case的写法缺乏统一的习惯和明确的指导。初学者在写Use Case的时候往往缺乏明确的目标,无法有效地把需求与实现贯穿起来。
因此,若把需求到实现看做从天空到湖底的话,User Story就恰好浮在水面上。可以说User
Story是文档能够达到的最细节的层次,若在往下就陷入了实现的细节之中,与具体实现方式相关而且经常变动,维护起来非常困难。更重要的是,写出那样的
细节文档又不能执行,无法给客户带来价值,只是对代码的无味重复。
这里只是概览了User Story在整个开发过程中的位置和作用,以及其自身的的一些属性和它能提供的价值。具体使用User
Story去实践敏捷开发可以参阅我同事李默所写的敏捷需求分析一文。他在文中以一个业务分析师的角度讲述了如何把User
Story用在敏捷需求分析的过程中去。
分享到:
相关推荐
在敏捷开发过程中,User Story 是一种重要的需求分析工具和方法,它们可以帮助开发团队快速地获取用户需求,编写可测试的 User Story,组织和优先级它们,进行计划、管理和测试。 Mike Cohn 的《User Stories ...
用户故事(User Story)是敏捷开发方法论中的一个重要组成部分,它被用来捕捉产品或软件的功能需求,从最终用户的视角描述产品的功能。简单来说,用户故事就是一种直观的表述方式,用来描述系统应该为用户做什么。 ...
《User Story Mapping》这本书由杰夫·帕顿(Jeff Patton)撰写,是软件开发领域中关于敏捷方法论的重要参考资料之一。该书深入浅出地介绍了用户故事地图的概念、应用场景以及实践方法,帮助读者更好地理解如何在...
用户故事(User Story)是一种敏捷开发方法中的需求描述方式,主要用于捕获最终用户的需求,并作为软件开发的基础。它以简短而明确的语言描述了用户期望的功能,使开发团队能够更好地理解用户的需求。 在本篇文档中,...
为什么使用User Story? 什么是User Story? 好的User Story有哪些特点? User Story的生命周期是什么样的? 切分User Story的小技巧
vanessa-bdd-editor是一款专为BDD设计的工具,它支持Epics和User Stories的编写,使得整个开发过程更加结构化和直观。 Epics和User Stories是敏捷开发中的两个关键概念。Epics通常用来表示大型、复杂的功能或需求,...
后台管理模块 User Story.xlsx
UserStory_MICROSAR_Classic_LegislativeDiagnosticsViaOBD
用户故事(User Story)是敏捷软件开发中用来表达用户需求的一种简洁的方式,它通常被用来在敏捷开发框架中制定软件需求规格说明书(Software Requirement Specification,简称SRS)。用户故事关注点在于用户和系统...
在项目结构中,"UserStory-master"很可能代表了项目的主分支或源码目录,包含了所有必要的文件,如HTML、CSS、JavaScript、服务器端脚本、配置文件等。开发者可能按照模块化的方式组织代码,例如将用户认证、故事...
用户故事介绍User Story的目标是设计和展示一个可扩展的后端基础设施,提供一个 Web 界面,允许用户以简单直观的方式请求新功能并提供反馈。 用户可以在他们的故事中附加文件来解释他们想要什么。 然后管理员可以...
用户建模方法的使用,不是很全^_^;但关键部分很明确,是很好的用户为中心的设计的指导材料
user stories,mainly for agile development
User Story.NET是一个专门为极限编程(XP)项目设计的跟踪与管理系统。这个开源工具的主要功能是追踪项目的用户故事,确保开发团队能够有效地管理需求并保持敏捷性。用户故事是敏捷开发中的一种重要概念,它们代表了...
另一方面,当需要给予或撤销某个用户在特定资源上的访问权限时,user2sid可以帮助确定正确的SID来执行这些操作。 压缩包中的"welcome.html"可能是一个简单的欢迎页面,为用户提供关于这些工具的基本信息和使用指南...