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

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.kler.cn/news/365921.html

相关文章:

  • PHP PDO:安全、灵活的数据持久层解决方案
  • 未来汽车驾驶还会有趣吗?车辆动力学系统简史
  • 在C及其他语言里运行shell命令的一点心得
  • Lua 语言中的注释详解
  • 怎么区分主谓宾I love you与主系表I am fine? 去掉宾语看句子完整性 主系表结构则侧重于描述主语的状态、特征或性质
  • Node + HTML搭建自己的ChatGPT [基础版]
  • HW支持-定时扫描局域网内所有设备MAC不在白名单则邮件提醒
  • winmm劫持详解
  • postman使用——在公司的项目落地回顾总结
  • 【计算机操作系统】课程 作业二 进程与线程 408考研
  • uniapp使用easyinput文本框显示输入的字数和限制的字数
  • WUP-MY-POS-PRINTER 旻佑热敏打印机票据打印uniapp插件使用说明
  • WebGL 3D基础
  • 常见Linux命令笔记
  • 【python爬虫】request发请求时需要携带cookies请求举例
  • 计算机网络:网络层 —— IPv4 协议的表示方法及其编址方法
  • 定位基站共线
  • 【卡尔曼滤波】观测模型包含输入的线性卡尔曼滤波
  • C++的汉诺塔
  • 【C语言教程】【嵌入式编程】(五)驱动开发实战(六)高级实践项目(七)附录
  • 10分钟使用Strapi(无头CMS)生成基于Node.js的API接口,告别繁琐开发,保姆级教程,持续更新中。
  • uniapp写移动端,适配苹果手机底部导航栏,ios安全区问题,苹果手机遮挡底部信息,uview的u-action-sheet组件
  • Go语言基础教程:递归
  • SpringBoot的自动装配原理详解
  • 防火墙是什么?科普为保护应用层而生的可靠工具
  • 排序算法 —— 冒泡排序