[软件工程] UML 用例图详解

article/2025/9/30 3:49:04

参考博客: 
https://blog.csdn.net/sinat_25207295/article/details/116073819

https://blog.csdn.net/cold___play/article/details/100824261

参考教材:
软件工程(第四版)高等教育出版社

统一建模语言(Unified Modeling Language,UML) 可分类成:
·功能模型:从用户的角度展示系统的功能,包括用例图。
·对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、对象图。
·动态模型:展现系统的内部行为。包括序列图,活动图,状态图。

1.UML的用例图

用例的概念:
从外部用户的视角看,一个用例(use case)是执行者(actor)与 目标软件系统之间一次典型的交互作用。其效果就是执行者在软件系统的帮助下完成了某项业务功能。

从软件系统内部的视角出发,一个用例代表着系统执行的一系列动作。

简而言之:用例是对一个活动者(actor)使用系统的一项功能时所进行的交互过程的一个文字描述序列

执行者是指外部用户或者外部实体在系统的交互过程中扮演的角色,执行者可以是一类用户,也可以是其他软件系统或者物理设备

用例图:
UML的用例模型由一到多幅用例图构成,它们表示从软件系统的外部使用者的角度看到的各项系统功能,并清晰地说明软件系统的边界
即,用例图中所用用例的集合构成目标软件系统应该提供的功能,除此以外软件系统不再承诺其他功能。

用例图的节点有执行者用例两种。
用例图的边表示   执行者与用例之间、  两个用例之间、  两个执行者之间的关系

1.1 执行者与用例之间的关系

执行者与用例之间的连接边,意义为:执行者触发用例的执行,向用例提供信息或者从用例获取信息。

1.2 用例之间的关系

用例之间的关系主要有三种:包含(include)、扩展(extend)和继承

1.2.1 包含

包含关系是指基础用例(Base)会被用到被包含用例(inclusion)

例如:ATM机中,如果查询、取现、转帐这三个用例都需要打印一个回执给客户,我们就可以把打印回执这一部分内容提取出来,抽象成为一个单独的用例"打印回执",而原有的查询、取现、转帐三个例都会包含这个用例。每当以后要对打印回执部分的需求进行修改时,就只需要改动一个用例,而不用在每一个用例都作相应修改,这样就提高了用例模型的可维护性。

当某一个用例的事件流过于复杂时,为了简化用例的描述,我们可以将某一段的事件流抽象成为一个被包含的用例。

这种情况类似于过程设计语言中,将程序的某一段算法封装成一个子过程,然后在主程序中调用这个子过程。

1.3.2 扩展

扩展(extend)关系,基础用例(Base)中定义有一至多个已命名的扩展点,扩展关系是指将扩展用例(Extension)的事件流在一定条件下按照相应的扩展点插入到基础用例中。

对于包含关系而言,被包含用例是一定插入到基础用例当中的。而扩展关系可以根据一定的条件来决定是否将扩展用例的事件流插入到基础用例事件流,并且插入点可以有多个。

 扩展关系经常用来区分正常的业务处理功能带有例外处理的功能。

例如:假定在课程注册管理系统中每门课程设置所容纳的学生数量有限制,一旦超出限制需经任课教师同意。可设置制订选课计划[考虑学生数量限制]”用例,并将其作为制订选课计划的扩展用例

例如:例如对于电话业务,可以在基本通话(Call)业务上扩展出一些增值业务如:呼叫等待(Call Waiting)和呼叫转移(Call Transfer)。我们可以用扩展关系将这些业务的用例模型描述为右图所示。

 

 在这个例子中,呼叫等待和呼叫转移都是对基本通话用例的扩展,但是这两个用例只有在一定的条件下(如应答方正忙或应答方无应答)才会将被扩展用例的事件流嵌入基本通话用例的扩展点,并重用基本通话用例中的事件流。

1.1.3 继承(又称泛化)

当多个用例共同拥有一种类似的结构和行为的时候,我们可以将它们的共性抽象为父用例,其他的用例作为泛化关系中的子用例。

子用例从父用例继承行为和属性,还可以添加行为或者覆盖和改变继承的行为。

 

1.3 执行者之间的关系

执行者之间的关系只有继承关系一种

如在需求分析中常见的权限控制问题(如右图所示),一般的用户只可以使用一些常规的操作,而管理员除了常规操作之外还需要进行一些系统管理工作,操作员既可以进行常规操作又可以进行一些配置操作。

 在这个例子中我们会发现管理员和操作员都是一种特殊的用户,他们拥有普通用户所拥有的全部权限,此外他们还有自己独有的权限。这里我们可进一步把普通用户和管理员、操作员之间的关系抽象成泛化(Generalization)关系,管理员和操作员可以继承普通用户的全部特性(包括权限),他们又可以有自己独有的特性(如操作、权限等)。这样可以显著减少用例图中关联的个数,简化用例模型,使之更易于理解。


http://chatgpt.dhexx.cn/article/lvX9lOVO.shtml

相关文章

UML建模--用例图

用例图主要用来描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用这个系统干什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示这些元素之间的各种关系,如泛化、关联和依赖。它展示了一…

python3爬取网易云音乐《我们》全部评论

伴随着《后来的我们》的上映,这首歌的评论也是一路暴涨。如今让我们趁着这波秋风(虽然已经有点晚了),把这首歌的评论爬下来。虽然之前还打算做出词云可视化出来然而,还是太懒了 之前爬过豆瓣《霸王别姬》的影评做过这…

行业分析常用到的21个网站

