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. 可以表示并发活动和分支流程

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

协作图与时序图的对比

特性

时序图

协作图

侧重点

时间顺序

对象关系

显示内容

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

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

处理复杂性

适用于复杂的交互场景

适用于简单的交互过程

主要元素

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

对象、链接、消息

应用场景

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux初阶——信号

一、预备 1、信号的处理方式 1.1. 默认动作 当收到一个信号时,就执行这个信号的默认动作。 1.2. 忽略 当收到一个信号时,就忽略执行这个信号的默认动作。 1.3. 自定义动作 当收到一个信号时,就执行信号的自定义动作。 2、硬件中断 你…

IT监控对接华三CAS云管平台监控方案

概述 CAS云管平台是新华三集团自主研发的虚拟化和云计算管理平台,它主要面向数据中心,提供虚拟化和云计算管理,在教育行业、网络安全领域、高性能计算业务、企业IT部门等领域被广泛应用。在信创国产化背景下,以CAS、Fusion等为代…

Ajax:表单 模板引擎

Ajax&#xff1a;表单 & 模板引擎 form 表单form 属性 Ajax操控表单事件监听阻止默认行为收集表单数据 模板引擎art-template{{}}语法原文输出条件输出循环输出过滤器 原理 form 表单 在HTML中&#xff0c;可以通过<form>创建一个表单&#xff0c;收集用户信息。而采…

基于centos7.9搭建在线购物网站

mall 搭建数据库配置Java配置jar包 一款模仿天猫的在线购物网站&#xff0c;基于centos7.9搭建 搭建数据库 官网下载软件包后上传 基于centos7.9搭建mysql5.6.42 [rootmysql02 ~]# ls anaconda-ks.cfg init.sh MySQL-5.6.42-1.el7.x86_64.rpm-bundle.tar解压 tar -xf My…

Python 自动化运维:Python基础知识

Python 自动化运维&#xff1a;Python基础知识 目录 &#x1f4ca; Python 基础复习 数据类型、控制结构与常用函数面向对象编程&#xff08;OOP&#xff09;与类的使用函数式编程概念与 lambda 表达式异常处理与日志记录的基本实践 1. &#x1f4ca; Python 基础复习 数据…

【论文阅读】Tabbed Out: Subverting the Android Custom Tab Security Model

论文链接&#xff1a;Tabbed Out: Subverting the Android Custom Tab Security Model | IEEE Conference Publication | IEEE Xplore 总览 “Tabbed Out: Subverting the Android Custom Tab Security Model” 由 Philipp Beer 等人撰写&#xff0c;发表于 2024 年 IEEE Symp…

word技巧:如何禁止复制word文件内容?

在文档管理与协作的复杂环境中&#xff0c;确保文档内容的完整性和安全性至关重要。Microsoft Word作为一款广泛使用的文字处理软件&#xff0c;提供了强大的限制编辑功能&#xff0c;允许用户控制对文档内容的修改权限&#xff0c;有效防止未经授权的更改。本文将深入解析Word…

LabVIEW如何学习数据结构和算法

作为LabVIEW程序员&#xff0c;在学习数据结构和算法时&#xff0c;由于LabVIEW以图形编程为主&#xff0c;与传统编程语言的学习方式有些不同。因此&#xff0c;理解算法思想并将其在LabVIEW中实现是关键。 ​ 1. 夯实编程基础概念 LabVIEW与文本编程语言在实现逻辑上的方式…

Maven项目报错:invalid LOC header (bad signature)

文章目录 Maven项目报错&#xff1a;invalid LOC header (bad signature)1. Maven项目加载或Pom.Xml刷新后仍出现如下错误2. 解决方法 Maven项目报错&#xff1a;invalid LOC header (bad signature) 1. Maven项目加载或Pom.Xml刷新后仍出现如下错误 错误提示&#xff1a; in…

方形件排样优化与订单组批问题探析

