敏捷开发 - 用户故事定义

12

我正在为朋友的企业编写一个小应用程序,同时想借此机会复习一下我在年初接受的敏捷项目管理培训。

我个人(而且我认为我的当前组织也是如此!)总是很难以用户故事的形式收集需求,其格式为:

作为[用户类型],我希望[功能],以便[某些好处]

我总是诱惑于省略开头和结尾,只留下功能 - 但这就变成了传统的需求收集方式!

但我不想仅仅因为“我正在实践敏捷”而将它硬塞进去……例如,如果我知道用户将被呈现一个项目列表,那么原因是不是显而易见?

例如:

作为[商店经理],我希望[看到库存项目的列表],以便……?

是否有省略[以便]从句的常规做法?

6个回答

11
我们过去也会忽略它。但是通过遗漏它,我们错失了很多机会。 为了正确地理解功能,不仅要做正确的事情,还要做正确的事情,了解为什么需要该功能非常关键,而了解为什么需要该功能的下一个关键点是“谁”(角色)。 按照DDD术语,干系人可以是不同的,所有关心该功能的人都可以成为干系人,从程序员和数据库管理员到各种用户类型。
因此,首先要了解谁是干系人,然后你就知道他为什么关心50%,再知道其好处,这样就几乎很明显要实现什么。
尽量不要仅写“作为用户”。要具体说明。例如,“作为商店经理”,甚至“作为负责闭店的协调员领导”,我需要...以便...
也许您可以实施不同的东西,从而为同一利益相关者带来更好的收益!

7
尝试以[用户]的身份实现[商业价值],我需要[功能]。
目标是专注于功能提供的价值。这有助于您进行竖向切片的思考,从而减少不可见的纯“技术任务”。这并不是一个容易的转变,但当您开始垂直思考时,您真正能够减少流程中的浪费。
另一种方法是考虑客户可能编写的验收测试来确保该功能有效。然后使用类似FitNesse自动化这些测试,只需要短暂调整即可。

不得不说,自从我开始尝试使用这种方法以来,它确实让你停下来思考一个系统。对我来说,软件现在几乎是关于它不允许你做什么(即破坏流程),而不是它能做什么。 - Duncan

5
不,实际上这并不明显——想要查看列表的原因有很多,你可能想要扫描它以获取一些信息,获得概述,打印它,将其复制粘贴到Word文档中等等。而确切的内容将为您提供有价值的提示,以便合理地实现细节——列表的格式,确切的内容;或者甚至是提示,表明其他功能可能更好地满足该需求。别惊讶,事实上原因可能是“我想数一下条目的数量”……

当然,这实际上可能并不适用于您。我的真正观点是,人们想出这个模板的原因是有道理的——同样,很多经验丰富的人实际上并不使用它。当您刚开始实践时,无法评估遵循某种做法的利弊,因此我强烈建议尝试紧密遵循一段时间。您可能会对其有用性感到惊讶——或者不会,如果是后者,您仍然学到了东西,并可以清晰明了地放弃它... :)


2
用户故事是指你需要采访用户,了解他们想要什么以及他们试图解决的问题。这是敏捷开发中的核心。如果表格对你不起作用,请退一步尝试一种更自然或更适合你作为写作者的方法。
简而言之,不要觉得你必须穿直接的夹克衫。重要的是你要遵循方法论的精神。
在这种情况下,您需要列出用户所面临的问题、为什么它们是问题以及他们认为什么可以帮助他们。

1

我认为你应该尽力定义一个理由,即使它可能看起来很明显。如果你无法想出一个理由,那么为什么要首先构建这个功能呢?此外,这个理由可能会指出设计中的其他不足之处,从而触发其他领域的改进。


1

我经常根据故事主要涉及的用户/角色进行分类,因此我不会在故事标题中放置用户的身份。我的故事也比一些敏捷方法论建议的要大。通常,我从一个标题开始。我用它来进行规划。一旦我接近实际处理该故事,我会加入一些细节--基本想法、限制、假设、相关故事--以便我能够捕捉更多我所知道的信息。我还将我的故事保存在维基上,而不是在笔记卡上。我理解这种权衡——即,在需要之前我可能会花费太多时间在细节上,但我能够轻松地捕捉和分享它,通常是与离岸客户。

对我来说,敏捷是一种哲学,而不是规范。有特定的实现方式可能会(强烈)建议您以某种方式完成某些事情,并且在某些项目上可能是不可协商的。例如,如果您不进行配对编程,很难说您正在执行XP。总的来说,我认为大多数敏捷主义者会说,只要符合一般原则,您应该按照适合您的方式做那些适合您的事情 - 即使它们与特定实现方式不同,您仍然可以称自己为敏捷。一般原则包括早期发布/经常发布、单元测试、短迭代、承认变化将发生、延迟详细计划直到准备实施等。
对我来说,最重要的是:如果故事在没有用户和理由的情况下适合您 - 只要您了解用户是谁以及他们为什么想要某些东西 - 您可以按照任何方式完成。只是在开始实施之前不要求完整的规范。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接