UML 用例图以及UML的八种关系

2023-05-16

首先,一张总体的知识脉络导图献上: 

 

一、什么是用例图?
用例图描述了一组用例、参与者以及它们之间的关系。

使用阶段:软件需求分析

使用者:软件分析人员、软件开发人员

用例模型:表明开发者和用户对需求规格达成的某种共识。

用例模型:把系统看成黑盒子,外部,不考虑功能怎么实现,只考虑有什么功能。

用例图:用来描述用户的需求。从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。
 

二、用例图(Use Case Diagram)的内容:
1.用例图的基本的元素:用例(Use Case)、角色、关系
用例:系统的功能的描述

角色:功能执行者

关系:依赖关系,泛化关系,关联关系、拓展关系、包含关系,以及复用关系

(1)用例(Use Case):系统的功能的描述
什么是Use Case?

        Use Case是对系统功能的描述。不过一个Use Case描述的是整个系统功能的一部分,这一部分一定要是在逻辑上相对完整的功能流程。

用例的名称:需要反映出来用例的功能

用例图的图符:椭圆形

(2)角色/参与者(Actor):功能执行者
什么是Actor?

       Actor是系统外部的一个实体(可以是任何的事物或人),它以某种方式参与了用例的执行过程。

角色:可以触发某种事件,可以进行输入信息,还可以从系统被动的接受信息。所谓角色不一定是人,还可以是某些事或物。

角色:

哪些是直接使用系统的人,哪些维护人员
系统的外设(打印机等)
需要和这个系统相连的系统
图形表示:

执行者:一个小人(执行者可以是人或物)

(3)用例图中涉及的关系:泛化关系,关联关系、拓展关系、包含关系

 

关系:用例与用例之间,执行者与执行者之间,执行者与用例之间。

关系含义及图符表示:

a.关联关系(Association)(有关联的):

关联关系 表示参与者与用例之间的通信,任何一方都可发送或接受消息。

符号表示:带箭头的实线,箭头指向消息接收方

 

管理员与查询用户这个用例之间是关联关系,查询用户又有两个子用例:查询教师、查询学生

b. 泛化关系(Inheritance)(继承关系):
泛化关系 就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。

符号表示:直线+空心三角,指向父用例

泛化关系可以是用例之间的,可以是角色之间的。可以做到代码复用。

c. 包含关系(Include)

包含关系  用来把一个较复杂用例所表示的功能分解成较小的步骤。

符号表示:带箭头的虚线:指向分解出来的功能用例

 

子用例的方法可以被父用例复用。

d.拓展关系(extend):
扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。扩展用例并不在基本用例中显示。

符号表示:带箭头的虚线:指向基础用例

扩展用例在一定条件下才会用到,正常的基本流不会用到扩展用例。

下面几种情况可以用使用扩展:

1、当表明用例的某一部分是可选的系统行为;

2、当表明只在特定条件下才执行的分支流; 

3、.当表明可能有一组行为段,其中的一个或多个段可以在基本用例中的扩展点处插入。所插入的行为段和插入的顺序取决于在执行基本用例时与主角进行的交互。

例如:学生去图书馆还书,如果学生所借的书遗失的话,那么需要赔偿。遗失赔偿用例是在一种特殊的情况下才会被执行的分流。

e. 依赖(Dependency)

  以上4种关系,是UML定义的标准关系。但VS2010的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。

符号表示:带箭头的虚线:箭头指向被依赖项

 

f. 复用关系:重复的部分抽象处理,复用。(了解)

例子:图书借阅用例图:

 

 

三、用例图的属性
1.事件流:用例在执行时,执行者和系统之间的交互关系。分为基本流和备选流。
  基本流:是经过用例最简单的路径,即正确完成一个用例的基本流程,这条流程无任何差错,程序直接从开始到结束。
  备选流:即在用例执行中出现的各种错误情况,比如在登录界面什么都不输入或者密码输入错误就属于备选流,而基本流就是账号和密码都输入正确,并顺利进入主界面。备选流也有可能导致用例结束。

