【定义】
用例图描述用户的需求,从用户角度描述系统功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。
【组成】
由参与者(Actor)、用例(UseCase)以及它们之间的关系构成的用于描述系统功能的静态视图称为用例图。
参与者(Actor)
参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。
参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。
用例(UseCase)
我们可以把用例理解为是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。
用例在画图中用椭圆来表示,椭圆下面附上用例的名称。
关系:
用例图中的关系有:关联关系、泛化关系, 包含关系、扩充关系。应用这些关系是为了抽取系统的公共行为和变体。
关联关系(Association)
表示参与者与用例之间的通信,任何一方都可发送或接受消息。箭头指向指向消息接收方。
关联可以有方向,只在一个方向上存在关联,称作单向关联(Unidirectional Association);在两个方向上面都存在的关联称作双向关联(Bidirection Association).
在图形上,用带箭头的实线表示。
泛化关系(Generalization)
是一种继承关系, 表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.
在图形上,用例之间的泛化关系用带有空心三角形箭头的实线表示,箭头方向由子用例指向父类。
角色与角色之间的关系最常见的就是泛化关系。
包含关系(Include)
虽然每个用例都是独立的,但是一个用例可以用其他更简单的用例来描述。一个用例可以简单地包含其他用例具有的行为,并把他所包含的用例行为作为自身行为的一部分,这种关系被称为包含关系。
扩展关系(Extend)
主要表示用例之间的关系。扩展是对基用例的扩展,基用例本身是一个完整的用例,而子用例对基用例的一个扩展点进行扩展,子用例对基用例来说并不是必须的。就像去超市买东西,有的时候有赠品,有的时候没有赠品,赠品对于要买的东西来说没有影响。
extend关系在用例图中使用带箭头的虚线表示(在线上标注<<extend>>),箭头从子用例指向基用例。
最后,附上一张机房收费系统各个角色的用例图。初次画图,有错误大家尽可指出,共同进步!