本文修改自:https://www.cnblogs.com/lcword/p/10472040.html
用例图主要用来描述角色以及角色与用例之间的连接关系,说明谁要使用系统,以及他们使用系统可以做什么。用例图包含多种元素(比如:参与者、用例、系统),以及元素之间的各种关系(比如:关联、泛化、包含、扩展)。用例图展示了外部用户能够观察到的系统功能。
用例图可以帮助开发团队以可视化的方式理解系统的功能需求。
1,参与者(Actor):
与应用程序或系统进行交互的用户、组织或外部系统。用小人表示。
2,用例(Use Case):
外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示。
3,子系统(SubSystem):
用来展示系统的一部分功能,这部分功能联系紧密。
用例图中涉及的关系有:
1,关联(Association)
表示参与者与用例之间的通信,任何一方都可以发送和接收消息。
【箭头指向】:无箭头,将参与者与用例相连接
2,泛化(Inheritance)
就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。
【箭头方向】:指向父用例
3,包含(Include)
包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。包含关系最典型的应用是复用,但是当某用例的事件流过于复杂时,为了简化用例的描述,也可以把某一段事件流抽象成为一个被包含的用例。相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。
【箭头指向】:指向被分解出来的功能用例
4,扩展(Extend)
扩展关系是指用例功能的延伸,相当于为基础用例提供附加功能。将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。
5,依赖(Dependency)
以上4种关系是 UML 定义的标准关系。VS2010的用例图中,添加了依赖关系,用带箭头的虚线表示。依赖关系表示源用例依赖于目标用例。
【箭头指向】:指向被依赖项
6,注释(Comment)
条件性:
泛化中的子用例和包含中被包含的用例会无条件发生,而扩展中的延伸用例的发生是有条件的
直接性:
泛化中的子用例和扩展中的延伸用例直接地为参与者提供服务,而包含中被包含的用例间接地为参与者提供服务
扩展中的延伸用例不包含基础用例的内容,基础用例也不包含延伸用例的内容
泛化中的子用例包含基础用例的所有内容及其与其它用例和参与者之间的关系
泛化侧重于表示子用例之间的互斥性
包含侧重于表示被包含的用例为 Actor 提供服务的间接性
扩展侧重于表示延伸用例的触发的不确定性
泛化中的子用例和扩展中的延伸用例均可以作为基本用例事件的备选流而存在