UML 总结(基于《标准建模语言UML教程》)

定义

        UML 又称为统一建模语言或标准建模语言,是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。尽管UML 本身没有对过程有任何定义,但UML 对任何使用它的方法(或过程)提出的要求是:支持用例驱动、以架构为中心、递增和迭代的开发

UML 目标

UML 架构

        UML是由图和元模型组成的。图是UML 的语法,而元模型则给出图的意思,是UML 的语义。UML的语义是定义在一个四层建模概念框架中的,这四层分别是:元元模型层、元模型层、模型层、用户模型层。

UML 三要素

        UML 组成的三要素包括基本构造块、图、运用于整个语言的公共机制;(基于软考架构设计官方教材)

  • 基本构造块包括:事物与关系;
    • 四种事物包括:结构事物、行为事物、分组事物、注释事物
      • 结构事物:是UML 模型中的名词。它们通常是模型的静态部分,描述概念或物理元素
        • 包括:类(Class)、接口(Interface)、协作(Collaboration)、用例(UseCase)、主动类(Active Class)、构件(COmponent)、制品(Artifact)、结点(node)。
      • 行为事物:是UML 模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。
        • 包括:交互(Interaction)、状态机(State Machine)和活动(Activity)。

UML 与 4+1视图

        UML 是用来描述模型的,它用模型来描述系统的结构或静态特征、以及行为或动态特征。它从不同的视角为系统的架构建模,形成系统的不同视图,包括:用例视图(场景)、逻辑视图、并发视图、组件视图、物理视图

  • 展开视图(环境模型视图)(物理视图):体现了系统实现环境的结构和行为特征

UML2.0定义的视图种类及其分类

        UML2.0 定义了13种图(基于软考架构设计官方教材)包括:

类图、对象图、用例图、状态图、活动图、构件图、部署图、组合结构图、包图、序列图、通信图、交互概览图、计时图

UML 图分类

用例图

定义

        用例图是静态模型,是用户与系统交互的最简表示形式,展现了用户和他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。

元素构成

  • 系统边界:使用一个矩形框表示一个系统,并将系统的名称放在顶部。在矩形内的所有东西都属于这个系统,而在矩形外的任何东西都能够使用这个系统
  • 注释:

  • 用例规约:用例图只是在总体上大致描述了系统所提供的各种服务,让人们对系统有一个总体的认知。但对于每一个用例,还需要详细地描述信息,以便让别人对于整个系统更加详细的了解,这些信息包含在"用例规约"中

用例规约包括:简要说明、事件流、用例场景、特殊需求、前置条件、后置条件

  1. 简要说明:简要说明是指对用例作用和目的的简要描述
  2. 事件流:事件流包括基本流和备选流。基本描述的是用例的基本流程,是指用例”正常“运行时的场景。备选流描述的是用例执行过程中可能发生的异常和失败场景。
  3. 用例场景:同一个用例在实际执行的时候会有很多不同的情况发生,称之为用例场景,也可以说用例场景就是用例的实例,用例场景包括成功用例和失败场景
  4. 特殊需求:特殊需求是指一个用例的非功能性需求和设计约束。特殊需求通常是非功能性需求,包括可靠性、性能、可用性和可拓展性等。
  5. 前置条件:前置条件是指执行用例之间系统必须所处的状态。例如,前置条件是要求用户有访问的权限,或是要求某个用例必须已经执行完。
  6. 后置条件:后置条件是指用例执行完毕后系统可能处于的一组状态。例如,要求在某个用例执行完成后,必须执行另一个用例。

关联关系

  •  关联关系:使用一根实线连接参与者和用例,表示参与者和用例在进行一种基本的交流或互动。
  • 包含关系(include):包含关系当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享
    • 使用一根带有箭头的虚线,由基本用例指向包含用例
  • 拓展关系(extend):拓展关系是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
    • 使用一根带有箭头的虚线,由拓展用例指向基本用例
  • 泛化关系(generalization):使用一个带实线的三角形空心箭头来表示泛化关系,三角形箭头由子指向父。子参与者继承父参与者的所有关系、子用例继承父用例的所有结构、行为和关系

类图

定义

        类图是显示了模型的静态结构,特别是模型中存在的类,类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。

表示方法

作用