2.前置条件:用例执行的前提条件,说明在什么条件下可以开始执行一个事件流。

3.后置条件:用例执行结束时系统的状态。

4.特殊要求

5.拓展点

6.问题说明

四、用例的粒度和范围:

用例过少太粗略(复用不好),用例过多太复杂。

  • 概述级(粗浅的)
  • 用户目标级(逐步细化)
  • 子功能级

 五、机房收费系统的用例图:

 

包含关系和拓展关系都是抽象出来一个公共用例。例如:抽象出来一个“查询”的公共用例,包含各种查询功能。

拓展关系:如查询出来信息才导出execl 表(有条件的发生)

泛化关系:父用例和子用例(有类似继承和多态的关系)如:图中的一般用户、操作员和管理员都是用户这个父用例的子用例。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UML 用例图以及UML的八种关系 的相关文章

  • Camera2 二开关相机

    1 创建相机项目 正如前所说的 xff0c 我们会开发一个具有完整相机功能的应用程序 xff0c 所以第一步要做的就是创建一个相机项目 xff0c 这里我用 AS 创建了一个叫 Camera2Sample 的项目 xff0c 并且有一个 A
  • Camera2 三预览

    1 获取预览尺寸 CameraCharacteristics 是一个只读的相机信息提供者 xff0c 其内部携带大量的相机信息 xff0c 包括代表相机朝向的 LENS FACING xff1b 判断闪光灯是否可用的 FLASH INFO
  • Camera2 四拍照

    1 理解 Capture 工作流程 在正式介绍如何拍照之前 xff0c 我们有必要深入理解几种不同模式的 Capture 的工作流程 xff0c 只要理解它们的工作流程就很容易掌握各种拍照模式的实现原理 xff0c 在第一章 Camera2
  • 解决从PDF复制文字后乱码问题

    背景 需要从PDF复制文字出来做笔记 xff0c 可是谁知道PDF通过adobe打开后复制出来后是乱码 xff0c 如下图所示 xff1a 解决 尝试过安装字体 xff0c 可惜没卵用 方法1 CAJViewer打开 用该软件打开后复制 x
  • Android Studio不能启动模拟器原因探秘 The emulator process for AVD xxx has terminated

    文章背景 在Android Studio中创建模拟器后 xff0c 启动模拟器时弹出提示 The emulator process for AVD Pixel 2 API 31 has terminated xff0c 但是并没有显示具体错
  • AndroidStudio-快捷键-格式化代码

    Windows Ctrl 43 Alt 43 L Ctrl 43 Shift 43 F 无效 亲测 和qq热键冲突 我的解决方式是把qq除捕获屏幕外的热键全部设置为无 Mac OPTION 43 CMD 43 L
  • 安装APK时报错:Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]

    使用AS自动运行时会在app build outputs apk debug文件夹下自动生成测试APK xff1a app debug apk xff0c 用命令adb install app debug apk时报错 xff1a Fail
  • 计算机网络-划分子网 四大类必会题型

    必记知识点 A类 xff1a 0 126 xff0c 默认子网掩码 xff1a 255 0 0 0 B类 xff1a 128 191 xff0c 默认子网掩码 xff1a 255 255 0 0 C类 xff1a 192 223 xff0c
  • C语言-解释复杂声明

    基本术语 xff1a 声明符 xff1a int a 就是一个声明符 标识符 定义的变量名字 xff0c 如 xff1a int a xff0c 那么a就是一个标识符 1 两个原则 xff1a 始终从内往外读声明符 xff0c 括号优先级高
  • Android EditText 不自动获取焦点

    在Activity上面显示一个EditText xff0c 进入该页面时想阻止这个EditText自动获取焦点而自动调起键盘 思路如下 xff1a 可以采取让父级控件来获取焦点就可以了 例如说在这个EditText外面包一个LinearLa
  • Wireshark中无法显示网卡列表的解决方法

    1 问题描述 打开Wireshark时 xff0c 都会有一个网卡列表 xff0c 在该列表中显示了电脑的所有网卡 但是 xff0c 有时打开Wireshark时 xff0c 该网卡列表不显示 xff0c 如图1所示 图1 不显示网卡列表
  • Android事件分发与事件处理源码分析

    一 前言 Android中事件分发与事件处理是一个老生常谈的问题了 xff0c 自己在网上也看过很多文章 xff0c 但是大部分人都只是抛出一些结论或是一些流程图或者干脆就是一些运行demo的截图等 xff0c 对于这些结论和流程图是怎么来
  • 解决小米pad USB安装apk时AS报错:INSTALL_FAILED_USER_RESTRICTED

    设置 更多设置 开发者选项 gt 取消启用MIUI优化 用USB接口 xff0c 选择传输文件 xff08 MTP xff09
  • git 通过 comment 关键字查找 commit

    git log grep 61 word 比如 xff1a git log grep 61 同步
  • git合并多个 Commit

    在使用 Git 作为版本控制的时候 xff0c 我们可能会由于各种各样的原因提交了许多临时的 commit xff0c 而这些 commit 拼接起来才是完整的任务 那么我们为了避免太多的 commit 而造成版本控制的混乱 xff0c 通
  • git查看某次提交的文件列表

    Git操作常用 xff1a 一 查看某次提交的文件列表 首先使用git log查看历史提交记录 xff1a 复制你想要查看记录的某个提交代号9ddc9dca00b 使用命令git show 9ddc9dca00b stat查看详细文件列表
  • Android SoundPool插入耳机后依然有外放声音

    使用soundPool播放声音 xff0c 当手机已经接通耳机时 xff0c 还会有外放声音 xff0c 是因为在初始化soundpool是用的流类型 xff08 streamType xff09 导致的 xff0c 有些流类型系统是一定会
  • 一文搞懂Android JetPack组件原理之Lifecycle、LiveData、ViewModel与源码分析技巧

    Lifecycle LiveData和ViewModel作为AAC架构的核心 xff0c 常常被用在Android业务架构中 在京东商城Android应用中 xff0c 为了事件传递等个性化需求 xff0c 比如ViewModel间通信 V
  • Linux下安装npm

    1 root 登录linux 2 没有目录就自己创建一个 cd usr local node 3 下载安装包 wget https npm taobao org mirrors node v4 4 7 node v4 4 7 linux x
  • AudioService之音频输出通道切换

    前言 xff1a 音频输出的方式有很多种 xff0c 外放即扬声器 xff08 Speaker xff09 听筒 xff08 Telephone Receiver xff09 有线耳机 xff08 WiredHeadset xff09 蓝牙

