【定义】
用例图描述的是参与者所理解的系统功能,主要元素是用例和参与者,是帮助开发团队以一种可视化的方式理解系统的功能需求。这时处于项目初始,分析用户需求的阶段。
【用途】
帮助开发团队以一种可视化的方式理解系统的功能需求。
【元素】
1. 参与者(Actor)
参与者是系统外部的一个实体(可以是任何的事物或人),它以某种方式参与了用例的执行过程。用一个小人表示。
2. 用例(Use Case)
用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示。
3. 关系
为了减少模型维护的工作量、保护用例模型的可维护性和一致性,可以在用例之间抽象出包含(Include)、扩展(Extend)和泛化(Generalization)这几种关系
用例图中涉及的关系有:关联、泛化、包含、扩展。
如下表所示:
a. 关联(Association)
表示参与者与用例之间的通信,任何一方都可发送或接受消息。
【箭头指向】:指向消息接收方
b. 泛化(Inheritance)
就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。
【箭头指向】:指向父用例
c. 包含(Include)
包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。
【箭头指向】:指向分解出来的功能用例
d. 扩展(Extend)
扩展关系是指在一定条件下,把新的行为加入到已有的用例中,获得的新的用例称为扩展用例(Extend),原有的用例称为基础用例(Base).相当于为基础用例提供一个附加功能。
【箭头指向】:指向基础用例
包含(include)、扩展(extend)、泛化(Inheritance) 的区别:
条件性:泛化中的子用例和包含中的被包含的用例会无条件发生,而扩展中的延伸用例的发生是有条件的;
直接性:泛化中的子用例和扩展中的延伸用例为参与者提供直接服务,而包含中被包含的用例为参与者提供间接服务。
对扩展而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。
对泛化而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;
【注意】
依赖关系的箭头并不是指示一个过程的方向,相反它指示的是关系的方向,从用例A指向用例B的依赖性箭头,表示用例A依赖用例B,而不是用例A在用例B之前。
【用例图示例】