用例图是UML的重要组成部分,主要用来描述用户的需求。
一.用例图概述
1.组成部分:执行者、用例、执行者与用例之间的关系
【执行者】使用系统的人或其他系统,可以是一个人、一个系统,甚至可以是一个软件实体,如:定时器。
【用例】描述的是用户可见的需求,一个具体的用户目标。由执行者执行。
【两者间关系】表示了一个执行者和一个用例之间的关系。
2.图符
3.关系
主要用的三种关系:包含、泛化和扩展。
【包含关系】
● 含义 :使用包含用例来封装一组跨越多个用例的相似动作,以便多个基础用例复用。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。
● 表示 :实箭头加<include>
● 举例 :机房收费系统中,管理员在结账时有多个操作,其中包含注册学生信息、充值和退卡等。
●样图 :
【扩展关系】
● 含义 :扩展用例为基础用例添加新的行为。扩展用例可以访问基础用例的属性,因此它能根据基础用例中扩展点的当前状态来判断是否执行自己。但是扩展用例
对基础用例不可见。 对于一个扩展用例,可以在基础用例上有几个扩展点。
● 表示 :实箭头加<extend>
● 举例 :机房收费系统中,有好几项查询结果都需要导出为Excel表,其中各项查询就属于基础用例,而导出Excel表就属于扩展用例。对于查询而言,是否导出都
不受影响。
● 样图 :
【泛化关系】
● 含义 :子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。也就是通常说的继承。
● 表示 : 空三角实箭头
● 举例 :机房收费系统中,最明显的继承关系就是三个不同级别的用户。其中,一般用户权限最低,管理员权限最高。
● 样图 :
二.关系比较
其实,用例图相对来说,还是比较简单的。关键在于关系的选用。下面,就将三者做个比较。
首先,三者的侧重点是不同的。
泛化侧重表示子用例间的互斥性; 包含侧重表示被包含用例对Actor提供服务的间接性;扩展侧重表示扩展用例的触发不定性;
其次,在一个系统中,有些操作是肯定发生的,有些操作是未必发生的。
泛化和包含用例就属于肯定发生的用例,而扩展用例属于未必发生用例。
最后,可能在关系的选用上,每个人的理解不同,也会造成一定的偏差,所以,也不需要特别死板而固定各种用例之间的关系,自己思考就好。
三.机房收费系统用例图
【管理员】
【操作员】
【一般用户】
四.学习心得
这是UMl中的第一种图的完工,花了很长的时间,刚开始必须对用例图做一个进一步的详细了解,这样后面才有可能达到水到渠成的那一步。通过自己的实践,对UML画图工具又熟悉了,对用例图也熟悉了,对机房收费系统的需求也熟悉了。总之,实践才是王道。