在用例图中包含和扩展之间的区别是什么?
当前回答
我认为理解includes和extends的意图很重要:
“包含关系旨在重用已建模的行为 通过另一个用例,而扩展关系是为 向现有的用例中添加部件,以及为可选的系统服务建模”(Overgaard和Palmkvist,用例:模式和蓝图。addison - wesley, 2004)。
在我看来,这是:
包含=功能的重用(即所包含的功能在系统的其他地方被使用或可能被使用)。因此Include表示对另一个用例的依赖。
Extends =添加(而不是重用)功能和任何可选功能。因此,Extends可以表示以下两种情况之一: 1. 向用例中添加新特性/功能(可选或非可选) 2. 任何可选的用例(是否存在)。
简介: 包含=功能的重用 Extends =新的和/或可选的功能
您将经常发现扩展的第二种用法(即可选功能),因为如果功能不是可选的,那么大多数情况下它被内置到用例本身,而不是作为一个扩展。至少这是我的经验。(Julian C指出,当项目进入第二阶段时,你有时会看到扩展的第一次使用(即添加新功能)。
其他回答
<include>和<extend>都依赖于基类,但<extend>是可选的,也就是说,它是从基类派生的,但在用户的角度来看,它可以被使用,也可以不被使用。
<include>被合并到基类中,也就是说,在用例中必须使用<include>,否则它将被认为是不完整的。
eg:
在ATM机构造上(根据用户角度):
1:提现、存现、支票账户属于<extend>,因为它取决于用户是提现、存款还是支票。这些都是用户可以选择做的事情。
2:“输入pin,放置卡片,移除卡片”这些是在<包括>下的事情,因为用户必须,而且应该,放置卡片并输入有效的pin进行验证。
当您理解您的用例过于复杂时,可以使用Extends。因此,您将复杂的步骤提取到它们自己的“扩展”用例中。
Includes用于在两个用例中看到相同的行为。因此,您将常见的行为抽象到一个单独的“抽象”用例中。
(参考:Jeffrey L. Whitten, Lonnie D. Bentley,系统分析与设计方法,McGraw-Hill/Irwin, 2007)
这是一个很好的资源,有很好的解释: 用例中包含什么? 什么是扩展用例?
扩展用例通常定义可选的行为。它独立于扩展用例 Include用于提取两个或多个用例的行为的公共部分
为了简化,
为包括
当基本用例执行时,包含的用例将每次执行一次。 基本用例需要完成所包含的用例才能完成。
一个典型的例子:在登录和验证密码之间
(登录)——<< include >>——>(验证密码)
为了使登录过程成功,“验证密码”也必须成功。
为扩展
当基本用例被执行时,扩展用例只是偶尔执行 扩展用例仅在满足某些条件时才会发生。
一个典型的例子:在登录和显示错误消息之间(只偶尔发生)
(登录 ) <--- << 扩展> >——(显示错误消息)
“show error message”只在登录过程失败时才会出现。
我记得是通过电子游戏。例如, (下面不是100%的用例,只是一个用例的例子)
扩展:主菜单扩展了一些功能,这意味着它们有一些功能,但不需要按下
包括:为了在电子游戏中开火,你必须先有一个武器。