(1) 关联关系
关联关系是指执行者与用例之间的关系,又称为通信关系,如果某个执行者可以对某个用例进行操作,它们之间就具有关联关系,如下图所示,“经理”有一个功能为“查看库存报表”,因此可以在执行者“经理”和用例“查看库存报表”之间建立一个关联关系,关联关系用实线表示。
(2) 泛化关系
执行者之间的关系只有一种,即泛化关系,用一个带有空心三角形的实线表示,如下图所示,在该图中,仓库管理员、系统管理员、经理都是员工的一种,因此员工拥有的功能这三者都拥有,如登录、修改个人信息等,为了减少用例的个数并且使系统更加符合面向对象设计规范,可以对执行者进行泛化,将各类执行者都具有相同的功能移至父执行者,而将每类执行者特有的功能保留在子执行者中。
常见的用例之间的关系有两种,分别是包含关系和扩展关系,下面介绍这两种关系的含义以及在用例图中如何表示。
(3) 包含关系
如果多个用例都具有一部分相同的行为,可以将这部分相同的行为作为一个单独的用例抽取出来,与原来的用例形成一个包含关系。如仓库管理员在进行入库、出库等操作之前需要先登录,登录是入库、出库流程的基本组成部分,因此用例“入库”和“出库”包含用例“登录”。为了更加清晰地描述多个用例的相同行为,在用例图中提供了用例与用例之间的包含关系。
在UML中,包含关系用依赖线(虚线)加一个<<include>>表示,由原始用例指向包含用例,如下图所示:
(4) 扩展关系
扩展关系又称为延伸关系,如果一个用例在执行时可能会使用到另一个用例,或者使用一个新的用例对原有用例的行为进行扩展时可以使用扩展关系,如仓库管理员在入库时发现某种商品在系统中暂不存在,则可以增加新的商品信息;如果入库商品均已存在,则无需增加商品信息,此时用例“增加商品信息”可以作为用例“入库”的扩展用例。在需要扩展的用例(原始用例)中需指定一个扩展点(即需扩展的位置),在下一节编写用例文档中将学习如何设置扩展点。
在UML中,包含关系用依赖线(虚线)加一个<<extend>>表示,由扩展用例指向原始用例,如下图所示:
关于包含关系和扩展关系箭头的指向,可以记住两句口诀:包含进来,箭头向外;扩展出去,箭头向里。
除了上述的包含关系和扩展关系外,用例之间还存在一种与执行者泛化类似的泛化关系,但不太常见,在这里不予以详细介绍。