关联关系

对象图

定义

        对象图是一种结构图,用于展示系统中对象之间的静态关系。对象图显示了系统中的对象实例以及它们之间的关系,通常用于详细描述类图中的类和实例。

        对象图是类图在某一时刻的实例,是一个系统的具体状态在某一时刻的快照。

作用

状态图

定义

作用

元素构成

状态

        状态主要用于描述一个对象在生命周期内的一个时间段。状态包括状态名,内部转移,进入/退出操作、子状态、延迟的事件等状态的特征。

  • 初态:
    • 显示状态图中状态执行的开始,用一个实心原型表示。
  • 选择状态:
    • 条件分支上方括号内的文字表示监护条件,用一个棱形形表示。
  • 组合状态
    • 含有子状态的状态被称为组合或嵌套状态
    • 两种表示方法
      • 顺序子状态:如果一个组成状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,即多个子状态之间是互斥的,不能同时存在,这种子状态称为顺序子状态。
      • 并发子状态:有时组合状态有两个或者多个并发的子状态机,此时称组成状态的子状态为并发子状态。
      • 顺序子状态与并发子状态的区别在于后者在同一层次给出两个或多个顺序子状态,对象处于同一层次中来自每个并发子状态的一个时序状态中。
  • 历史状态:使用历史状态,可以存储目前退出组合状态时所处的子状态,则返回组合状态时可以直接回到相应的子状态。
转换

        转换是两个状态之间的关联,表示对象在第一状态中执行一定的动作,并在某个特定事情发生并且某个特定的条件满足时进入下一个状态。

  • 转换的组成
    • 源状态(source State):源状态就是被转换影响的状态。某对象处于源状态,当它接收到触发事件或满足监护条件,就会激活一个转换。
    • 目标状态(Target State):转换完成后,对象状态发生变化,这时对象所处的状态就是转换的目标状态。
    • 触发事件(Trigger):引起转换的事件,这里所指的事件可以是信号、调用、时间段或状态的一个改变。
    • 监护条件(Guard):是一个方块括起来的布尔表达式,它被放在触发事件的后面。监护条件可以引用对象的属性值和触发事件的参数
    • 结果(Effect):对象状态转移后的结果。
  • 一般转换:一般情况下的状态转换是两个不同状态之间的转换。
  • 自身转换:自身转换是指状态可以有返回自身状态的转换
事件
  • 事件的表达式:事件名(参数表)[监护条件]/动作表达式^发送子句
同步条

        在并发状态机中,同步条用于表示多个控制流必须同时到达某个点才能继续执行。

序列图

定义

        时序图,也叫顺序图,或序列图,是一种UML 动态图;时序图通过描述对象之间发送消息的时间顺序显示多个对象之间的交互模式

作用

元素构成

  • 参与者:或称为系统角色,以一个小人图标表示。
  • 对象:以一个矩形表示,在一个系统中可以有多个对象
  • 生命线:生命线就是一条垂直的虚线
  • 激活:也叫会话,或控制焦点,代表时序图中对象执行一项操作的时期,表示该对象被占用以完成某个任务,以一个垂直的窄的矩形表示。对象激活就是在激活条的顶部激活。
  • 片段

片段类型

名称

说明

Alt

选择

Alt片段组合可以理解为if…else if…else条件语句。

Loop

循环

片段重复一定次数,可以在临界中指示片段重复的条件。Loop相当于for语句。

Par

并行

Opt

选项

包含一个可能发生或不发生的序列。Opt相当于if…语句。

Break

中断

配合Loop 使用,循环中返回

Seq

弱顺序

Strict

强顺序

协作图(通信图)

定义

作用

元素构成

活动图

定义

        活动图是一种用于描述系统行为的模型视图,它可用来描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。通常,活动图记录单个操作或方法的逻辑、单个用例或商业过程的逻辑流程。

作用