行业分析常用到的21个网站 前言 今天写《就业乱世,如何正面应战!【所长】》笔记的时候在里面找到了作者分析行业常用到的21个网站。于是我也看一看。还是有不少启发的。让我一目了然知道对哪些公司看哪些数据。我之前接触得迷迷糊糊的,知道…

2021高考热度最高专业,大数据分析告诉你

又是一年高考季。 经历了十二年苦读的学子们,终于到了真枪实弹、一考定输赢的时候了。小编不由自主替这些学子们捏了一把冷汗。 高考的重要性不言而喻,这是一场不同于平时的测试,在未来的人生里,高考扮演着举足轻重的角色。通过自…

卷积神经网络 神经网络,卷积神经网络基础知识

卷积神经网络通俗理解 。 卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetworks),是深度学习(deeplearning)的代表算法…

【信息检索】文档评分和概率检索模型

(1). 用Java语言或其他常用语言计算附件“HW4_1.txt”中的80个英文文档(每行表示一个document,文档编号1~80)两两之间的相似度值,并据此为每个文档返回相似度最大的3个文档。 要求使用cosine similarity和TF-IDF计算文档之间的相…

三个优秀的PyTorch实现语义分割框架

向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 使用的VOC数据集链接开放在文章中,预训练模型已上传Github,环境我使用Colab pro,大家下载模型做预测即可。 代码链接: h…

google crx Hoxx 下载

Hoxx download links. Chrome crx https://base1-hx.diltwo.com//public/Chrome/Firefox XPI https://base1-hx.diltwo.com//public/Firefox/Android api https://base1-hx.diltwo.com//public/Android/ crx 下载地址 https://www.crx4chrome.com/crx/39922/ https://www.crx4…

Chrome安装CRX插件方法

一.前言 Chrome插件有:extension,app, NaCl(Native Client), PNaCl(Portable Native Client)等。但因为安全性,兼容性等各种原因,Chrome官方已经宣布:逐渐废弃其它类型的插件,只保留…

Chrome:拖入crx文件时,显示“无法从该网站添加应用、扩展程序和用户脚本”问题

问题现象 问题解决方案 1)打开新的页签,输入网址:chrome://flags/#extensions-on-chrome-urls 2)Extensions on chrome:// URLs 由Disabed修改为Enabled

Chrome如何安装第三方扩展插件(crx)

Chrome安装第三方扩展插件(crx) 前言 新版本Chrome浏览器会对非Chrome应用商城的扩展应用安装进行限制,安装后会提示“该扩展程序未列在 Chrome 网上应用店中,并可能是在您不知情的情况下添加的。”。 上述问题的一种解决方式是将CRX文件进行解压后进行…

Chrome谷歌浏览器安装crx后缀插件方法

Chrome谷歌浏览器安装crx后缀插件方法; 很多小伙伴还是习惯用以前的crx后缀谷歌浏览器插件,但是自从2018年之后,谷歌新版本升级;不支持直接拖拽的形式安装这类插件了; 之后的新版本(目前已经升级到v80版本…

Chrome 解决 CRX HEADER INVALID 问题

文章目录 1. 问题2. 原因3. 解决方法3.1 方法一:将 crx 扩展程序解压开,然后加载已解压的扩展程序安装3.2 方法二:将 crx 的文件扩展名更改为 zip,然后拖拽安装3.3 方法三:使用 73 及后续版本打包的 crx,直…

建一个chrome插件crx所需步骤

建一个文件夹 文件夹下建以下几个文件 manifest.json:主要的配置文件 popup.html:主要的承载页面 icon.ico:插件的图标 引入的popup.js是html所涉及的js功能代码 因为是纯js的,所以需要提前引入jquery方便后期事件绑定 chrome插…

新版Edge浏览器安装外部扩展(.crx)的方法

先准备好插件文件: xxx.crx格式 然后改变后缀名,从.crx改为.zip格式 然后把这个.zip文件解压到你电脑的任意位置,最好是Edge浏览器的安装位置附近建一个edge文件夹里,后期方便查找更新。 比如我的目录: 我的操作&am…

谷歌浏览器Crx插件库-https://crxdl.com/

地址:https://crxdl.com/ postman插件:talend json插件库:csdn插件 抓取视频:猫抓

chrome浏览器添加crx插件

1.首先把crx文件修改名字,改成.zip结尾的文件 2.把需要的zip解压 3.chrome浏览器打开开发者模式 4.加载已解压的扩展程序 5.先添加tampermonkey,再添加simple-allow-copy 6.把扩展程序固定到浏览器工具栏 7.在bd文库中,先点亮扩展程序&#x…

谷歌浏览器(chrome)安装crx插件

1、下载crx插件 2、插件扩展名改名为zip 3、解压zip文件 4、打开谷歌浏览器扩展程序 chrome://extensions/ 5、打开开发者模式,加载已解压的扩展程序,安装成功即如图展示

chrome浏览器安装插件,提示程序包无效

chrome浏览器安装插件的时候,如果提示 程序包无效:“CRX_HEADER_INVALID”,导致插件安装不上去,这个时候该怎么办呢?通常,这种错误在chrome浏览器版本73,以及之后的版本会出现 一、工具/原料 1…

谷歌浏览器(Chrome)如何安装crx插件?(详细步骤)

一、前言 谷歌浏览器在旧版本(大概是v67版本)之前安装crx插件都非常简单,直接将crx拖放到浏览器内就可以安装了。但是之后的新版本(目前已经升级到v80版本)就只允许用户通过谷歌应用商店安装插件,而不允许…