当前位置: 首页 > 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 是节点集合,…...

3分钟解决机械键盘连击问题:终极开源修复工具完整指南

3分钟解决机械键盘连击问题:终极开源修复工具完整指南 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是否曾经遇到过这样…...

AI 辅助开发实战:基于低代码与智能生成的五金店管理系统毕设架构设计

最近在帮学弟学妹们看毕业设计,发现“五金店管理系统”是个高频选题。但很多人做着做着就陷入了“增删改查”的泥潭,前端界面简陋,业务逻辑也写得七零八落,最后答辩时演示效果平平,技术深度更是无从谈起。这让我开始思…...

塔罗牌选框架:准确率超机器学习模型

技术选型困境与创新突破在软件测试领域,技术栈选择一直是核心挑战。传统方法依赖历史数据和机器学习模型,但常陷入“预测陷阱”——过度依赖过往经验导致创新盲区。例如,自动化测试框架的错误选型每年造成巨额损失:38.7%源于技术生…...

5分钟玩转OpenClaw:nanobot镜像云端体验与本地调试对比

5分钟玩转OpenClaw:nanobot镜像云端体验与本地调试对比 1. 为什么需要对比云端与本地两种体验方式 作为一个长期折腾AI工具的开发者,我最近在测试OpenClaw时遇到了一个典型困境:是直接在本地电脑安装全套环境,还是先用云端沙盒快…...

用U8g2库玩转OLED:Arduino显示动态变量+自定义图标的5个实用技巧

用U8g2库玩转OLED:Arduino显示动态变量自定义图标的5个实用技巧 在嵌入式开发中,OLED显示屏因其高对比度、低功耗和紧凑尺寸成为物联网设备和交互式项目的首选。U8g2库作为Arduino平台上最强大的显示驱动库之一,其灵活性和功能丰富性远超基础…...

Vitis自定义IP编译报错?手把手教你修复Makefile路径问题(附完整代码)

Vitis自定义IP编译报错?手把手教你修复Makefile路径问题(附完整代码) 最近在Vitis中导入包含自定义IP的XSA文件时,不少开发者遇到了令人头疼的编译错误——"xxx.h: No such file or directory"。这个看似简单的报错背后…...

《Cancer Discov》(IF: 33.3)|新型空间蛋白组和空间转录组整合流程解析肿瘤免疫微环境

空间转录组学和空间蛋白组学能分别在原位解析基因表达和蛋白功能状态。然而,它们各有自己独特的应用场景,例如空间转录组覆盖广但预测功能不直接,而空间蛋白组功能信号直接,靶向性高,能提供更多的有效生物学信息。如果…...

douyin-downloader:智能化解构无水印视频批量采集的技术方案

douyin-downloader:智能化解构无水印视频批量采集的技术方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容爆炸的时代,如何高效获取高质量视频素材成为内容创作者、研究者…...

生成式AI欺诈来袭,什么样的IP数据接口才能筑起防线?

某电商平台的风控系统发出预警:一个“新用户”正在批量下单高价商品,收货地址遍布全国,支付方式各不相同。但奇怪的是,这些订单的浏览行为、停留时间、点击轨迹几乎完全一致——这不是真人,而是生成式AI模拟的虚假用户…...

怎么看待OpenClaw?

特别附:"词元"为何是理解这一切的关键引言:一只龙虾爬到Linux头顶2026年3月,GitHub星标榜上出现了一个奇观——一只"龙虾"爬到了Linux头顶。OpenClaw,这个从个人项目演变成的AI智能体框架,在不到四…...