元素构成

  • 起点和终点
    • 在UML中,活动图的起点用来描述活动图的开始状态,用黑的实心圆表示。活动图的中止点描述活动图的终止状态,用一个含有实心圆的空心圆表示。
  • 组合活动
    • 组合活动是一种内嵌活动图的状态。我们把不含内嵌活动或动作的活动称为简单活动,把嵌套了若干活动或动作的活动称为组合活动。
  • 分叉与结合
    • 分叉表示将一个控制流分成两个或多个并发运行的分支,结合用来表示并行分支在此得到汇合。
  • 分支与合并
    • 在UML 活动图中,分支与合并都是用空心的菱形表示的。分支有一个输入箭头和两个输出箭头,而合并有两个输入箭头和一个输出箭头。
  • 泳道
    • 为了对活动图的职责进行组织而在活动图中将活动状态分为不同的组,成为泳道。每个泳道代表了特定含义的状态职责的部分。在活动图中,每个活动只能明确的属于一个泳道,泳道明确的表示了哪些活动是由哪些对象进行的。每个泳道都有一个与其它泳道不同的名称。

组件图(构件图)

定义

元素构成

  • 端口:端口是UML2.0 引入的概念;端口描述了在构件与它的环境之间以及在构件与它的内部构件之间的一个显示的交互点

关联关系

  • 依赖关系:通过带箭头的线条表示,箭头指向被依赖的组件或接口。
  • 实现关系:通过带空心三角形的线条表示,三角形指向接口。

部署图

定义

作用

元素构成

包图

定义

        包被描述成文件夹,可以用于UML 任何一种图上。它是一种维护和描述系统总体结构的模型的重要建模工具,通过对包中各个包以及包之间关系的描述,展现出系统的模块与模块之间的依赖关系。一个包图可以由任何一种UML 图组成,通常是UML 用例图或者是UML 类图。包图只是把某些类放在一个包中,因此可以看作是类图的一种。

作用

关联关系

包的设计原则

        包的设计原则包括:重用等价、共同重用、共同封闭、无循环依赖、稳定依赖

组合结构图

定义

        组合结构图是一种静态结构图,可以表示一个类的内部成员对象之间的相互关系,是对传统类图的一个补充

元素构成

交互概览图

定义

  • 一个交互概览图是活动图的一种形式,它的节点代表交互图。交互图包含时序图,通信图,交互概览图等。大多数交互概览图标注与活动图一样。例如:起始,结束,判断,合并,分叉和结合节点是完全相同。并且,交互概览图介绍了两种新的元素:交互发生和交互元素。
  • 交互概览图将活动图中的动作改为交互概览图的交互关系。
  • 交互概览图将系统工作流中的每个过程使用时序图或通信图来描述,并通过箭头和判定决策点将这些模型联系起来,构成一个完整的工作流。

元素构成

交互概览图的形式

  • 以活动图为主线,并用顺序图表述细节;
    • 如果你是对工作流进行建模,那么应该先采用活动图来表示工作流的活动控制流,然后再通过顺序图来描述其中一些活动节点的对象控制流,阐述更多实现细节;
  • 以顺序图为主线,并用活动图表述细节
    • 如果你是在为代码的设计、实现进行建模,那么可以先通过顺序图理清对象之间的控制流;然后再通过活动图来表示某些重要的方法、调用的算法流程。

UML图对比

类图与对象图的区别

类图

对象图

在类中包含三个部分:类名,类的属性和类的操作

对象包含两个部分:对象的名称和对象的属性

类的名称栏只包含类名

对象的名称栏包含“对象名”:“类名”

类的属性栏定义了所有的属性特征

对象的属性栏定义了属性的当前值

类中列出了操作

对象图中不包含操作内容,因为对象属于同一个类的对象,其操作是相同的

类中使用了关联连接,关联中使用名称,角色以及约束等特征定义

对象使用链进行连接,链中包含名称,角色

类代表的是对象的分类所以必须说明可以参与关联的对象的数目

对象代表的是单独的实体,所有的链都是1对1的,因此不涉及到多重性

动态图对比

图形

特点

主要区别

顺序图

  1. 展示用例中的行为顺序和对象之间的交互
  2. 强调消息在对象间的发送和接收顺序
  3. 消息按时间顺序从上到下排列
  4. 显示对象实例及生命周期

注重时间顺序,消息如何在对象间发送和接收

协作图

  1. 展示对象之间的关系和交互
  2. 强调对象之间的链接和协作
  3. 使用编号显示消息发送的顺序

注重对象关系和协作,而不是时间顺序

