2016年4月11日星期一15:53

来自存档:用户舞会森林和用例-Don’t Use Both!

撰写者

作为核心团队建设BABOK V3的一部分,我们在奥兰多参加工作会议,今天晚上吃晚饭,我们讨论了用户舞会森林和用例之间的关系('t the only thing we discussed, we are also a social group ;-)).

我们关切地注意到,最近有许多关于同时使用用户舞会森林和用例的讨论(客户,文章,博客和一般行业)。 敏捷 projects. This seems to us (with general agreement around the table) to be both a waste of effort 和 actively against the 敏捷 philosophy of doing the simplest thing that will work 和 deferring the detail until just ahead of 什么时候 the component of the product will be built.

我们想概述使用这种方法的基本差异,注意事项和风险。即使这似乎是一个热门话题,我们也要填补在应对趋势之外的空白,并朝着在敏捷项目上使用用例的实践和风险迈进。

Differences 和 Similarities

So what are the differences 和 similarities between 用户舞会森林 和 用例, 和 什么时候 do we recommend using the different tools?

用例

用例是“行为者与系统之间的交互的端到端序列,该行为对行为者(通常是煽动性行为者)产生可观察的价值结果”。嗯,那实际上是什么意思?通常,用例(文本描述,而不是简笔图)以以下格式写为流程或步骤序列:

演员做某事
系统做某事
演员还有其他事情
系统还有其他功能
...

用例由一个主流和许多替代和/或异常流组成,其中一些可以分支回到主流。

现在,用例本质上是相当详细的-它们描述了活动中的步骤以及流程中可以更改的点。为了产生一个有用的(可以提供给构建者)用例,您需要非常详细地定义一组交互,您需要了解什么是管理活动的业务规则,参与者的选择在进行活动时,他们将可以使用它们,出错的方式以及交互流程中需要哪些信息。为此,您需要花费大量时间和精力分析活动并生成文档。这就是BDUF-敏捷的对立面。

用户舞会森林

用户舞会森林最初是对这种大前瞻性思维的反应。什么时候 肯特·贝克 定义的 极限编程 (XP)他提出了用户舞会森林的概念,将其作为一种工具来支持所有敏捷方法中固有的迭代和增量方法。 迈克·科恩 继续写一个 其中解释了什么是用户舞会森林,以及如何在敏捷项目中使用它们。除了这两个 杰夫·帕顿 宣传了 舞会森林映射 说明如何使用用户舞会森林来涵盖产品所需功能的广度和深度。

编写良好的用户舞会森林的关键是要了解,其目的不是在项目的早期提供详细信息,而是提供一个框架,在该框架中,可以按需添加详细信息,而且要足够及时。利用Beck,Cohn和Patton等人的工作,普遍采用的方法来产生用户舞会森林,并使用它们来指导产品开发遵循分解方法。

分解以舞会森林图的形式出现。舞会森林图的开头定义了骨干舞会森林-完成产品工作所需完成的关键用户活动或任务,需要交付的大量离散功能才能说我们已经解决了问题。这些大块通常被称为Epics(大舞会森林;-)),它们相当于一个基本的业务流程,该流程由一个人一次在一个地方完成。将其与用例进行比较,这将是用例调查的结果-产品的离散元素,参与者的目标的列表。

在构建舞会森林地图时,通常将这些史诗安排在一行中,以显示流程中各步骤之间的逻辑顺序和切换。在视觉上,这些史诗将被写在另一张色卡上,以备以后使用的用户舞会森林。

威克·马尔4 2

图像:舞会森林地图的示例–顶部的绿色史诗

史诗可以沿着顶部按顺序排列(如果适当的话,通常是这样)。

舞会森林地图的下一步是使用落在“史诗”下的“用户舞会森林”填充地图。每个用户舞会森林都是一个小的离散功能,对产品的某些用户有价值,并且是上述史诗的分解。编写用户舞会森林的最常见格式是“作为我想要的(角色)(功能或能力),以便(实现业务价值)”-

  • 作为网上银行的客户,我想列出我的帐户余额,以便了解我的财务状况。
  • 作为网上银行客户,我想列出一个帐户上的交易,以便我可以查看详细信息

