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

【UML用户指南】-19-对基本行为建模-用例图

目录

1、组成结构

2、表示法

3、一般用法

3.1、对主题的语境建模

3.2、对主题的需求建模

4、常用建模技术

4.1、对系统的语境建模

4.1.1、设计过程

4.2、对系统的需求建模

4.2.1、设计过程:

5、正向工程


        UML 中的用例图是对系统的动态方面建模的 5 种图之一(对系统的动态方面建模的其他 4种图是活动图、状态图、顺序图和通信图) 。用例图是对系统、子系统或类的行为进行建模的核心。每张图都显示一组用例、参与者以及它们之间的关系

        用例图对可视化、详述和文档化一个元素的行为是很重要的,它们通过呈现元素在语境中如何被使用的外部视图,使系统、子系统和类易于探讨和理解。另外,用例图对通过正向工程来测试可执行的系统和通过逆向工程来理解可执行的系统也是很重要的。

        
        

1、组成结构

主题、用况、参与者;

依赖、泛化以及关联关系;

与所有其他图一样,用况图可以包含注解和约束;

用况图还可以含有包,用来将模型中的元素组合成更大的组块。

偶尔,尤其是要把一个特殊的执行系统可视化时,还可以把用况的实例放到图中。

2、表示法

把主题表示为一个矩形(用例边界),其中包含一组表示用况的椭圆,主题的名字标在矩形内。

用人形图表示参与者,放在矩形外面,名字放在其图符的下方。

从参与者图符到与之通信的用况椭圆之间用线条连接。

用况之间的关系(如延伸和包含)画在矩形之内。

3、一般用法

3.1、对主题的语境建模

对一个主题的语境建模,包括围绕整个系统画一个框,并声明有哪些参与者位于系统之外并与它进行交互。在这里,用况图说明了参与者以及他们所扮演的角色的含义

3.2、对主题的需求建模

对一个主题的需求进行建模,包括说明这个主题应该做什么(从主题外部的视点来看),而不考虑主题应该怎样做。在这里,用况图说明了主题所希望的行为。在这种方式下,用况图使我们把整个主题看作一个黑盒子;可以观察到主题外部有什么,主题对那些外部事物的反应,但却看不到主题内部是如何工作的。

4、常用建模技术

4.1、对系统的语境建模

        所强调的是围绕在系统周围的参与者。决定什么作为参与者是重要的,因为这样做说明了与系统进行交互的一类事物。决定什么不作为参与者也同样重要,甚至更为重要,因为它限定了系统的环境,使之只包含那些在系统的生命周期中所必需的参与者 

4.1.1、设计过程

  1. 决定哪些行为是系统的一部分以及哪些行为是由外部实体所执行的,以此识别系统边界。这也同时定义了主题。
  2. 考虑以下几组事物来识别系统周围的参与者:需要从系统中得到帮助以完成其任务的组;执行系统的功能时所需要的组;与外部硬件或其他软件系统进行交互的组;为了管理和维护而执行某些辅助功能的组。
  3. 将彼此类似的参与者组织成一般——特殊层次结构。
  4. 在需要加深理解的地方,为每个参与者提供一个衍型。
  5. 将这些参与者放入用况图中,并说明从每个参与者到系统的用况之间的通信路径。
     

上图显示了一个信用卡验证系统的语境,它强调围绕在系统周围的参与者。其中有顾客(Customer),分为两类:个人顾客(Individual customer)和团体顾客(Corporate customer)。这些参与者是人与系统交互时所扮演的角色。在这个语境中,还有表示其他机构的参与者,如零售机构(Retail institution)(顾客通过该机构刷卡,购买商品或服务)、主办财务机构(Sponsoring financial institution)(负责信用卡账户的结算服务)。在现实世界中,后两个参与者本身就可能是一个软件密集型系统。

4.2、对系统的需求建模

        需求是系统的设计特征、特性或行为。陈述系统的需求,相当于陈述系统外部的事物与系统之间建立的一份合约,该合约声明了希望系统做什么事。

        可以用各种形式表达需求,从非结构化的文字到形式语言的表达式,以及介于二者之间的其他任意形式皆可。大多数(如果不是全部的话)系统的功能需求都可以表示成用况,UML 的用况图对管理这些需求是不可缺少的。

4.2.1、设计过程:

  1. 通过识别系统周围的参与者来建立系统的语境。
  2. 对于每个参与者,考虑它期望的或需要系统提供的行为。
  3. 把这些公共的行为命名为用况。
  4. 分解公共行为,放入新的用况中以供其他的用况使用;分解异常行为,放入新的用况中以延伸较为主要的控制流。
  5. 在用况图中对这些用况、参与者以及它们的关系进行建模。
  6. 用陈述非功能需求的注解或约束来修饰这些用况,可能还要把其中的一些附加到整个系统。

