定义:用例图是UML用例建模的一种,也是UML建模的基础,主要用于描述用户与系统或者系统内部的功能需求与行为。灵活的运用用例图,能够让描述的需求或者行为清晰的表达其该有的含义。
用例图的组成分别为:参与者(actor)、用例(use case)、系统边界、箭头。
用例之间的关系:
参与者、用例、箭头的关系:
上图表示的是参与者触发了用例,而箭头部分,无论是一条直线还是带有箭头的直线,其包含的意义都是一样的,代表的参与者触发或者调用用例。
用例与用例之间的关系:
扩展关系(extend):
上面用例描述的是:管理员可以查看网站访客报表,而在查看报表的同时,管理员也可以把报表打印出来查看。
扩展的定义:扩展关系是从扩展用例到基本用例的关系,它说明为扩展用例定义的行为如何插入到为基本用例定义的行为中。它是以隐含形式插入的,也就是说,扩展用例并不在基本用例中显示。
下面几种情况可以用使用扩展:
1、当表明用例的某一部分是可选的系统行为;
2、当表明只在特定条件下才执行的分支流;
3、.当表明可能有一组行为段,其中的一个或多个段可以在基本用例中的扩展点处插入。所插入的行为段和插入的顺序取决于在执行基本用例时与主角进行的交互。
例如:
学生去图书馆还书,如果学生所借的书遗失的话,那么需要赔偿。遗失赔偿用例是在一种特殊的情况下才会被执行的分流。
包含关系(include):
上图用例所描述的是:宾馆前台客服拥有管理宾馆房间的能力,而其中包含了订房和退房两个权限,而退房又可以选择续房的方式。
包含的定义:用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为做为自身行为的一部分,这被称作包含关系。
泛化关系:
泛化的定义:用例可以被特别列举为一个或多个子用例,这被称做用例泛化。当父用例能够被使用时,任何子用例也可以被使用。
上图用例所描述的是一个简化了的论坛角色权限用例图。表示的是游客可以浏览浏览帖子;会员可以管理自己的帖子(发表新帖、删除帖子、修改帖子);管理员可以整个论坛帖子。也可以管理论坛会员(添加会员、删除会员、查看会员)。而同时呢,会员具有游客的功能权限,而管理员又拥有会员的权限。这就相当于会员继承了游客的功能,而管理员又继承了会员的功能。
再举个简单一点的例子:
上图所描述的用例是,订票时电话订票、网上订票和人工订票的抽象。
以上内容为用例图经常用到的一些基本关系,下面举一个论坛的用例图,进一步加深映像。
用例除了用用例图表示之外,还可以用用例表来表示。用例表并不属于UML的规范中,其作用是能更详细的阐述一个用力的行为,但是在直观方面就不如用例图来的直接。
上图是用例表的基本格式。其中,可选流程和异常流程可以是条也可以是多条,看程序情况而定。
用例表缩进原则
基本流程,可选流程,异常流程编写格式根据是活动者的动作还是系统的动作进行“缩进”,原则如下:
1、以阿拉伯数字编号;
2、活动者的操作顶头写;
3、系统的操作空两格写。
举例:
用例图表示员工订餐系统:
用例表分析员工的订餐活动:
个人觉得采用用例表来替代协作图来表述功能需求,效果会好很多,不过如果对于需求不清晰或者经验不是很丰富的情况下,还是用协作图好。