本文共 1166 字,大约阅读时间需要 3 分钟。
用例图是指由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的视图。用自己的话就是,外部参与者能够看到系统以及子系统的系统的功能的模型图。
用例图由参与者、参与者(Actor)、用例(Use Case)、系统边界、关系组成。
参与者表示系统或者系统交互者中所扮演的角色,这个角色可是人,也可以是事物。但是这里需要注意的是描述的是事物或者人所表示的角色,而不是人或者物的本身。例如:小明和图书馆的关系,他既可以是管理者,来管理图书馆,也可以是借阅者,他扮演的是两种角色。因此在话用例图时,参与者要写借阅者或者管理者,不能写小明。其命名时一般都是名词。
用例就是参与者想要系统实现的功能。其命名一般都是动词。
表示参与者和系统之间的关联关系。一般都是有参与者指向用例。
在用例图中,关系包括三种:关联、包含、泛化、扩展。
——关联关系只是用在参与者和用例之间。
——泛化可以用在参与者和用例之间。
——包含和扩展只会用在用例之间。
泛化就就如同继承,或者说就是继承的另一种说法。例如,机房收费系统中,有一般用户、操作员、管理员。这样我们经过总结,就知道三者之间有共同的特征——用户。通过泛化,来描述参与者之间的共同行为。
用例与用例之间也存在着泛化关系,通常用于表示同一功能下(父用例)的具体实现(各个子用例)。例如机房收费系统中,查询功能和子功能之间的泛化关系。
包含关系,就是前面的基本用例必须拥有被包含的用例,如果没有了被包含的用例,这个基本用例的功能是不完整的,也即使说,(被包含用例)非要不可。例如机房收费系统中的操作员,基本用例(编辑信息)与被包含用例(添加学生信息,修改学生信息,删除学生信息)之间的关系。
经过百度查询:包含关系的划分有两个好处:一是被包含用例被抽取出来,基本用例得以简化;二是可以抽象出公共事件流,实现代码复用。
扩展用例实在基本用例的基础上扩展的,扩展用例相对基本用例是独立的,也就是说,可有可无。例如,系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导入、打印和查询相对独立,而且为查询添加了新行为。
共同点:
扩展用例与包含用例都是基用例的一部分
基本用例不执行,扩展用例与包含用例都不会执行
扩展用例可以扩展多个基本用例,包含用例可以被多个基本用例包含
区别:
扩展关系中基本用例的基本流执行时,扩展用例不一定执行,即可有可无。
包含关系中基本用例的基本流执行时,包含用例一定会执行。即缺一不可。
参与者一般在系统边界外,用例一般在系统边界内。