状态图

  1. 展示对象在其生命周期内的状态变化
  2. 描述不同状态之间的转换条件和事件
  3. 强调对象从创建到销毁的整个生命周期中的状态

专注于对象状态变化和转换条件,不关注具体的交互细节

活动图

  1. 展示系统内的业务流程和控制流
  2. 描述各个活动和动作的顺序
  3. 可以表示并发活动和分支流程

强调流程控制和业务流程,适用于描述复杂的工作流程和并行处理

协作图与时序图的对比

特性

时序图

协作图

侧重点

时间顺序

对象关系

显示内容

消息传递的先后顺序和时间线

对象之间的链接和消息传递路径

处理复杂性

适用于复杂的交互场景

适用于简单的交互过程

主要元素

角色、对象、生命线、控制焦点、消息

对象、链接、消息

应用场景

适用于分析复杂的交互场景和系统的动态行为,帮助开发人员理解事件发生的顺序和系统的时间行为

适用于描述对象如何协作完成某个任务,帮助开发人员了解对象间的链接和交互方式,尤其适用于简单的交互过程

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot入门学习笔记

在我们创建了一个Springboot项目之后,我们会看到有很多文件夹和文件 Springboot程序中各类文件的意义 一.pom.xml 在 Spring Boot 项目中,pom.xml(Project Object Model)文件是 Maven 构建工具的核心配置文件。起到项目信息定义…

S-Function

目录 S-Function介绍 生成S-Function的三种常用手段 使用手写S-函数合并定制代码 使用S-Function Builder块合并定制代码 使用代码继承工具合并定制代码 S-Function介绍 我们可以使用S-Function扩展Simulink对仿真和代码生成的支持。例如,可以使用它们&#xf…

ELK之路第一步——Elasticsearch集群的搭建以及踩坑记录

elasticSearch集群 前言一、架构二、下载三、虚拟机相关设置3.1 创建es用户3.2 为建es用户赋权sudo3.3 更换es目录所属用户 四、Elasticsearch配置文件修改4.1 修改elasticsearch.yml4.2 修改jvm.options4.3 修改jdk路径 五、启动六、启动报错七、可视化界面cerebro 前言 Elk&…

二进制方式部署k8s集群

目标任务: 1、Kubernetes集群部署架构规划 2、部署Etcd数据库集群 3、在Node节点安装Docker 4、部署Flannel网络插件 5、在Master节点部署组件(api-server,schduler,controller-manager) 6、在Node节点部署组件(kubelet,kube-proxy) 7、查看集群状态 8、运行⼀个测…

【有啥问啥】DINO:一种改进的去噪锚框的端到端目标检测器

DINO:一种改进的去噪锚框的端到端目标检测器 在目标检测领域,DINO(DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection)是一种创新的端到端目标检测模型,旨在解决传统目标检测算法中的一些关…

基于Multisim的音频放大电路设计与仿真

基本设计要求:设计并仿真实现一个音频功率放大器。功率放大器的电源电压为+5V(电路其他部分的电源电压不限),负载为8Ω电阻。具体要求如下:1)3dB通频带为300~3400Hz,输出…

AI智能爆发:从自动驾驶到智能家居,科技如何改变我们的日常?

内容概要 在这个瞬息万变的时代,AI智能以其惊人的速度崛起,正在以前所未有的方式改变我们的生活。从自动驾驶到智能家居,这一系列创新为我们的日常生活注入了新的活力和便利。从交通安全到居家体验,这些科技不仅仅是工具&#xf…

【Visual Studio】下载安装 Visual Studio Community 并配置 C++ 桌面开发环境的图文教程

引言 Visual Studio 是一个面向 .NET 和 C 开发人员的综合性 Windows 版 IDE,可用于构建 Web、云、桌面、移动应用、服务和游戏。 安装步骤 访问 Visual Studio 的官方下载页面: https://visualstudio.microsoft.com/zh-hans/downloads/运行已下载的 V…

【数据结构与算法】第4课—数据结构单链表OJ练习题

文章目录 1. 移除链表元素2. 反转链表3. 找链表中间节点4. 合并两个有序的链表5. 分割链表6. 链表的回文结构7. 相交链表8. 判断环形链表9. 返回环形链表的入环节点10. 随机链表的复制 1. 移除链表元素 题目 思路 #include <stdio.h> #include <stdlib.h> #include…