这三个要素很重要-知道舞会森林的目的是谁,有助于确保我们构建可用的产品,所需的功能以及通过使用该功能所获得的价值,从而使我们能够做出良好的优先级决策。

相关文章: 技术用户案例:什么,何时以及如何?

基于业务价值的优先级对于定义用户舞会森林非常重要。从舞会森林中了解价值,使我们能够对工作顺序做出正确的决定-首先构建最重要的业务价值组件并及早获得反馈,而不是立即构建所有组件,这是Agile固有的。

用户案例是上图中的橙色卡片。

图中显示的优先级和顺序–确定MVP

通过构建一个舞会森林地图来显示活动的逻辑流程(从顶部的Epic到顶部的Epic)以​​及页面下方垂直的那些Epics的离散元素,所获得的好处之一就是能够清晰地看到顺序和优先级。在地图上较高的舞会森林比在下方较高的舞会森林更重要(需要尽快)。

优先排序和排序方法可以发现 最低可行产品 (MVP)–需要提供这些要素以提供基于实际客户的反馈来学习和适应产品的机会。找到产品的真正本质,并将其掌握在实际客户手中(最初可能只是一小部分,但足以获得反馈以验证产品开发过程中所做的假设)。

在一个现实世界的网上银行示例中,投入生产的产品的第一个版本具有登录和列出余额的功能,项目团队和银行内部的一小组使用此版本。有这个“行走骨架” built 和 put into production validated the architecture of the product, identified a number of unexpected challenges with the deployment process 和 gave the team feedback about their design philosophy which enabled them to make some significant changes 什么时候 they were cheap 和 easy to do.

用户舞会森林的要素

迈克·科恩(Mike Cohn)在他的书中说,一个用户舞会森林具有三个C:卡片,对话和确认。卡是最初的用户舞会森林,写在索引卡或PostIt便笺上。这是故意的,没有细节。目的是将细节推迟到项目的后期,即在交付此项目之前。通过第二个C会话建立详细信息。随着项目的进展和要素的交付,将进行大量对话,以使人们清楚地了解交付用户舞会森林中确定的价值实际需要什么。

最终的C是确认-这些是用户舞会森林的接受标准-这些细节将使客户和技术团队同意“如果这个舞会森林满足这些条件,则可以完成”。这是在糟糕的敏捷项目(“ Tragile”)中经常遗漏的细节。这个细节需要得到同意,并且将包含实现该产品组件交付所需的一切。敏捷与其他方法之间的主要区别在于我们生成此细节的时间。在敏捷项目中,将在构建部件的几小时之前(几小时到几天)与客户代表合作进行生产。

这些接受标准最常见的格式是<given><when><then>验收测试驱动开发的结构。每个用户舞会森林都将具有许多接受标准,并且可能还会包含其他元素,这些元素将有助于确保构建正确的事物-这些元素可能包括屏幕模型,技术说明,模型(例如类图)以及团队需要使其交付的任何内容商业价值。

示例(针对列表帐户平衡用户舞会森林)

假设客户有一个信用帐户和一个储蓄帐户
他们成功登录后
然后,这两个帐户将按照帐号顺序列出(帐户编号,名称,余额,可用资金)

假设客户没有帐户
他们成功登录后
然后将显示一条消息,指示没有要显示的帐户

给定客户有二十一个帐户
他们成功登录后
然后,前20个帐户将按照帐户编号顺序列出
然后将启用“下一页”选项

假设客户有25个帐户
他们已经成功登录
它们在列表的第一页上
当他们激活“下一页”按钮时
然后列表将被清除
并且该列表将填充最近的五个帐户
并且上一页按钮将被启用
然后将启用下一页按钮

