UML中用例之间的可视化表示

news2024/9/28 19:23:32

用例除了与参与者有关联关系外,用例之间也存在着一定的关系,如泛化关系、包含关系、扩展关系等。

4.2.1  包含关系

包含关系指的是两个用例之间的关系,其中一个用例(称为基本用例,Base Use Case)的行为包含了另一个用例(称为包含用例,Inclusion Use Case)的行为。也就是说基本用例会用到包含用例,表示基本用例中重用包含用例中的步骤。在UML图中,包含关系使用带虚线的箭头表示,并在线上标有<<include>>,如图4.7所示。

在包含关系中,箭头的方向是从基本用例到包含用例,也就是说,基本用例是依赖于包含用例的。

4.2.2  扩展关系

扩展关系的基本含义与泛化关系类似。扩展关系是对基本用例的扩展,基本用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。扩展的基本用例中将存在一个扩展点(Extension Point),只有当扩展点被激活时,子用例才会被执行。在扩展关系中,对于扩展用例(Extension Use Case)有更多的规则限制,即基本用例必须声明若干扩展点;而扩展用例只能在这些扩展点上增加新的行为和含义。扩展关系是从扩展用例到基本用例的关系,它说明扩展用例定义的行为如何插入基本用例定义的行为中,也就是说扩展用例并不在基本用例中显示。

在以下几种情况下,可以使用扩展用例:

(1)表明用例的某一部分是可选的系统行为(这样就可以将模型中的可选行为和必选行为分开)。

(2)表明只在特定条件(如例外条件)下才执行的分支。

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

在UML图中,扩展关系使用带虚线的箭头表示,并在线上标有<<extend>>,如图4.8所示。在还书的过程中,只有在例外条件(读者遗失图书)的情况下,才会执行交罚款的分支。

4.2.3  泛化关系

泛化关系指的是一般与特殊的关系。当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,它继承了父用例所有的结构、行为和关系。用例之间泛化关系如图4.9所示。

4.2.4  分组关系

在一些用例图中,用例的数目可能很多,这时就需要把这些用例组织起来。这种情况在一个系统包含很多子系统时就会出现。另一种可能就是,当我们按顺序和用户会谈,收集系统需求时,每个需求必须用一个单独的用例来表达,这时就需要某种方式来对这些需求进行分类。

最直接的方法就是把相关的用例放在一个包中组织起来。一组用例可以放在一个文件夹中。

综上所述,用例之间存在着一定的关系,这些关系既有联系又有区别。在扩展关系中,基本用例是一个完整的用例,即是可以独立存在的用例。一个基本用例在执行时,可以执行也可以不执行扩展部分。

在包含关系中,基本用例可能是、也可能不是一个完整的用例。在执行基本用例时,一定会执行包含用例部分。

当需要重复处理两个或多个用例时,可以考虑使用包含关系,实现一个基本用例对另一个用例的引用。

当处理正常行为的变型而且只是偶尔描述时,可以考虑只用泛化关系。

当描述正常行为的变型而且希望采用更多的控制方式时,可以在基本用例中设置扩展点,使用扩展关系。

《UML 2.5基础、建模与设计实践》(李波,姚丽丽,朱慧)【摘要 书评 试读】- 京东图书 (jd.com)

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

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

相关文章

从零开始读RocketMq源码(二)Message的发送详解

目录 前言 准备 消息发送方式 深入源码 消息发送模式 选择发送方式 同步发送消息 校验消息体 获取Topic订阅信息 高级特性-消息重投 选择消息队列-负载均衡 装载消息体发送消息 压缩消息内容 构造发送message的请求的Header 更新broker故障信息 异步发送消息 …

根据空格、制表符、回车符等分割字符串re.split

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 根据空格、制表符、 回车符等分割字符串 re.split [太阳]选择题 根据给定的Python代码&#xff0c;哪个选项是正确的&#xff1f; import re pattern r\s print(f"【显示】pattern{…

软件工程面向对象 超市管理系统 需求分析 系统设计 课程设计报告

1、引言 系统简述 超市管理系统的功能主要有前台管理和后台管理两个大块。其使用对象 有超市管理人员和超市销售人员两类。超市管理系统主要为了实现商品输 入、 输出管理数据的自动化&#xff0c; 提高商品统计信息的实时性&#xff0c; 减轻人工劳动强 度从而节省人力成本。实…

国产操作系统安装配置auditd审计工具 _ 统信 _ 麒麟 _ 中科方德

原文链接&#xff1a;国产操作系统安装配置auditd审计工具 | 统信 | 麒麟 | 中科方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在国产桌面操作系统上部署auditd审计工具的文章。auditd是Linux审计系统的核心守护进程&#xff0c;用于记录系统安全相关的事件和…

Java根据经纬度获取两点之间的距离

Java根据经纬度获取两点之间的距离&#xff0c;最近在实现类似于钉钉打卡签到的需求&#xff0c;因为对精度要求不是很高&#xff0c;所以可以通过一个球面距离的公式来求两点距离&#xff0c;这里将地球当成一个球体&#xff0c;实际上地球是一个不规则的球体&#xff0c;所以…

14-22 剑和远方2 - 深度神经网络中的学习机制

概论 在第一部分中&#xff0c;我们深入探讨了人工智能的兴衰简史以及推动人工智能发展的努力。我们研究了一个简单的感知器&#xff0c;以了解其组件以及简单的 ANN 如何处理数据和权重层。在简单的 ANN 中&#xff0c;不会对数据执行特定操作。ANN 中的激活函数是一个线性函…