方形件排样优化与订单组批问题是计算复杂度很高的组合优化问题&#xff0c;在工业工程中有很广泛的应用背景。为实现个性化定制生产模式&#xff0c;企业会选择订单组批的方式&#xff0c;继而通过排样优化实现批量切割&#xff0c;加工完成后再按照不同客户需求进行分拣&#…

高质量短视频素材平台推荐

在当今短视频内容日益增长的时代&#xff0c;拥有高质量的素材显得尤为重要。以下是一些值得关注的短视频素材平台&#xff0c;它们各具特色&#xff0c;适合不同需求的创作者。 蛙学网 蛙学网专注于提供高质量的短视频素材&#xff0c;适合各种创作需求。虽然该平台需要订阅&a…

DerpNStink: 1渗透测试

靶机&#xff1a;DerpNStink: 1 <https://www.vulnhub.com/entry/derpnstink-1,221/> 攻击机&#xff1a;kail linux 2024 目标&#xff1a;获得4个flag 1,将两台虚拟机网络连接都改为NAT模式&#xff0c;并查看靶机的MAC地址 2&#xff0c;攻击机上做主机扫描发现靶机 靶…

#HarmonyOS:页面和自定义组件生命周期

页面生命周期 即被Entry装饰的组件生命周期 onPageShow&#xff1a;页面每次显示时触发一次&#xff0c;包括路由过程、应用进入前台等场景。onPageHide: 页面每次隐藏时触发一次&#xff0c;包括路由过程、应用进入后台等场景。onBackPress: 当用户点击返回按钮是触发 组件…

自定义类型:联合和枚举【上】

自定义类型&#xff1a;数组&#xff0c;结构体&#xff0c;联合体&#xff0c;枚举。前面一些我们已经讲过了&#xff0c;接下来我们讲联合体和枚举。 一.联合体 1.联合体类型的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成员可以不同…

网络搜索引擎Shodan(2)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 声明&#xff1a;本文主要用作技术分享&#xff0c;所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险&#xff0c;并遵循相关法律法规。 感谢泷…

(南京观海微电子)——GH7006-01_HKC_B3-PV043WVQ-N80_MIPI_LVDS_RGB原理及代码介绍

1. 原理 2. 代码 /**************************************************/ // Model - GV050WVQ-N82 // IC - GH7006 // Width - 800 // Height - 480 // REV: - V01 // DATA - 20240621 // INTERFACE- LV…

4.1.2 网页设计技术

文章目录 1. 万维网&#xff08;WWW&#xff09;的诞生2. 移动互联网的崛起3. 网页三剑客&#xff1a;HTML、CSS和JavaScriptHTML&#xff1a;网页的骨架CSS&#xff1a;网页的外衣JavaScript&#xff1a;网页的活力 4. 前端框架的演变基于CSS的框架基于JavaScript的框架基于MV…

质量漫谈一

我知道很多同学看到这类问题&#xff0c;第一反应想要去寻找的就是作为测试角色&#xff0c;应该要如何如何去做&#xff1f;但是今天这里作为质量第一篇&#xff0c;不打算按照这样单角度去写&#xff0c;这类同学可以就此打住&#xff0c;如果在意的话&#xff0c;可关注后续…

excel斜线表头

检验数据验证对象 鼠标放在检验数据 验证对象中间&#xff0c;altenter 之后空格 选中格子&#xff0c;右键单元格格式&#xff0c; 完成 如果是需要多分割&#xff0c;操作一样&#xff0c;在画斜线的时候会有区别&#xff0c;在插入里面用直线画斜线即可 在表格插入的时…

采用Excel作为可视化设计器的开源规则引擎 NopRule

决策树和决策矩阵是业务人员可以直观理解的复杂IF-ELSE逻辑表达形式&#xff0c;也是规则引擎中最常用、最有用的部分。常见的规则引擎如Drools虽然提供了更加丰富的功能特性集&#xff0c; 特别是所谓的RETE算法可以用于高效复用多次重复出现的表达式片段&#xff0c;但在实际…