文章目录
一、定义
用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
二、构成
1、参与者
定义
用以表示和系统进行交互的参与者角色,不一定是人也可以是物或者系统。并且参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。
表示方法
示例
2、用例
定义
用例就是外部可见的系统功能,对系统提供的服务进行描述。
表示方法
示例
3、边界
定义
指系统与系统之间的界限。把系统边界以外的同系统相关联的其他部分称为系统环境。
表示方法
系统边界在用例图中用方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。
示例
4、参与者与用例的关系
1、关联(association)
定义
关联关系表示参与者与用例之间的通信,任何一方都可发送或接受消息。
表示方法
说明
关联关系表示的是参与者与用例之间的关系
参与者和用例之间的关系用箭头表示,箭头表示在这一关系中哪一方是交互的主动发起者,箭头所指方是交互的被动接受者;如果不想强调交互中的主动与被动关系,可以使用不带箭头的关联实线。在参与者和用例之间的连线并不表示信息流,实际这种信息交互是默认存在的(用例本身描述的就是参与者和系统之间的交互),并且信息流向是双向的,它与关联箭头所指的方向毫无关系,因此关联关系用带箭头的关联实线表示与不带箭头的关联实线表示的意义是一致的。
示例
2、泛化(inheritance)
定义
泛化关系表示的是继承关系。
表示方法
[箭头指向] :由子参与者指向父参与者,或者由子用例指向父用例
说明
泛化关系表示的是参与者之间或用例之间的关系
示例
3、包含(include)
定义
包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。
表示方法
[箭头指向] :由基础用例指向被包含的用例
说明
包含关系表示用例之间的关系,主要有以下两种情况需要用到包含关系:
1、多个用例用到同一段的行为,则可以把这段共同的行为单独抽象成一个用例,然后让其他用例来包含这一用例。
2、当某一个用例的功能过多、事件流过于复杂时,也可以把某一段事件流抽象成一个被包含的用例,以达到简化描述的目的。
从包含关系的用处中,我们可以看到它的优点,使用包含关系提高了用例模型的可维护性,当需要对公共需求进行修改时,只需要修改一个用例而不必修改所有与其有关的用例。不但可以避免在多个用例中重复的描述同一段行为,还可以避免在多个用例中对同一段行为描述不一致的现象。
示例
4、扩展(extend)
定义
扩展关系也是指"两个用例之间的关系"。一个用例可以被定义为基础用例的增量的扩展,称作为扩展关系。扩展关系是把新的行为插入到已有用例中的方法,基础用例如果没有扩展用例的执行就不会涉及扩展用例,也就是说只有在特定的条件发生时,扩展用例才被执行。比如登录用例有扩展注册用例,因为如果已经注册过,则直接登录,如果没有则跳转到注册用例。
表示方法
[箭头指向] :由扩展用例指向到基础用例
说明
1、扩展关系表示用例之间的关系
2、扩展关系与包含关系的不同点如下:
(1)、在扩展关系中,基础用例提供了一个或者多个插入点,扩展用例为这些插入点提供了需要插入的行为。而在包含关系中,插入点只能有一个。
(2)、在扩展关系中,基础用例的执行并不一定会涉及到扩展用例,扩展用例只有在满足一定条件下才会被执行。而在包含关系中,当基础用例执行完后,被包含用例是一定会被执行的。
(3)、即使没有扩展用例,扩展关系中的基础用例本身也是完整的。而对于包含关系,基础用例在没有没有被包含用例的情况下就是不完整的存在。
示例
三、案例
1、某车票销售系统完成如下功能:顾客可以浏览系统来查询车票信息,顾客可以输入个人信息(姓名、地址、昵称、邮件)注册成系统会员;会员登录后可以预定、退票等;管理人员可以进行车票信息管理、会员信息管理等。当会员预定车票时,先向系统提交车票预定信息(出发地、目的地、出发时间、人数等),系统检索并显示满足条件的班次,会员选择所要的班次,系统检索并显示剩余的座位信息,会员选择所要的座位,系统会生成相应的预定记录,系统将会员所选择的座位状态从“未预定”修改为“已预定”。
UML用例图参考