随机推荐

  • Android音频——音量调节

    一 音量相关概念 1 相关术语解释 track volume 单个App设置音量时设置的是这个 xff0c 它只影响本App的音量 stream volume xff1a 设置某一stream的音量 xff0c Android系统中支持10
  • 电话状态权限及IMEI获取流程源码分析

    IMEI是设备唯一性的一个重要指标 xff0c 这篇文章对IMEI获取做一些分析 xff0c 以达到以下两个目的 xff1a 1 梳理Android源码中获取IMEI流程 2 理解获取IMEI时 xff0c 源码中权限调用流程 备注 xff
  • Android Handler深入学习(源码分析)

    目录 xff1a 1 背景 在分析源码之前 xff0c 先来了解一下Message MessageQueue Looper这几个对象 1 1 Message 消息 定义 xff1a 是线程间通讯的数据单元 xff0c 包含着描述信息及任意数
  • git 合并两个不同仓库

    在日常开发过程中 xff0c 可能会遇到需要将两个不同的仓库合并成到一个仓库的场景 这里介绍一下怎么将两个不同的仓库合并到一个仓库中 合并两个不同仓库 思路 xff1a 添加两个远程仓库 xff0c 将两个代码作为两个分支 xff0c 然后
  • Android-Handler源码解析-Message

    成员变量 标识Message public int what 存储简单数据 xff0c 如果存储复杂的数据使用setData 方法 public int arg1 public int arg2 发送给接收者的任意对象 public Obj
  • Git中submodule的使用

    背景 面对比较复杂的项目 xff0c 我们有可能会将代码根据功能拆解成不同的子模块 主项目对子模块有依赖关系 xff0c 却又并不关心子模块的内部开发流程细节 这种情况下 xff0c 通常不会把所有源码都放在同一个 Git 仓库中 有一种比
  • Android-Handler源码解析-Looper

    成员变量 Log的TAG private static final String TAG 61 34 Looper 34 线程本地变量 xff0c 保证了每个线程仅有唯一的Looper对象 64 UnsupportedAppUsage st
  • 5步删除 git submodule

    1 删除submodule缓存 需要先暂存 gitmodules 文件 否则会报错 fatal please stage your changes to gitmodules or stash them to proceed 1 2 git
  • java.lang.NoSuchMethodError: java.lang.reflect.Field.trySetAccessible()Z

    把jdk 设置成11 就可以了
  • ES6 模块

    概述 在 ES6 前 xff0c 实现模块化使用的是 RequireJS 或者 seaJS xff08 分别是基于 AMD 规范的模块化库 xff0c 和基于 CMD 规范的模块化库 xff09 ES6 引入了模块化 xff0c 其设计思想
  • jdk 8 、9 10 11 12 13 14和 jdk 1.8 什么关系?

    jdk 8 就是 jdk 1 8 jdk9 就是 jdk 1 9
  • android studio设置jdk版本项目设置和全局设置

    android studio设置jdk版本项目设置和全局设置 方法1 xff1a 修改项目的gradle构建jdk xff08 建议在使用别人的单个项目时使用 xff09 打开项目设置 打开jdk设置 选择jdk11 注意要apply保存然
  • Gradle:执行命令时指定 JDK 版本

    应用场景 在命令行执行 Gradle 时使用的 Gradle 版本为系统环境变量中指定的 Gradle 版本 xff0c 使用的 JDK 为系统环境变量 JAVA HOME 指定的 JDK 来自 Gradle 官网的说明 xff1a JAV
  • Java基础-方法区以及static的内存分配图

    什么是方法区 xff1a 方法区是系统分配的一个内存逻辑区域 xff0c 是JVM在装载类文件时 xff0c 用于存储类型信息的 类的描述信息 方法区存放的信息包括 xff1a 类的基本信息 xff1a 1 每个类的全限定名 2 每个类的直
  • AudioManager 蓝牙sco连接相关接口

    蓝牙耳机连接之后 xff0c 发现音频发声的还是终端 xff0c 并没有转换到蓝牙耳机发声 网上搜索相关资料 xff0c 发现是蓝牙耳机需要建立链路来播放音频 简单介绍下蓝牙耳机的两种链路 xff1a A2DP xff08 异步链路 xff
  • Android 音频源码分析——AudioTrack设备选择

    基于Andorid9 0源码 以AudioTrack为例 xff0c 梳理下输出设备选择流程 音频设备选择的影响因素 xff1a AudioAttributes 声音流类型 setForceUse 设置 setPreferredDevice
  • 音频输出设备的选择

    场景 xff1a 使用AudioTrack播放一段音频 xff0c streamtype是AUDIO STREAM MUSIC xff1b 跟踪音频输出设备选择的流程 xff0c 代码会走到这里 xff1a 1 frameworks av
  • Engine::getDeviceForStrategyInt()解析

    audio devices t是int类型 audio devices t Engine getDeviceForStrategyInt routing strategy strategy DeviceVector availableOut
  • AudioService之音频输出通道切换

    前言 xff1a 音频输出的方式有很多种 xff0c 外放即扬声器 xff08 Speaker xff09 听筒 xff08 Telephone Receiver xff09 有线耳机 xff08 WiredHeadset xff09 蓝牙
  • UML 用例图以及UML的八种关系

    首先 xff0c 一张总体的知识脉络导图献上 xff1a 一 什么是用例图 xff1f 用例图描述了一组用例 参与者以及它们之间的关系 使用阶段 xff1a 软件需求分析 使用者 xff1a 软件分析人员 软件开发人员 用例模型 xff1a