【UML建模】用例图(Use Case Diagram)
文章目录
- 1.概述
- 2.用例图的组成
- 2.1.基本组成
- 2.2.用例之间的关系
- 2.2.1.包含关系
- 2.2.2.拓展关系
- 2.2.3.泛化关系
- 2.2.4.综合图形
- 2.3.用例说明
- 2.3.1.扩展点
- 2.3.2.注释
- 3.总结
1.概述
用例图(Use Case Diagram)是UML建模中最重要并且最常用的一种图形,它有着足够良好的抽象,用几组简单的图形就能够描述出应用程序的功能需求,以及应用程序与用户或者与其他应用程序之间的交互关系。
因此,用例图常常会在跨部门、跨岗位的合作中出现,作为演示和说明文档的基石,简单的说就是在一个项目中,产品、研发、测试、运维等岗位角色都能看懂并了解业务大致是如何展开的。
2.用例图的组成
2.1.基本组成
用例图主要由3个部分组成,如下图所示:
Actor
:执行者(参与者)指的是在某个业务中扮演的角色,可以是具体的用户或者具体的系统Use Case
:用例表示一个或一组系统功能Communication Link
:通信链路用于连接执行者和用例,被连接的两者有通信关系
以一个CRM系统为例,可以简单的画出市场人员、销售人员与线索的关系:
为了更方便的看出当前用例图是在什么系统中运行的,我们往往会在用例的外层包上一层容器,称之为系统边界(Boundary of system)
。系统边界是矩形框,在矩形框的上面会写出这是属于哪一个系统,我们对上面的图形做一点点修改:
在更大型的系统中,这里的矩形框可能表达的就是一个模块、一个服务而不是整个系统,总之,就是系列功能用例组成的一个集合体。
2.2.用例之间的关系
我们想要完整的运行一个业务,往往是需要执行由多个功能组成的一条执行链路,在用例图中的体现就是多个用例之间会有一定的关系
。
用例图中的关系一共有三种,分别是:包含(Include)
、拓展(Extend)
、泛化(Generalization)
2.2.1.包含关系
所谓的包含关系,是指的某一个用例 (base
) 使用到了另一个用例 (child
) 中的功能,它们之间有了很强的依赖关系,会在整个业务流程中先后运行。
包含关系通过虚线 + 箭头来表示,其中箭头由base
指向child
,在虚线上还会标注<<include>>
来表示这个是一个包含关系。
例如在上面的图中,我们对于录入线索还有一个校验需求,只有参数校验通过的线索才能够入库,这个校验功能是整个业务流程的一部分,每次录入线索都会执行,所以可以采用包含关系:
2.2.2.拓展关系
拓展关系与包含关系很相似,它表示的是某个用例(child
)是另外一个用例(base
)的一部分,它与包含关系的区别在于拓展关系并不要求child
在业务流程中一定会运行,它属于是一种功能增强,在满足一定条件的情况下才会执行。
拓展关系也是通过虚线 + 箭头来表示,但是箭头方向是由child
执行base
,在虚线上通过<<extend>>
来标识这是一个拓展关系。
在上图中我们已经做了参数校验,而参数校验失败的情况的,我们会有一个提示功能,告知用户哪个参数校验出现了异常,我们对上图做一点点修改:
注:和代码中的extends不一样,用例图中 extend
并不是继承关系,在用例图中的继承关系是通过泛化
来表示
2.2.3.泛化关系
也叫“继承关系”,泛化关系连接起来的两个用例就是传统意义上的“父子关系”,子用例在父用例的基础上实现了功能拓展。
泛化关系是由实线 + 空心三角箭头来表示的,箭头方法由child
指向parent
。
还是上面线索的例子,录入线索可以通过页面表单录入,也可以通过Excel导入,则可以表示为:
2.2.4.综合图形
将上面的包含、拓展、泛化关系综合起来,可以得到一个较为丰满的图形,如下图:
2.3.用例说明
除了上面图示中的基本组成以外,有时候我们还会在用例图上加上一定的说明,说明可以让用例图信息更加丰满,说明信息有两种类型:扩展点(Extension points)
与 注释(Note)
。
2.3.1.扩展点
扩展点是用于拓展关系中,是对拓展关系的补充,即:在什么样的情况下,才会触发拓展用例。扩展点一般是写在base
用例上的,通过一条横向将用例的椭圆分割为两部分,上半部分是功能说明,下半部分是拓展点说明。
例如上参数校验的拓展用例,就可以修改成下图的样子:
2.3.2.注释
注释很好理解,其实就是一段说明文本,在这个文本上可以输入你想要的任何说明。注释一般是用一个类似于纸张的图形+虚线来组成,虚线连接的是任何一个你想说明的元素,可以是执行者、用例、关系等。
例如对跟进线索这个用例做一个简单的说明。
3.总结
用例图是uml中最基础、最重要、最常用的图形,它用于描述业务需求、应用功能,是后续流程设计、技术设计的基石,也是不同岗位之间沟通的桥梁。
一个完整的用例图由以下几个元素组成:
Actor
:执行者(参与者)指的是在某个业务中扮演的角色,可以是具体的用户或者具体的系统Use Case
:用例表示一个或一组系统功能Communication Link
:通信链路用于连接执行者和用例,被连接的两者有通信关系RelationShip
:用例之间的关系,用于将多个功能组织在一起,形成一个完整的业务流程Include
:包含关系,child
用例是base
用例中必须运行的一部分。Extend
:拓展关系,child
用例是base
的一部分,但是在特性的条件下才会运行。Generalization
:泛化(继承)关系,child
用例是parent
用例的功能拓展
Extension points
:拓展点,一般用于描述extend
关系中的child
用例的触发条件Note
:注释,对用例图中的元素做进一步的说明。
需要注意的是,用例图是用于熟悉业务和应用功能的,我们在画用例图时需要找到一个“足够高”的视角去看整个系统,画出的是系统和应用的“轮廓”,而不应该拘泥与系统流程的细节。 对于系统中的实现世界来将,可以通过更多不同视角的图形来进行描述,例如:类图、活动图、状态图、时序图等等。
最后,以一张包含了上述所有元素的用例图结束: