UML建模图文详解教程——用例图

news2025/1/15 23:36:19

版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl
  • 本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著

在这里插入图片描述

用例图概述

用例图(use case diagram)是表示一个系统中用例与参与者之间关系的图。它描述了系统中相关的用户和系统对不同用户提供的功能和服务。用例图是 UML 中对系统的动态方面建模的五种图之一(其他四种是活动图、状态机图、顺序图和通信图),它是对系统、子系统和类的行为进行建模的核心。

用例图中的主要元素包括参与者、用例以及元素之间的关系。

核心知识点

请务必熟悉并掌握以下核心知识点。

参与者间的泛化关系

对参与者建立泛化关系可将这些具有共同行为的一般角色抽象为父参与者。子参与者则可以继承父参与者的行为和含义并能拥有自己特有的行为和含义。

参与者间的泛化关系表示方法:一条实线 + 空心箭头。其中,空心箭头指向父参与者。

在这里插入图片描述

例如:付费会员拥有普通会员的权限也拥有一些普通会员没有权限的操作,因此二者之间可以建立泛化关系。

在这里插入图片描述

例如:客户这一参与者是抽象的,它有三个子参与者:直接客户、电话客户和网上客户,因此他们之间可以建立泛化关系。

在这里插入图片描述
类似地,用例间也有泛化关系。例如:评价教职工与评价教师、评价清洁工人也构成泛化关系。

在这里插入图片描述

用例间的包含关系

包含指的是一个用例(基用例)可以包含其他用例(包含用例)具有的行为,其中包含用中定义的行为将被插入基用例定义的行为中。

用例间的包含关系表示方法:一条虚线+实心箭头并附加上<< include >>;箭头从基用例指向包含用例。即谁包含了谁,那么箭头就从谁指向谁。

在这里插入图片描述

例如,在某个在线交易系统的用例图中用户创建订单的行为一定需要包括选择商品的行为序列,且创建订单的行为依赖于选择商品的结果。因此二者之间构成包含关系。

在这里插入图片描述

用例间的扩展关系

扩展指的是一个用例(扩展用例)对另一个用例(基用例)行为的增强。

用例间的扩展关系表示方法:一条虚线+实心箭头并附加上<< extend>>;箭头从扩展用例指向基用例。即谁扩展了谁,那么箭头就从谁指向谁。

在这里插入图片描述
例如,对于系统的“注册”用例而言,用户可以填写实名信息从而获得系统较高的信任等级。这就需要引人一个“检查实名信息”的用例。这一用例对于每个注册用例的实例而言不是必需的。而且,注册用例本身对于检查实名信息的存在是不知情的,即它不需要检查实名信息的结果就可以继续执行。因此二者之间构成扩展关系。

在这里插入图片描述

航空购票系统用例图

航空购票系统(Airline Ticketing System;简称ATS)是亚太航空公司推出的一款网上购票系统。其中,未登录的用户只能查询航班信息,已登录的用户还可以网上购买机票,查看行程,也可以退订机票。系统管理员可以安排系统中的航班信息。此外,该购票系统还与外部的一个信用评价系统有交互。当某用户一个月之内退订两次及以上的机票时需要降低该用户在信用评价系统中的信用等级当信用等级过低时不允许该用户再次购买机票。

创建项目

单击文件选择新建项目,图示如下:

在这里插入图片描述
填写文件名并选择存储位置,图示如下:
在这里插入图片描述
选择不选再单击确定,图示如下:
在这里插入图片描述
项目创建完毕,图示如下:

在这里插入图片描述

确定参与者

在了解完系统语境后,首先应该分析确定系统中的参与者。根据系统的背景说明,我们可以分析出需要订票的用户肯定要参与其中,并且用户根据是否已登录有不同的系统使用权限。负责安排航班信息的管理员和与系统产生交互的外部信用评价系统也应该属于系统的参与者。

通过以上分析可以得出,系统主要有三类参与者,分别是用户、管理员与信用评价系统。其中,用户包括游客与注册用户表示为参与者的泛化关系。由于用户一定属于二者其中之一故用户应该是一个抽象参与者。

请在项目中右键单击Model选择增加再单击新建增图,然后选择用例图;图示如下:

在这里插入图片描述
创建完毕,图示如下:

在这里插入图片描述

右键单击用例图选择添加图再选择UML Behavioral,图示如下:

在这里插入图片描述
创建完毕,图示如下:

在这里插入图片描述
点击左上角的箭头,打开工具箱;图示如下:

在这里插入图片描述
拖动工具箱至项目浏览器底部,图示如下:

在这里插入图片描述
左键单击Actor,鼠标挪动至绘图区,再单击左键;填写参与者名字;最后单击确定;图示如下:

在这里插入图片描述
第一个参与者绘制完毕,图示如下:

在这里插入图片描述
重复刚才的操作完成其它参与者即游客、注册用户、管理员、用户评价系统;图示如下:

在这里插入图片描述

利用Use Case Relationships表示游客与用户的泛化关系;图示如下:

在这里插入图片描述

类似地,表示注册用户与用户的泛化关系;图示如下:

在这里插入图片描述

确定用例

分析出系统中的参与者之后就可以通过分析每个参与者是如何使用系统确定系统中的用例。在本系统中游客可以注册系统和查询航班信息;注册用户可以登录系统、查询航班信息、购买机票、查看行程和退订机票;管理员可以登录系统和设定航班安排;信用评价系统可以修改和检查信用等级。需要注意的是,修改和检查信用等级的用例并非是由信用评价系统主动触发的,信用评价系统对这两个用例而言只是副参与者。

左键单击Use Case,鼠标挪动至绘图区,再单击左键;填写用例名称;最后单击确定;图示如下:

在这里插入图片描述

第一个用例绘制完毕,图示如下:
在这里插入图片描述

利用Use Case Relationships表示游客与注册的关联关系;图示如下:

在这里插入图片描述

选中关联关系在高级中选择改变方向再选择起始–>目标;图示如下:

在这里插入图片描述

类似地,绘制其它用例;图示如下:

在这里插入图片描述

确定用例之间的关系

在确定完所有用例之后,需要具体考虑各个用例的工作流程从而添加用例之间的依赖关系以此保证模型的高内聚与低耦合。对于机票预订系统,我们注意到“购买机票”用例在执行时需要先查询相关的航班信息然后再选择感兴趣的航班购票并且在购票前需要检查该用户的信用等级是否足够高。因此该用例与“查询航班”用例和“检查信用等级”用例之间可以分别建立包含关系。此外,在退订机票时,如果这是该用户本月第二次以上的退订,那么需要降低该用户的信用等级。由于这一关系是有条件的,所以二者构成扩展关系。

添加包含关系;图示如下:

在这里插入图片描述
添加扩展关系;图示如下:

在这里插入图片描述
至此,我们完成了项目的用例图;图示如下:

在这里插入图片描述

扩展实践练习

请完成图书管理系统的用例图,图示如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1239955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】链表中二级指针的应用

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 (注:为方便演示本篇使用的x86系统,因此指针的大小为4个字节) 目录 &#x1f4cc;形参的改变不影响实参! 1.调用函数更改整型时传值调用与传址调用的区别 &#x1f38f;传值…

【Pytorch】Visualization of Fature Maps(2)

学习参考来自 使用CNN在MNIST上实现简单的攻击样本https://github.com/wmn7/ML_Practice/blob/master/2019_06_03/CNN_MNIST%E5%8F%AF%E8%A7%86%E5%8C%96.ipynb 文章目录 在 MNIST 上实现简单的攻击样本1 训练一个数字分类网络2 控制输出的概率, 看输入是什么3 让正确的图片分…

表格制作软件排行榜,热门做表格的软件推荐

在数字化时代&#xff0c;表格不仅仅是企业管理和数据整理的重要工具&#xff0c;更是学术研究、项目规划以及日常生活中必不可少的一部分。为了更高效地进行表格制作&#xff0c;选择一款优秀的表格制作软件是至关重要的。在众多的软件中&#xff0c;我们特别推荐一款备受好评…

【电路笔记】-电流源

电流源 文章目录 电流源1、概述1.1 理想电流源1.2 实际电流源1.3 连接规则 2、依赖电流2.1 压控电流源2.2 电流控制电流源 3、总结 本文为前面文章 电压源的延续&#xff0c;我们将在本文介绍电流源。 与电压源的情况类似&#xff0c;我们将首先介绍理想电流源的概念&#xff…

基于springboot实现摄影跟拍预定管理系统【项目源码+论文说明】计算机毕业设计

基于springboot实现摄影跟拍预定管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要…

【Redis】持久化-RDBAOF混合持久化

文章目录 前置知识RDB&#xff08;定期备份&#xff09;触发机制流程说明RDB文件的处理RDB 的优缺点 AOF&#xff08;实时备份&#xff09;使用AOF命令写入AOF工作流程文件同步重写机制重写触发机制AOF进制重写流程 混合持久化启动时数据恢复 总结 前置知识 回顾MySQL MySQL的事…

UVM项目笔记——通过寄存器模型实现AHB接口的寄存器读写(内含源码)

目录 1.前言 2.DRIVER实现 2.1 AHB二级流水时序 2.2 “队列错位法”实现driver 2.3 driver代码 2.4 仿真log与波形 2.5 多级流水拓展方法 1.前言 UVM driver在接口协议的实现中起着非常重要的作用&#xff0c;因为它一端处理基于类的事务级sequence&#xff0c;另一端处…

Wagtail-基于Python Django的内容管理系统CMS如何实现公网访问

Wagtail-基于Python Django的内容管理系统CMS实现公网访问 文章目录 Wagtail-基于Python Django的内容管理系统CMS实现公网访问前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 前言 Wagtail是一个…

