在用例图中包含和扩展之间的区别是什么?


当前回答

用例用于记录行为,例如回答这个问题。

一种行为延伸了另一种行为,如果它是行为的补充,但不一定是行为的一部分,例如研究答案。

还要注意的是,如果你不试图回答这个问题,研究答案也没有多大意义。

如果一个行为是包含行为的一部分,则该行为被包含在另一个行为中,例如登录到堆栈交换。

为了澄清,只有当你想在堆栈溢出中回答这个问题时,这个例子才成立。

这些是UML 2.5第671-672页的技术定义。

我强调了我认为重要的几点。

扩展

扩展是一个从扩展UseCase(扩展)到扩展UseCase (extendedCase)的关系 如何以及何时将扩展UseCase中定义的行为插入到扩展UseCase中定义的行为中。 扩展发生在扩展的UseCase中定义的一个或多个特定扩展点上。

当有一些额外的行为应该被添加到行为中时(可能是有条件的)使用Extend 定义在一个或多个用例中。

扩展的UseCase的定义独立于扩展的UseCase,并且具有独立于扩展的意义 UseCase。另一方面,扩展的UseCase通常定义了本身不一定有意义的行为。 相反,扩展的UseCase定义了一组模块化行为增量,以增加扩展UseCase的执行 在特定条件下。

...

包括

Include is a DirectedRelationship between two UseCases, indicating that the behavior of the included UseCase (the addition) is inserted into the behavior of the including UseCase (the includingCase). It is also a kind of NamedElement so that it can have a name in the context of its owning UseCase (the includingCase). The including UseCase may depend on the changes produced by executing the included UseCase. The included UseCase must be available for the behavior of the including UseCase to be completely described.

The Include relationship is intended to be used when there are common parts of the behavior of two or more UseCases. This common part is then extracted to a separate UseCase, to be included by all the base UseCases having this part in common. As the primary use of the Include relationship is for reuse of common parts, what is left in a base UseCase is usually not complete in itself but dependent on the included parts to be meaningful. This is reflected in the direction of the relationship, indicating that the base UseCase depends on the addition but not vice versa.

...

其他回答

为了简化,

为包括

当基本用例执行时,包含的用例将每次执行一次。 基本用例需要完成所包含的用例才能完成。

一个典型的例子:在登录和验证密码之间

(登录)——<< include >>——>(验证密码)

为了使登录过程成功,“验证密码”也必须成功。


为扩展

当基本用例被执行时,扩展用例只是偶尔执行 扩展用例仅在满足某些条件时才会发生。

一个典型的例子:在登录和显示错误消息之间(只偶尔发生)

(登录 ) <--- << 扩展> >——(显示错误消息)

“show error message”只在登录过程失败时才会出现。

让我们说清楚一点。每当我们想表达一种情况的存在依赖于另一种情况的存在时,我们就用包含。

例子:

用户只有登录账号后才能在网上购物。换句话说,在他登录自己的账户之前,他不能购物。

在材料被上传之前,用户不能从网站上下载。 所以,如果什么都没有上传,我就无法下载。

你明白了吗?

这是关于条件后果的。如果之前我没有这样做,我就不能这样做。

至少,我认为这是我们使用Include的正确方式。 我倾向于认为上面的笔记本电脑和保修的例子是最有说服力的!

当您理解您的用例过于复杂时,可以使用Extends。因此,您将复杂的步骤提取到它们自己的“扩展”用例中。

Includes用于在两个用例中看到相同的行为。因此,您将常见的行为抽象到一个单独的“抽象”用例中。

(参考:Jeffrey L. Whitten, Lonnie D. Bentley,系统分析与设计方法,McGraw-Hill/Irwin, 2007)

我记得是通过电子游戏。例如, (下面不是100%的用例,只是一个用例的例子)

扩展:主菜单扩展了一些功能,这意味着它们有一些功能,但不需要按下

包括:为了在电子游戏中开火,你必须先有一个武器。

“包含”用于扩展基本用例,这是一个必须条件,即包含的用例运行必须成功运行以完成基本使用。

如。 考虑一个电子邮件服务的案例,这里“Login”是一个包含的用例,必须运行它来发送电子邮件(基本用例)

另一方面,“Exclude”是扩展基本用例的可选用例,基本用例即使不调用/调用扩展用例也可以成功运行。

如。 考虑“Laptop Purchase”作为基本用例,“Additional Warranty”作为扩展用例,在这里你可以运行基本用例“Laptop Purchase”,甚至不需要额外的保证。