当前位置: 首页 > article >正文

【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:注释,对用例图中的元素做进一步的说明。

需要注意的是,用例图是用于熟悉业务和应用功能的,我们在画用例图时需要找到一个“足够高”的视角去看整个系统,画出的是系统和应用的“轮廓”,而不应该拘泥与系统流程的细节。 对于系统中的实现世界来将,可以通过更多不同视角的图形来进行描述,例如:类图、活动图、状态图、时序图等等。

最后,以一张包含了上述所有元素的用例图结束:
在这里插入图片描述


http://www.kler.cn/a/6704.html

相关文章:

  • 用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转(跨文件跳转)这些功能
  • [数组二分查找] 0209. 长度最小的子数组
  • apipost下载安装教程、脚本详细使用教程
  • 【多状态dp】买卖股票的最佳时机III
  • 【Pythonr入门第二讲】你好,世界
  • 基于Java Springboot外卖平台系统
  • CUDA编程(二):核函数与线程层级
  • 【AUTOSAR】【Lin通信】LinIf
  • 【OpenCV-Python】cvui 之 复选框
  • 浪潮信息:2025年,实现数据中心风冷、液冷同价
  • vue中 使用假的进度条数字插件:fake-progress
  • QT完善登录界面Ⅱ
  • 构建一个简单的网站,包括用户注册、登录功能
  • 转行大数据未来发展怎么样?可行么
  • OSPF的选路原则,重发布与RIP
  • 动态权限申请三方库
  • ethers不同版本返回余额的整数值类型,以及对大整数值的处理差异性的比较
  • pathlinux
  • 热门商业模式——分享购,整合流量与资源,实现生态布局
  • 【Redis】缓存一致性
  • 【Java笔试强训】day16编程题
  • 函数调用时栈空间的变化
  • 三次迭代终放“大招”,Themis Pro版即将问世
  • 第09讲:Spring Data Redis(RedisTemplate)
  • pdf怎么转换成jpg图片?快来收藏这两种方法
  • 【图论刷题-6】力扣 797. 所有可能的路径