上图是对上一个用况图的扩充。尽管没有画出参与者与用况之间的关系,但加入了额外的用况,这些用况对于一般的顾客不可见,但仍是系统的基本行为。这张图是有价值的,因为它为最终用户、领域专家以及开发者提供了一个共同的起点,以便可视化、详述、构造和文档化他们关于系统的功能需求的决策。例如,检测信用卡欺诈(Detect card fraud)对于零售机构(Retail institution)和主办财务机构(Sponsoring financial institution)都是很重要的行为。类似地,报告账户的状态(Report on account status)是系统语境中不同机构所需要的另一个行为。

一旦确定了用况的结构,就必须描述每个用况的行为。

通常要为每个主线情况绘制一个或多个顺序图,然后要为每种变体情况绘制顺序图。

最后,为了说明对各种错误和异常情况的处理,至少还要绘制一个顺序图;对错误的处理是用况的一部分,要和正常行为一起考虑。

5、正向工程

 (forward engineering)是通过映射到一个实现语言而把模型转换为代码的过程。

用况图可通过正向工程,形成对它所应用的元素的测试。

用况图中的每个用况说明了一个事件流(或这些流的变体),这些流说明了元素被期望如何行动——这正是值得测试的。

一个结构良好的用况甚至说明了前置条件和后置条件,来定义一个测试的初态和它的成功判定标准。对于用况图中的每个用况,都可以创建一个测试用例,每当发布这个元素的新版本时都可以运行它,从而在其他元素使用它之前就保证它能像要求的那样工作。
 

  1. 识别与系统交互的对象。尝试找出每个外部对象可能扮演的各种角色。
  2. 设立参与者,以表示每一种不同的交互角色。
  3. 对于图中的每个用况,识别它的事件流和异常事件流。
  4. 根据选择的测试深度,为每个流产生一个测试脚本,把流的前置条件作为测试的初态,把流的后置条件作为测试的成功判定标准。
  5. 必要时生成一个测试支架来表示每个与用况交互的参与者。把信息传给元素或者是通过元素来执行的参与者都可以被现实世界的等价物模拟或替换。
  6. 每次发布用况图描绘的元素时,都用工具来运行相应的测试。

相关文章:

【UML用户指南】-19-对基本行为建模-用例图

目录 1、组成结构 2、表示法 3、一般用法 3.1、对主题的语境建模 3.2、对主题的需求建模 4、常用建模技术 4.1、对系统的语境建模 4.1.1、设计过程 4.2、对系统的需求建模 4.2.1、设计过程: 5、正向工程 UML 中的用例图是对系统的动态方面建模的 5 种图之…...

mysql密码过期的修改(Your password has expired. ..)

参考文章:mysql密码过期的修改方法(your password has expired)_我是知青-RuoYi 若依 (csdn.net) 问题:Your password has expired. To log inyou must change it using a clientthat supports expired passwords. 解决方式&…...

vivado SLR

描述 超级逻辑区(SLR)是包含在堆叠硅中的单个FPGA芯片 互连(SSI)设备。堆叠式硅互连(SSI)技术使用无源硅 具有微凸块和硅通孔(TSV)的内插器,用于组合多个FPGA管芯 切片&a…...

【CSS】深入了解圆角属性border-radius

border-radius 是 CSS 中的一个非常有用的属性,它允许你创建具有圆角边框的元素。这个属性可以应用于一个元素的四个角,或者分别应用于每个角。下面我们将深入了解 border-radius 的使用方法和一些高级技巧。 基本用法 你可以通过为 border-radius 指定…...

LabVIEW与C#的区别及重新开发自动测试程序的可行性分析

LabVIEW和C#是两种广泛使用的编程语言,各自有不同的应用领域和特点。本文将详细比较LabVIEW与C#在自动测试程序开发中的区别,并分析将已完成的LabVIEW自动测试程序重新用C#开发的合理性。本文帮助评估这种转换的必要性和潜在影响。 LabVIEW与C#的区别 开…...

人工智能—美国加利福尼亚州房价预测实战

引言 在当今快速发展的房地产市场中,房价预测已成为一个至关重要的领域。它不仅关系到投资者的决策,也直接影响到普通购房者的生活质量。特别是在美国加利福尼亚州,这个以其高房价和房地产市场的波动性而闻名的地方,准确的房价预…...

python pandas处理股票量化数据:笔记2

有一个同学用我的推荐链接注册了tushare社区帐号https://tushare.pro/register?reg671815,现在有了170分积分。目前使用数据的频率受限制。不过可以在调试期间通过python控制台获取数据,将数据保存在本地以后使用不用高频率访问tushare数据接口&#xf…...

enum库

Python enum 模块教程 enum 是 Python 3.4 引入的一个模块,用于定义枚举类型。枚举类型是一种特殊的数据类型,由一组命名的值组成,这些值称为枚举成员。使用 enum 可以提高代码的可读性和可维护性,特别是在处理一组相关的常量值时…...