【功能安全】技术安全概念TSC

目录 01 TSC定义 02 TSC注意事项 03 TSC案例 01 TSC定义 所处位置 TSC:Technical safety concept技术安全概念 TSR:Technical safety requirement技术安全需求 在系统开发阶段属于安全活动4-6 系统层产品开发示例 TSC目的

传输层UDP

再谈端口号 端口号&#xff1a;标识了主机上进行通信的不同的应用程序 在TCP/IP 协议中我们用“源IP”"源端口号" “目的IP”“目的端口号” “协议号”五元组来标识一个通信 用netstat -n 查看 查看网络信息&#xff0c;我们有两种命令查看网络通信1.用netsta…

力扣刷题(sql)--零散知识点(1)

通过一段时间的刷题&#xff0c;感觉自己的sql能力逐渐上去&#xff0c;所以不会像前三道题一样讲那么详细了&#xff0c;这里主要会讲到一些特殊的知识点和方法。另外&#xff0c;我的建议是做完一个题有好的想法赶紧记录下来&#xff0c;不要想着最后汇总&#xff0c;不然会懒…

通过cv库智能切片 把不同的分镜切出来 自媒体抖音快手混剪

用 手机自动化脚本&#xff0c;从自媒体上获取视频&#xff0c;一个商品对应几百个视频&#xff0c;我们把这几百个视频下载下来&#xff0c;进行分镜 视频切片&#xff0c;从自媒体上下载视频&#xff0c;通过cv库用直方图识别每个镜头进行切片。 下载多个图片进行视频的伪原…

香橙派5(RK3588)使用npu加速yolov5推理的部署过程

香橙派5使用npu加速yolov5推理的部署过程 硬件环境 部署过程 模型训练(x86主机) 在带nvidia显卡(最好)的主机上进行yolo的配置与训练, 获取最终的best.pt模型文件, 详见另一篇文档 模型转换(x86主机) 下载airockchip提供的yolov5(从pt到onnx) 一定要下这个版本的yolov5, …

sass软件登录设定——未来之窗行业应用跨平台架构

一、saas软件开发中登录设计 以为大公司为参考思迅在登录时候需要录入商户号 二、独立商户商户好处 1.每个店铺的账户是独立的&#xff0c;保护商户职员账户信息的相对安全。 2.不同店铺可以试用相同用户名

LDR6020:为VR串流线方案注入高效能与稳定性

随着虚拟现实&#xff08;VR&#xff09;技术的不断发展&#xff0c;VR设备已经成为连接用户与沉浸式体验的重要桥梁。而VR串流线&#xff0c;作为这一技术的重要组成部分&#xff0c;更是承担着传输高质量图像、音频及数据的重任。在这个过程中&#xff0c;一款功能强大、性能…

【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构

从零开始认识IP协议 1 网络层协议1.1 初步认识IP协议1.2 初步理解IP地址 2 IP协议报头3 初步理解网段划分 1 网络层协议 1.1 初步认识IP协议 我们已经熟悉了传输层中的UDP和TCP协议&#xff0c;接下来我们来接触网络层的协议&#xff1a; 网络层在计算机网络中的意义主要体现…

寻找大自然的颜色

走在停停&#xff0c;停停走走&#xff0c;恍惚间一天过去了&#xff0c;转瞬间一年过去了&#xff0c;身边的一切在变化又不在变化&#xff0c;生活是自己的又不是自己的。 今天是个特殊的日子&#xff0c;其实前几天对我而言就算特殊的日子了&#xff0c;一个心里暗暗等待着却…

Maven项目管理工具-初始+环境配置

1. Maven的概念 1.1. 什么是Maven Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。 理想的项目构建&#xff1a;高度自动化&#xff0c;跨平台&#xff0c;可重用的组件&#xff0c;标准化的流程 maven能够自动下载依…

python项目实战——多线程爬虫

多线程爬虫 文章目录 多线程爬虫概念并行并发Python多线程用途threading模块小知识----函数体内pass的用处1. **占位符**2. **控制结构**3. **定义接口**总结 代码解读单线程--串行多线程--并行查看当前程序的线程让主函数等待子线程结束&#xff0c;再运行---.join()join()方法…