Gojko Adzic的举例说明 provides an excellent reference on how 和 什么时候 to produce acceptance criteria.
最终,将通过一组测试用例(理想情况下是自动化的)来证明验收标准,这些用​​例表明该产品可以按需提供业务价值。

Reduce Waste 和 Be Responsible

Again, the key to reducing waste 和 rework is to defer this detail until just ahead of 什么时候 it is needed, rather than trying to clarify it all up front. Things will change over the life of the project 和 deferring the detail makes it cost-effective to adapt to this change.

但是,采用这种及时的方法不是借口 建筑不良或设计不良。在产品开发的早期,重要的是要设定清晰的架构准则,设计原则并处理 菲利普·克鲁克滕 称为“建筑学上重要的非功能性需求” –这些方面将极其昂贵,以后很难重构。但是请注意,我们说的是“准则”和“原则” –不要试图先构建完整的体系结构,而要使其出现在这些明确准则的范围之内。

用户舞会森林的可追溯性

希望从该描述中可以清楚地看出,用户舞会森林实际上具有内置在该技术设计中的强大可追溯性机制。

存在一对多的级联关系:

  • 用户角色或类别从一个或多个史诗中获得价值
  • 一部史诗可能有许多用户舞会森林
  • 一个用户案例最终将有许多验收标准
  • 一个验收标准将有多个测试用例,证明其按预期工作

可追溯性是通过用户舞会森林的“ so that”组件制定的,从而确保所实施的每一部分都与要从该组件/能力中获得的业务价值具有直接关系。

时机与众不同

关键在于时间安排-用户舞会森林在项目的早期是故意抽象的,并且会随着时间的推移而适度地发展。这是因为敏捷项目期望并预期变化,并通过使产品适应不断变化的需求来对此变化做出响应。随着时间的推移,将添加更多的用户舞会森林,一些用户舞会森林将被删除,我们对许多用户舞会森林的理解将发生变化。当今商业世界的现实是,变革是不可避免的,因此尝试定义前期各个方面的细节将导致大量的工作和时间浪费,因为需要重做许多工作。

舞会森林图是一种可变的,不断变化的工具–当舞会森林完成时,它们会被删除,添加新舞会森林并接受更改,这是我们最大程度地向利益相关者和产品所面向的组织交付价值的方式的一部分内置的。
The detailed Acceptance Criteria for any User Story will on be produced just ahead of 什么时候 it will be delivered, maximizing the amount of work not done (one of the 12 principles of the 敏捷 Manifesto)

One of the mistaken 和 dangerous myths of 敏捷 is that “Agile projects have no documents” – the reality is 敏捷 projects have the documentation that is needed to ensure value is delivered, 和 nothing more. The philosophy is to defer work until just ahead of 什么时候 the output of that work is needed (a concept inherent in Lean thinking) 和 only do that work which is necessary to achieve the desired outcome (preventing 不必要的工作和返工浪费)。

这与用例思维形成了鲜明的对比,用例思维的目标是在用例的各种流程中定义所有需求的详细信息。这种方法将不可避免地导致浪费的精力,因为随着不断变化的需求的出现,用例必须得到维护和更新。在敏捷中,我们要发展解决方案 iteratively 和 incrementally 我们会根据真实客户/用户的反馈进行学习,因此请勿重做文档和要求。

您可以在敏捷项目中使用用例代替用户案例吗?

从理论上讲,是的-您确实可以使用用例代替用户案例来表达业务需求。敏捷方法都没有关于如何表达产品必须包含的功能/功能(Scrum称为产品待办事项列表)的规定,但是,我们发现这样做有很大的风险。用例错过了“为什么”的标记;它们不太适合表达单独的业务价值并支持迭代的渐进式方法来开发产品–它们往往是整体的,并鼓励“全有或全无”的思维方式,而不是适应性的进化学习风格。通过快速构建和反馈循环一起发现解决方案。

您可以在开发敏捷解决方案以记录事实之后的需求之后构建用例吗?

