1、概念
用例图是描述用例、参与者以及它们之间关系的图。
用例图是从用户的角度来描述对信息系统的需求,分析产品的功能和行为。
用例图定义和描述了系统的外部可见行为,是分析、设计直至组装测试的重要依据。
用例图由如下几个概念组成:
参与者actor:角色,系统的用户;
系统边界system scope:确定系统的范围,边界是一个方框,用例在边界内,参与者在边界外;
用例use case:系统提供的服务;
关联association:参与者与用例间的关系。
2、什么是参与者?
表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示。
参与者是指在系统之外,但与系统直接交互的对象,即actor,也叫执行者、活动者。
参与者用人形符号表示,在人形符号下面标出参与者的角色名。参与者不止是人员,也有可能是信息系统、设备。
3、什么是用例?
用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示。
用例是用户期望系统具备的功能,每一个用例说明一个系统提供给它的使用者的一种服务或功能。
用例的目标是要定义系统的一个行为,但并不显示系统的内部结构。
用例名一般为动宾短语,符号是椭圆加用例名(Visio中用例名写在椭圆内)。
4、如何寻找和确定用例?
参与者需要从系统中获取哪种功能?
参与者是否需要读取、产生、删除、修改或存储系统中的某种信息?
系统的状态改变时,是否通知参与者?
是否存在影响系统的外部事件?
系统需要什么样的输入与输出?
邮件用例
5、用例描述
用例图没有描述系统行为的细节,所以需要以书面文档的形式对用例进行描述。至少包括:
名称:与用例图中的名称保持一致;
标识符:用例的代码或编号;
基本操作流程:描述各项工作都正常进行时用例的工作方式;
可选操作流程:很少使用、异常情况、发出错误的情况。
另外用例描述还能包括:用例概述、范围、参与者、前置条件、后置条件、子事件流、规则与约束等。
6、用例图中的各种关系
用例图中涉及的关系有:关联、泛化、包含、扩展。
如下表所示:
a)参与者与用例间的关联关系:参与者与用例之间的通信,也成为关联或通信关系。
b)用例与用例之间的关系:包含关系(include)、扩展关系(extend)、泛化关系。
a. 关联(Association)
表示参与者与用例之间的通信,任何一方都可发送或接受消息。
【箭头指向】:指向消息接收方
b. 泛化(Inheritance)
就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。
【箭头指向】:指向父用例
c. 包含(Include)
包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。
【表示符号】:《include》
【箭头指向】:指向分解出来的功能用例
d. 扩展(Extend)
扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。
用一个用例(可选)扩展另一个用例(基本例)的功能,将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。
【表示符号】:《extend》
【箭头指向】:指向基础用例
e. 依赖(Dependency)
以上4种关系,是UML定义的标准关系。但VS2010的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。
【箭头指向】:指向被依赖项
包含(include)、扩展(extend)、泛化(Inheritance)的区别:
- 条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;
- 直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。
- 对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。
- 对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;
实际应用中,include和inherit关系区别不那么严格,有时相互通用;而extend则是在特定条件下对一般用例的拓展 。
7、一个用例图示例:
参考文章:
https://www.jianshu.com/p/3cde67aed8e9
https://www.jianshu.com/p/74e2e5253531