【CT】LeetCode手撕—141. 环形链表

目录 题目1- 思路2- 实现⭐141. 环形链表——题解思路 3- ACM实现 题目 原题连接:141. 环形链表 1- 思路 模式识别 模式1:判断链表的环 ——> 快慢指针 思路 快指针 ——> 走两步慢指针 ——> 走一步判断环:若快慢相遇则有环&a…...

python,自定义token生成

1、使用的包PyJWT来实现token生成 安装:pip install PyJWT2.8.0 2、使用例子: import jwt import time pip install pyJWT2.8.0 SECRET_KEY %^ES*E&Ryurehuie9*7^%$#$EDFGHUYTRE#$%^&%$##$RTYGHIK DEFAULT_EXP 7 * 24 * 60def create_token(…...

小米SU7遇冷,下一代全新车型被官方意外曝光

不知道大伙儿有没有发现,最近小米 SU7 热度好像突然之间就淡了不少? 作为小米首款车型,SU7 自上市以来一直承载着新能源轿车领域流量标杆这样一个存在。 发售 24 小时订单量破 8 万,2 个月后累计交付破 2 万台。 看得出来限制它…...

JavaScript 函数与事件

1. JavaScript自定义函数 语法: function 函数名(参数列表){ 方法体; } 在函数被调用时,一个 arguments 对象就会被创建,它只能使用在函数体中,以数组的形式来管理函数的实际…...

Qt 焦点系统关键点总结

1.1 焦点窗口 指的是当前时刻拥有键盘输入的窗口。 Qt提供了如下接口,用于设置窗口是否是”可获取焦点“窗口: void QWidget::setFocusPolicy(Qt::FocusPolicy policy); Qt::FocusPolicy Qt::TabFocus 与焦点链相关,详解见下一…...

SpringBoot+Maven项目的配置构建

文章目录 1、application.properties2、pom.xml 1、application.properties 也可使用yml yaml #静态资源 spring.mvc.static-path-pattern/images/** #上传文件大小设置 spring.http.multipart.max-file-size10MB spring.http.multipart.max-request-size10MBspring.mvc.path…...

c#调用c++dll方法

添加dll文件到debug目录,c#生成的exe的相同目录 就可以直接使用了,放在构造函数里面测试...

ACM算法学习路线、清单

入门 模拟、暴力、贪心、高精度、排序 图论 搜索 BFS、DFS、IDDFS、IDA*、A*、双向BFS、记忆化 最短路 SPFA、bellman-fort(队列优化)、Dijkstra(堆优化)、Johnson、Floyd、差分约束、第k短路 树 树的重心和直径、dfs序、树链刨分与动态树、LCA、Prufer编码及Cayley定理…...

sqoop的安装配置

1. 上传并解压安装包 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../server/ 重命名:mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop 2. 配置环境变量 sudo vim /etc/profile # 配置sqoop的环境变量 export SQOOP_HOME/export/server/sqoop export PATH$PATH…...

代码随想录算法训练营第六十四天 | 图论理论基础、深搜理论基础、广搜理论基础、98. 所有可达路径

图论理论基础 我写在了个人语雀笔记中 https://www.yuque.com/yuqueyonghu8mml9e/bmbl71/ex473q4y0ebs0l3r?singleDoc# 深搜理论基础 https://www.yuque.com/yuqueyonghu8mml9e/bmbl71/zamfikz08c2haptn?singleDoc# 98. 所有可达路径 题目链接:98. 所有可达…...

【教师资格证考试综合素质——法律专项】教师法笔记以及练习题

《中华人民共和国教师法》 一.首次颁布:第一部《中华人民共和国教师法》于1993年10月31日由第八届全国人民代表大会常务委员会第四次会议通过,1994年1月1日起执行。 二.历次修改:2009年8月27日第十一届全国人民代表…...

图卷积网络(Graph Convolutional Network, GCN)

图卷积网络(Graph Convolutional Network, GCN)是一种用于处理图结构数据的深度学习模型。GCN编码器的核心思想是通过邻接节点的信息聚合来更新节点表示。 图的表示 一个图 G通常表示为 G(V,E),其中: V 是节点集合,…...

JavaSec-RCE

简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性&#xff0c…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

安卓基础(aar)

重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...

初探用uniapp写微信小程序遇到的问题及解决(vue3+ts)

零、关于开发思路 (一)拿到工作任务,先理清楚需求 1.逻辑部分 不放过原型里说的每一句话,有疑惑的部分该问产品/测试/之前的开发就问 2.页面部分(含国际化) 整体看过需要开发页面的原型后,分类一下哪些组件/样式可以复用,直接提取出来使用 (时间充分的前提下,不…...