是什么区别include
和extend
的用例图 ?
Answer 1:
延伸时的使用情况增加了步骤到另一个一流使用情况下使用。
例如,假设“提取现金”是一个自动取款机(ATM)的使用情况。 “评估费”将扩展提取现金,并描述有条件的“扩展点”的时候,ATM用户不会在ATM的所属机构,银行被实例化。 请注意,基本的“提取现金”用例都是独立的,不带扩展名。
包括用于提取了在多个用例重复使用情况下的片段。 附带的使用情况下不能单独与原来使用的情况下,是不完整的没有收录其中。 这应该谨慎,只有在情况下,重复是显著和设计存在(而不是巧合)一起使用。
例如,发生在每一个ATM用例的开始事件流(当用户将在他们的ATM卡,进入他们的PIN码,并显示在主菜单)将是一个很好的候选人的包括。
Answer 2:
这可能是有争议的,但“包括总是和扩展有时”,其已经几乎接管现在作为事实上的意思很常见的误解。 下面是一个正确的做法(在我看来,和核对雅各布森,福勒,Larmen等10篇参考文献)。
关系是依赖
包括和扩展的用例的关系,关键是要认识到,常见的有UML的其余部分,用例之间的虚线箭头是一个依赖关系。 我将使用术语“基地”,“包括”和“扩大”是指用例角色。
包括
甲碱的使用情况是依赖于所包括的用例(一个或多个); 没有它/它们的碱的使用情况是不完整的包含用例(一个或多个)表示可始终或有时发生相互作用的子序列。 (这是违背了这个一个普遍的误解,什么你的使用情况表明,总是在主场景发生,有时发生在可选的流程只需要看你选择什么作为主场景,用例可以很容易地调整,以表示不同的流作为主场景,这不应该的问题)。
在依赖基本用例的一种方法最好的做法知道(并指)所包含的用例,但包括用例不应该“知道”关于基本用例。 这就是为什么包含的用例可以是:a)基本用例在自己的权利和b)通过一些基本用例共享。
延伸
延伸的使用情况是依赖于基本用例; 它的字面延伸通过基本用例描述的行为。 基本用例应该是一个全功能的情况下使用在自己的权利('包括的包含当然)不延伸的情况下使用的附加功能。
扩展用例可以在几种情况下使用:
- 基本用例是项目的“必备”功能,而扩展用例代表可选的(应该/能/想要的)行为。 这是术语可选的是相关的 - 可选是否要建立/交付,而不是可选是否有时运行作为基本用例序列的一部分。
- 在阶段1中,你可以提供满足在该点的要求基本用的情况下,和阶段2将添加由扩展用例描述的附加功能。 这可以包含相2被递送(再次与普遍的误解)后,可以进行始终或有时执行序列。
- 它可以用来提取出基本用例的子序列,尤其是当它们代表“特殊”与自己的备选流复杂的行为。
要考虑的一个重要方面是延长使用的情况下可以在基本用例流程的几个地方,不只是作为一个包含用例做了一个地方“插入”行为。 出于这个原因,它是非常不可能的延伸用例将适合于延伸超过一个基本用例。
至于依赖性,延伸使用情况是依赖于基本用例,并再次是单向依赖性,即基本用例并不需要延伸用例序列中的任何参考。 这并不意味着你不能证明的扩展点或在模板中添加X-裁判的扩展用例其他地方,但基本用例必须能在没有扩展用例的工作。
摘要
我希望我已经表明的普遍误解“包括总是,扩展有时是”要么是错误的或最好的简单化。 这个版本实际上更有意义,如果你认为所有关于误解呈现箭头的方向性问题 - 在正确的模型,它只是依赖,如果你重构用例的内容不会潜在地改变。
Answer 3:
我经常用这个要记住两个:
我用例:我要去的城市。
包括 - >开车
扩展 - >填写汽油
“补油”可能不会在任何时候都需要,但基于汽油留在车内的量可以任选需要。 “把汽车”是一个先决条件,因此我包括。
Answer 4:
用例用于记录的行为,如回答这个问题。
A型行为扩展另一个,如果它是除了,但不一定是行为,如研究答案的一部分。
还要注意的是研究的答案并没有太大的意义,如果你是不是想回答这个问题。
行为是包括在另一如果它是包括行为的一部分,例如登录到堆栈交换。
为了澄清,如果你想在这里回答堆栈溢出的例证是唯一真正的:)。
这是从技术定义UML 2.5 671-672页。
我强调我认为很重要的点。
扩展
的扩展是从一个延伸的用例 (延伸) 到扩展用例 (所述extendedCase),指定如何以及何时在延伸用例中定义的行为能够被插入到在扩展用例中定义的行为的关系。 扩展发生在在扩展用例中定义的一个或多个特定的扩展点。
延伸旨在当存在应该被添加, 可能有条件地 ,以便在一个或多个UseCases定义的行为一些额外行为来使用。
扩展用例被独立地定义的延伸的用例,并且是独立地有意义延伸用例的 。 在另一方面, 延伸用例通常限定行为本身可能不一定是有意义的 。 取而代之的是,用例延伸定义了一组增强特定的条件下扩展用例的执行模块化行为增量。
...
包括
包括在两个UseCases之间的DirectedRelationship,表明包括用例 (添加)的行为被插入到包括用例 (所述includingCase) 的行为 。 这也是一种NamedElement,以便它可以在拥有它的用例(该includingCase)的上下文中的名称。 该包括用例可以依赖于通过执行包括用例所产生的变化。 所包括的用例必须是可用于被完全描述的用例包括的行为。
所述包含关系旨在当存在两个或更多UseCases的行为的公用部分时使用。 然后该公共部分被提取到一个单独的用例,由具有该部分在共同所有的基UseCases被包括在内 。 由于包含关系的主要用途是用于公用部分的重用,什么是基本用例左通常本身并不是完整的 ,但是,包括部分依赖是有意义的。 这反映在该关系的方向,这表明用例基础依赖于另外反之则不行。
...
Answer 5:
我想了解意向的包括和扩展是非常重要的:
“的包含关系是用于把通过另一个用例建模的行为,而扩展关系是用于将部分现有的使用情况以及建模可选的系统服务”(Overgaard和Palmkvist,用例:模式和蓝图艾迪生。 -Wesley,2004)。
这读取到我的:
包括的功能= 重用 (即,包括功能用于或可以在系统中的其他地方使用)。 包括因此表示在另一种使用情况的相关性。
延伸= 加入 (未重用)的功能, 还任何可选功能。 延伸。因此可以表示两种情况之一:
1.增加新的功能/能力,以用例(可选或不)
2.任何任选的用例(现有的或不是)。
摘要:
包括的功能=重用
延伸=新的和/或可选功能
你会经常发现第二使用率(即可选功能)的延伸,因为如果功能不可选的,则大多数时候,它内置在用例本身,而不是一个扩展。 至少这是我的经验。 (朱利安ç指出,你有时会看到的第一个使用(即增加新的功能)延伸。当一个项目进入它的第二阶段)。
Answer 6:
让我们更清楚。 我们使用include
我们要表达一个案件的存在依赖于他人的存在,事实上每一次。
例子:
用户可以做网上购物,他在他的帐户登录之后才。 换句话说,他不能做任何购物,直到他在他的帐户已经登录。
该材料已上载之前,用户不能从一个网站下载。 所以,如果没有已经上传我无法下载。
你明白了吗?
这是关于空调的后果。 我不能做到这一点,如果我以前并没有这样做 。
至少,我认为这是我们用正确的方式Include
。 我倾向于认为从正上方笔记本电脑和保修的例子是最有说服力!
Answer 7:
我想MSDN解释这里是很容易理解的。
包括 [5]
一种包括用例调用或调用包含一个。 包容是用来显示一个用例是如何分解成更小的步骤。 附带的使用情况是在箭头端。
延长 [6]
同时,延伸使用情况增加的目标和措施,超期使用情况。 这些扩展只在特定条件下运行。 扩展的使用情况是在箭头端。
Answer 8:
为了简化,
对于include
- 当执行基本用的情况下,包含用例是每次执行。
- 基本用情况下所需的包含用例的完成,以便完成。
一个典型的例子:登录和密码验证之间
(登录)--- << >>包括--->(验证密码)
在登录过程成功,“确认密码”必须是成功的为好。
为extend
- 当执行基本用的情况下,长时间使用情况下,仅执行SOMETIMES
- 当满足一定的条件的长时间使用的情况下才会发生。
一个典型的例子:登录和显示错误消息之间(有时仅发生)
(登录)<--- <<延伸>> ---(显示错误消息)
“显示错误消息”仅在登录过程失败有时会发生。
Answer 9:
每当有先决条件的用例,然后,去包括。
具有认证usecases,最坏的情况下,或者是可选的,然后去扩展..
例如:希望被接纳,约会,票证预约您必须填写的表格(注册或反馈形式)的使用情况....这是在包括来自..
例如:一个使用案例验证您的帐户登录或者注册,身份验证是must.also认为最坏情况scenarios.like与fine..NOT得到一个reservation..paying汇票后DUE DATE..this是返回书其中,延长来玩...
不要过度使用包括和图中的延伸。
保持简单愚蠢!
Answer 10:
“包含”用于扩展基本用例,它是包含用例运行必须成功运行以完成基本用一绝条件即
例如,考虑电子邮件服务的情况下,这里的“登录”是必须以发送电子邮件(基本用例)运行的包含用例
另一方面“排除”是其延伸基本用例可选地使用的情况下,基本用例即使不调用/调用扩展用例成功运行。
例如,请考虑“笔记本电脑采购”为基本用例和“附加保证”为扩展用例,在这里你甚至可以不考虑额外的保修运行基本用例“笔记本电脑采购”。
Answer 11:
另外注意的UML版本:这是一个很长的时间,现在<<使用>> <<和>>包括已通过<<包括更换>>,<<和延伸>> <<通过延长>>和概括 。
对于我来说,这往往是误导性的观点:作为一个例子斯蒂芬妮的岗位和环节是关于一个老版本:
当一个项目支付,您可以选择支付交付,使用贝宝支付或者刷卡。 这些都是替代了“支付项目”的用例。 我可以选择任何的根据我的喜好这些选项。
其实没有真正替代“为项目支付”! 在时下UML,“交货工资”是一个扩展,以及“使用贝宝支付” /“通过工资卡”的专业。
Answer 12:
这是一个巨大的资源与很好的解释: 什么是包括在用例? 什么是扩展在使用呢?
扩展用例通常定义可选行为。 它独立于延长使用情况
包括用于提取的两种行为或多个用例的公共部分
Answer 13:
延伸。当你认识到自己的使用情况是太多复杂的使用。 所以你提取复杂的步骤变成自己的“扩展”的用例。
包括是当你看到两个用例的公共行为中。 所以,你抽象出共同的行为放到一个单独的“抽象”的用例。
(参考:杰弗里·L·惠滕,朗尼·D·本特利,系统分析与设计方法,麦格劳 - 希尔/欧文,2007年)
Answer 14:
两个<include>
和<extend>
依赖于基类,但<extend>
是可选的,即,它从基类,但在用户点导出查看它可以使用或可以不使用。
<include>
在基类即并入,这是必须放使用<include>
在你的使用情况,否则它会被认为是不完整的。
例如:
在ATM机结构(根据图用户点):
1:提款,现金存款和检查帐户下配<extend>
,因为它依赖于用户是否撤销或存款或检查。 这些都是可选的东西用户执行。
2:“输入PIN码,将卡取出卡”这些都是在来的东西<include>
,因为用户必须和应该放置卡片,然后输入一个有效的PIN验证。
Answer 15:
图表元素
演员:也称为角色。 名称和演员的刻板印象可以在属性选项卡进行更改。
继承:行动者之间的关系,细化。 这种关系可以携带一个名字和一个刻板印象。
使用情况:这些可以有扩展点。
扩展点:定义其中可以添加扩展的位置。
协会:角色和用例之间。 这是给协会来讲名称很有用。
依赖关系:用例之间。 依赖往往有一个刻板印象,以更好地确定依赖性的作用。 要选择一个原型中,选择从图中或导航窗格中的相关性,然后更改属性标签的原型。 有两种特殊的依赖关系:
<<extend>>
和<<include>>
,为此,海神提供自己的按钮(见下文)。扩展关系:两个用例之间的单向关系。 用例B和使用情况A之间的延伸关系意味着B的行为可以包括在A.
包含关系:两个用例之间的单向关系。 用例A和B装置之间这样的关系,即B的行为总是包括在A.
系统边界:系统边界实际上没有实现为UML海神模型元素。 你可以简单地画一个矩形,将其发送到后台,并通过将所有相应的使用情况在矩形内使用它作为系统边界。
Answer 16:
我不建议使用此记住两个:
我用例:我要去的城市。
包括 - >开车
扩展 - >填写汽油
我宁愿你使用:我用例:我要去的城市。
扩展 - >开车
包括 - >填充汽油
我教的是扩展关系延续了基类的行为。 基类的功能必须在那里。 在包括在另一方面关系,是类似于可被调用的函数。 五月是大胆的。
这可以从可以看出在用例模型agilemodeling重用
Answer 17:
的包括关系允许一个用例为包括另一个用例的步骤。
例如,假设你有一个亚马逊帐户,并要检查的顺序,那么它是不可能的顺序检查没有先登录到您的帐户。 因此,事件流会像现在这样...
扩展关系被用于一个额外的步骤添加到一个用例的流动,这通常是可选的步骤...
试想一下,我们还在谈论您的Amazon帐户。 让我们假设基本情况是秩序和扩展用例是亚马逊 。 用户可以选择只定期订购的项目,或者,用户必须选择亚马逊,确保他的订单将在更高的成本更快地到达的选项。
但是,请注意,用户不必选择亚马逊,这只是一种选择,他们可以选择忽略这个用例。
Answer 18:
在两者之间的差额已说明如下。 但是一直没有什么解释的事实是<<include>>
和<<extend>>
应该简单地根本不被使用。
如果你读比特纳/斯彭斯,你知道用例是关于合成,而不是分析。 一个再使用用例是无稽之谈。 这清楚地表明,你已经削减域错误。 增值必须是唯一的本身。 唯一的再利用增值的我所知道的是特许经营权。 所以,如果你是在汉堡业务,美观大方。 但是,在其他地方你作为BA的任务是设法找到一个USP。 而且必须在良好的用例来呈现。
每当我看到使用这些关系的一个人是当他们试图做的功能分解。 这是完全错误的。
把它简单:如果你能回答你的老板没有犹豫:“我已经做了......”那么“......”就是因为你有钱给做你的使用情况。 (这也将明确指出,“登陆”是不是一个用例都没有。)
在这方面,发现包含或扩展其他使用情况是不太可能自立式使用情况。 最终,你可以使用<<extend>>
显示系统的可选性,即一些许可模式,它允许包括某些许可证使用情况或忽略它们。 但是其他 - 只要避开他们。
Answer 19:
我喜欢把“包括”为基本用例的必要前提/伴奏。 这意味着,基本用例不能被认为是完整的,而无需使用情况下,它包括。 我给一个电子商务网站,销售商品给客户的例子。 有没有办法可以为项目付出没有首先选择该项目,并把它放进购物车。 这意味着使用案例“缴”包括“选择项”。
有扩展的不同用途,但我喜欢把它理解为可以或不可以使用的替代品。 例如 - 仍然在电子商务网站。 当一个项目支付,您可以选择支付交付,使用贝宝支付或者刷卡。 这些都是替代了“支付项目”的用例。 我可以选择任何的根据我的喜好这些选项。
为了更清楚和周围使用情况的规则,在这里阅读我的文章:
http://businessanalystlearnings.com/ba-techniques/2013/2/20/use-case-diagram-the-basics