模拟考试小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;科目管理&#xff0c;复习资料管理&#xff0c;参考文献管理&#xff0c;用户管理&#xff0c;留言板管理&#xff0c;论坛管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;复习资料&#xf…

搭建ASP+Mssql站点

SQL Server 2022 链接&#xff1a;https://pan.baidu.com/s/1U2zkXacbjOVNsAq-JQ80tA?pwdgosm 提取码&#xff1a;gosm MSSQLi-labs 链接&#xff1a;https://pan.baidu.com/s/1K6rCIaeSzaBBtQKD9Uk1fw?pwdveyn 提取码&#xff1a;veyn SQL Server 2022下载安装 安装成功…

【前端从入门到精通:第十一课: JS基本语法】

独闯JavaScript 了解JavaScript 为什么学习JavaScript JavaScript 是 web 开发者必学的三种语言之一&#xff1a; HTML 定义网页的内容 CSS 规定网页的布局 JavaScript 对网页行为进行编程 我们学习 JavaScript&#xff0c;以及 JavaScript 如何与 HTML 和 CSS 协同工作的知…

重大更新!800GB谷歌倾斜摄影最新OSGB数据免费大放送

自3月20日谷歌倾斜摄影OSGB转换工具V0.1版本发布以来&#xff0c;期间更新了V0.2、V1.0、V1.1、V1.2共4个版本&#xff0c;目前V1.2版本功能已经比较完善和稳定&#xff0c;实现了的当初产品规划的绝大部分功能。基于此&#xff0c;我将之前免费分享的数据重新下载和生成&#…

MyBatis框架学习笔记(二):原生API 的调用 和 注解的使用

1 MyBatis原生API 1.1 原生API 快速入门需求 在笔记一案例的基础上将增删改查&#xff0c;使用 MyBatis 原生的 API 完成&#xff0c;就是直接通过SqlSession 接口的方法来完成 1.2 原生API 快速入门-代码实现 创建 src\test\java\com\hspedu\mapper\MyBatisNativeTest.jav…

BUG: npm error `electron_mirror` is not a valid npm option

npm error electron_mirror is not a valid npm option 环境 windows 11 node v20.15.0 npm v10.7.0详情 在运行 npm run mirror 命令时出现错误。这是一个设置镜像的命令。 我是没事干了&#xff0c;运行这个命令&#xff0c;这个命令在我这里根本就是运行不了。这个命令一…

完美解决AttributeError: ‘DataFrame‘ object has no attribute ‘ix‘的正确解决方法,亲测有效!!!

完美解决AttributeError: ‘DataFrame’ object has no attribute ix’的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决AttributeError: DataFrame object has no attribute ix的正确解决方法&#xff0c;亲测有效&#xff01;&…

服务器数据恢复—同品牌不同系列服务器raid5阵列数据恢复方案分析

RAID5磁盘阵列数据恢复案例一&#xff1a; 服务器数据恢复环境&#xff1a; 一台某品牌LH6000系列服务器&#xff0c;通过NetRaid阵列卡将4块硬盘组建为一组RAID5磁盘阵列。操作系统都为Window server&#xff0c;数据库是SQLServer。 服务器故障&#xff1a; LH6000系列服务器…

并发编程工具集——StampedLock-比ReadWriteLock更快的锁(上篇)(十八)

StampedLock 支持的三种锁模式 写锁、悲观读锁和乐观读 StampedLock与ReadWriteLock的异同 ReadWriteLock支持两种&#xff1a;读锁、写锁相同点&#xff1a;其中&#xff0c;写锁、悲观读锁的语义和 ReadWriteLock 的写锁、读锁的语义非常类似&#xff0c;允许多个线程同时获取…

tessy 单元测试:小白入门指导手册

目录 1,创建单元测试工程目录 2,导入单元测试源文件 一:创建测试文件夹(最好和代码目录一一对应,方便查找) 二:选择测试环境 三:添加源文件 四:分析源文件 3,编写单元测试用例 一:设置函数参数的传输方向 二:添加单元测试用例 三:编辑单元测试用例数据 …

MATLAB中d2c函数用法

目录 语法 说明 示例 将离散时间传递函数转换为连续时间 将识别出的离散时间传递函数转换为连续时间 在将已识别的离散时间传递函数模型转换为连续时间模型后&#xff0c;重新生成协方差信息 d2c函数的功能是将模型从离散时间转换为连续时间。 语法 sysc d2c(sysd) sy…

atcoder 357 F Two Sequence Queries (线段树板子)

题目&#xff1a; 分析&#xff1a; 线段树 代码&#xff1a; // Problem: F - Two Sequence Queries // Contest: AtCoder - SuntoryProgrammingContest2024&#xff08;AtCoder Beginner Contest 357&#xff09; // URL: https://atcoder.jp/contests/abc357/tasks/abc357_…

【最新鸿蒙应用开发】——Navigation路由管理

Navigation路由 1.引言 一多开发的项目适合使用Navigation进行统一的页面路由管理。Navigation还提供统一的标题栏、工具栏、菜单栏&#xff0c;并且自带导航返回功能。另外&#xff0c;Navigation还支持一些Router不支持的功能&#xff0c;比如&#xff1a;自带的路由拦截功…

运行时异常与一般异常的异同

运行时异常与一般异常的异同 1、运行时异常&#xff08;Runtime Exception&#xff09;1.1 特点 2、 一般异常&#xff08;Checked Exception&#xff09;2.1 特点 3、异同点总结3.1 相同点3.2 不同点 4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷…