【StarUML】用例图
用例图是在项目初期确认需求的时候,需要明确各个参与者之间的关系以及对应的功能,它可视化地展示了整个系统的功能以及功能之间、功能与参与者之间的关系。
1、元素
1.1 角色(actor)
角色不一定是人,可以是一个程序、组织或者外部系统。
1.2 用例(use case)
这个名词有点难以理解,在公司里,测试用例说的是每个测试项目,而在这里的意思是指功能。
1.3 子系统(subsystem)
它代表着一个系统、模块的集合,在子系统里有自己的功能
1.4 关系
关系是连接用例与用例之间、用例与角色之间的连接线,常用的分为以下5种
a、关联(association)
含义:角色与用例之间的联系、交互等
连接对象:角色与用例之间
箭头指向:指向消息接收方,对于角色来说,如果发出指令给用例,那么箭头指向用例;如果是接受用例执行的结果和数据,那么箭头指向自己。
b、泛化(Inheritance)
含义:跟面向对象编程里的意义类似,具体用例继承于抽象用例,子角色继承于父角色
连接对象:用例之间或者角色之间
箭头指向:子用例指向父用例,子角色指向父角色
c、包含(include)
含义:将一个复杂的用例分解成多个较小的用例或者步骤。
连接对象:用例之间
箭头指向:父用例指向子用例
d、依赖(dependency)
含义:用例之间的依赖关系
连接对象:用例之间
箭头指向:依赖方指向被依赖方
e、扩展(extend)
含义:用例的延伸,就相当于给用例增加了一个附加功能
连接对象:用例之间
指头指向:指向被扩展方
2、重点
包含、扩展、泛化这三点有时候很难区分
条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是由条件的;
直接性:泛化中的子用例和extend中的延伸用例,是可以为参与者提供直接服务的,但include就不能提供直接服务,只能提供间接服务;
对扩展而言:延伸的用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容;
而对于泛化而言:子用例包含基础用例的所有内容及其和其他用例或者参与者之间的关系。