从理论上讲,是的。 。 。但是,使用这种方法时,您错过了“用户舞会森林”中的一项关键技术,该技术可以指导对话以在整个开发过程中最大化价值并最小化额外工作。

敏捷项目中用例思维的风险和危险

  • 妥协的创新
    • 用例在获取有关已构建产品的反馈之前会提供很多细节。这从认知上将用户的思维定式带入了预定义的交互和解决方案中,从而消除了进一步创新的潜力。探索和学习方面受到损害,重点从解决需求到完善已定义的解决方案。
  • 妥协的时间表:
    • Too much detail before building compromises the benefits of time in the 敏捷 approach. Spending time detailing out 用例 is spending time on what 和 how 什么时候 we be should focusing on the why. Defer the what 和 how until just ahead of 什么时候 it is needed
  • 妥协价值:
    • 用例混淆了用户舞会森林和敏捷中接受标准的作用。许多团队正在使用用例代替为其用户舞会森林创建接受条件。验收标准随着构建的迭代和发展而在细节层次上发展,并且在敏捷过程中一起学习更多。在开始之前,这个学习过程就是价值所在,因为需求是未知的。

结论

Many teams embarking on their 敏捷 journeys are finding comfort in techniques used in the past for requirements definition, particularly 用例. 用例 resemble user stories in more detail, 和 用户舞会森林 were developed as a condensed technique to alleviate the lack of WHY in 用例 和 to alleviate too much detail too soon 什么时候 using an 敏捷 approach.

我们认为,用户案例和验收标准是旨在提供敏捷方法的好处和用例妥协并使敏捷方法的好处面临风险的技术。

考虑使用用例的团队应强烈考虑研究定义接受标准的方法和演变(尤其是<given><when><then>模型)以及许多场景和细节级别,这些场景和细节级别会随着迭代周期的反馈不断发展,并随着产品的发展而不断增加。保持用户舞会森林(包括舞会森林地图)&史诗)以及定义明确且不断发展的接受标准将达到在不将时间表和价值置于风险的情况下利用敏捷优势的目标。

不要忘记在下面留下您的评论。

关于作者

肖恩·哈斯蒂肖恩·哈斯蒂

尚恩 是首席知识工程师和敏捷实践负责人 软件教育,这是一家位于澳大利亚和新西兰的培训和咨询机构,在世界各地都有业务。 

尚恩教授业务分析和敏捷性方面的课程和咨询,并热衷于将两个社区融合在一起。
他是该委员会的成员 敏捷联盟, 和 is the 主编 在InfoQ.com上的“过程和实践”社区中
可以通过以下方式与他联系 [email protected] 和 on twitter as @shanehastie

阿威克安吉拉·威克(Angela Wick),CBAP,PMP

Wick女士对启发创新的BA充满热情,并且是业务分析领域的领导者。 Angela是业务分析,项目管理以及将创新和创造力带给这些角色的培训师。她喜欢与传统团队和敏捷团队合作,尤其是在为团队中的敏捷团队做准备方面。她还向组织咨询,以建立BACoE,BA做法,BA职业模型和BA能力。 Angela是BABOK v3和IIBA能力模型的主要贡献者。 Angela还是BaTimes.com上的每月博客

安吉拉可以到达 [email protected] 和 on twitter @WickAng

尚恩和Angela都是IIBA团队构建业务分析知识体系(BABOK)版本3的核心团队成员。

安吉拉·威克(Angela Wick)

杰出贡献者安吉拉·威克(Angela Wick)是BA-Cube和BA-Squared的创始人。她热衷于为现代学士学位教授实用的学士学位技能。她拥有20多年的经验,将文学学士技能提升到了新的水平,并迈向了未来!安吉拉(Angela)还是领英(LinkedIn)学习讲师,文学士和敏捷文学士培训师,受到高度评价的演讲者和研讨会促进者,并且是许多行业出版物的撰稿人。 www.BA-Cube.com www.BA-Squared.com Twitter:@WickAng

©BA Times.com 2020

麦格雷戈徽标白色网站