数字化转型过程中的RPA+X与RPA+B

当前&#xff0c;RPA已成为企业数字转型初始阶段里最受欢迎的自动化解决方案&#xff0c;越来越多的企业开始引入RPA来协助员工&#xff0c;开展各类业务场景的自动化应用。很多企业也都将RPA列为重要流程优化技术&#xff0c;不少公司甚至直接放弃了传统的IT自动化方案&#x…

晶振有哪几种?晶振旁边的两个电容起什么作用?

晶振可以分为普通晶振、温补晶振、压控晶振、恒温晶振、差分晶振。 普通晶振通常用作微处理器的时钟器件&#xff0c;主要应用于那些稳定度要求不要的设备中&#xff0c;例如电视机、微波炉。 温补晶振&#xff0c;在晶振内部采取了对晶体频率、温度特性进行补偿&#xff0c;已…

sap系统连接其它系统

本文来自博客园&#xff0c;作者&#xff1a;Lovemywx2&#xff0c;转载请注明原文链接&#xff1a;https://www.cnblogs.com/1187163927ch/p/8669859.html JAVA连接ORACLE数据库 1&#xff0c;首先需要在Oracle安装完成之后新建一个用户 --新建用户 create user chenh iden…

中国最常用的制作报表的软件有哪些?

​随着信息化时代的浪潮席卷而来&#xff0c;报表制作软件已经成为了企业管理中的得力助手。在中国的大地上&#xff0c;有许多优秀的报表制作软件&#xff0c;而本文将为您揭示五位佼佼者&#xff0c;其中更以VeryReport报表软件为首选。 编辑搜图 请点击输入图片描述&#x…

centos 安装k8s教程(一键安装k8s)

第一步 准备几台机器 第二步 K8s Manager 服务器中添加docker支持 安装教程请查看这个博客 docker 安装详细教程 点我 第三步安装 KuboardSpray 教程在这里 第四步 下载k8s资源包 第五步 安装k8s 点击安装后 显示如下&#xff1a;等待完成

MAX/MSP SDK学习07:list传递

实现自定义Obejct&#xff0c;要求将传入的一组数据100后传出。 #include "ext.h" #include "ext_obex.h" typedef struct _listTrans {t_object ob;void* outLet;t_atom* fArr;long listNum;} t_listTrans;void* listTrans_new(t_symbol* s, long arg…

【GUI】-- 13 贪吃蛇小游戏之食物及成绩判断

GUI编程 04 贪吃蛇小游戏 4.4 第四步&#xff1a;食物及成绩判断 首先&#xff0c;添加食物与分数的数据定义&#xff1a; //食物的坐标int foodX;int foodY;Random random new Random();//积分面板数据结构int score;在初始化方法中&#xff0c;添加(画出)食物与分数&…

层次分析法--可以帮助你做决策的简单算法

作用 层次分析法是一个多指标的评价算法&#xff0c;主要用来在做决策时&#xff0c;给目标的多个影响因子做权重评分。特别是那些需要主观决策的、或者需要用经验判断的决策方案&#xff0c;例如&#xff1a; 买房子&#xff08;主观决策&#xff09;选择旅游地&#xff08;…

Redis事务的理解与使用

文章目录 Redis 事务1)基本认识2)事务操作1.MULTI2.EXEC3.错误处理4.DISCARD5.WATCH6.SCRIPT Redis 事务 官方文档&#xff0c;永远是你学习的第一手资料&#xff1a;Redis 事务 1)基本认识 谈到事务&#xff0c;大家首先都会联想到 mysql 中复杂但又功能强大的“事务”&…

基于element-plus定义表单配置化扩展表单按钮

文章目录 前言一、新增btn.vue组件二、使用总结如有启发&#xff0c;可点赞收藏哟~ 前言 在后台管理系统一般都存在列表查询&#xff0c;且可输入数据进行查询 基于element-plus定义表单配置化 新增按钮配置化 一、新增btn.vue组件 <template><template v-for&qu…

如何做好性能压测?压测环境设计和搭建的7个步骤你知道吗?

简介&#xff1a;一般来说&#xff0c;保证执行性能压测的环境和生产环境高度一致是执行一次有效性能压测的首要原则。有时候&#xff0c;即便是压测环境和生产环境有很细微的差别&#xff0c;都有可能导致整个压测活动评测出来的结果不准确。 1. 性能环境要考虑的要素 1.1 系…

5种社交媒体策略提升你的SEO

你希望你的网站在多大程度上在搜索结果中被更多的受众看到&#xff1f;如果你想增加你网站的曝光率和流量&#xff0c;社交媒体整合是提高你的SEO的一个好方法。为了帮助公司和网站所有者提高他们的搜索引擎优化 &#xff08;SEO&#xff09;&#xff0c;这篇文章将介绍五种社交…