注意:Actor与use case之间是用直线相连而不是箭头!!!
用例图主要用来描述: 谁使用系统以及使用系统执行什么操作。 |
创建用例图以描述谁将使用系统以及使用系统实现的目的。 用例表示系统用户的目标以及为实现该目标所执行的步骤。
例如,在线售餐系统必须允许顾客从菜单中点菜,且必须允许供应餐饮的餐馆更新菜单。 您可以在用例图中概括这一切:
还可以显示用例如何由多个更小的事例组成。 例如,订餐是购餐的一个部件,而购餐还包括付款和送餐:
还可以显示在正开发的系统范围中包括哪些用例。 例如,插图中的系统未参与“送餐”用例。 这有助于设置开发工作的上下文。 (在用例图中,可以使用子系统容器表示系统或其组件。)
它还可帮助您的团队讨论将在后续版本中包括的内容。 例如,您可以讨论是否在系统的初始版本中而不是在整个系统中,直接在餐馆和顾客之间安排“付餐费”。 这种情况下,您可以将初始版本的“付餐费”移到“立即就餐”系统矩形的外部。
“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。
【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。
用例图所包含的元素如下:
1. 参与者(Actor)
表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示。
2. 用例(Use Case)
用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示。
3. 子系统(Subsystem)
用来展示系统的一部分功能,这部分功能联系紧密。
注意:下面有错误,不是箭头,而是直线!!!
4. 关系
用例图中涉及的关系有:关联、泛化、包含、扩展。
如下表所示:
a. 关联(Association)
表示参与者与用例之间的通信,任何一方都可发送或接受消息。
【箭头指向】:指向消息接收方
注意:下面有错误,不是箭头,而是直线!!!
b. 泛化(Inheritance)
就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。
【箭头指向】:指向父用例
c. 包含(Include)
包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。
【箭头指向】:指向分解出来的功能用例
d. 扩展(Extend)
扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。
【箭头指向】:指向基础用例
e. 依赖(Dependency)
以上4种关系,是UML定义的标准关系。但VS2010的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。
【箭头指向】:指向被依赖项
5. 项目(Artifact)
用例图虽然是用来帮助人们形象地理解功能需求,但却没多少人能够通看懂它。很多时候跟用户交流甚至用Excel都比用例图强,VS2010中引入了“项目”这样一个元素,以便让开发人员能够在用例图中链接一个普通文档。
用依赖关系把某个用例依赖到项目上:
然后把项目-》属性 的Hyperlink设置到你的文档上;
这样当你在用例图上双击项目时,就会打开相关联的文档。
6. 注释(Comment)
包含(include)、扩展(extend)、泛化(Inheritance) 的区别:
条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;
直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。
对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。
对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;