UML 标准建模语言

2023-10-10 02:59
文章标签 建模语言 uml 标准

本文主要是介绍UML 标准建模语言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基础知识

定义

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言

分类

功能模型:从用户的角度展示系统的功能,包括用例图。
对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类图、对象图。
动态模型:展现系统的内部行为。包括序列图,活动图,状态图

结构图:是UML模型的静态部分,用于描述软件系统中的概念元素或物理元素,描述了事物的静态特征。
行为图:是UML模型的动态部分,用于描述描述事物之间的交互行为或事物的状态变化,在模型中经常用动词来表示。

UML1.4到UML2.0 部分图的名字变更:
状态图–>状态机图
协作图–>通讯图

在这里插入图片描述
在这里插入图片描述

绘图工具

VISO、Rational Rose、StarUML(韩国)、Web Sequence Diagrams、Timing Designer、Trufun Plato

发展历史

在这里插入图片描述

不同开发阶段用到的图

用例图:了解用户需求
类图:进一步细化需求
状态图、顺序图:开发层面
组件图:多个组件的关系
部署图:组件部署在哪个设备上,设备之间的架构关系

在这里插入图片描述

4+1架构

  • 逻辑视图——类图
    分解系统功能,负责反映出系统内部是如何组织和协作来实现功能的。
  • 开发视图——组件图
    用来描述软件的各个模块的组织方式,包括源程序、程序包、第三方库等。
  • 进程视图——顺序图、协作图(通信图)、状态(机)图、活动图
    主要描述系统的运行特性,关注进程、线程、并发、同步等运行时概念。
  • 物理视图——部署图
    主要描述硬件配置,综合考虑软件系统和安装、运行环境。
  • 场景视图——用例图
    从项目需求入手,将四个视图结合为一个整体,是所有视图的核心。
    逻辑视图、开发视图、进程视图、物理视图,这四个视图的元素需要协同工作以实现场景视图中给出的用例

在这里插入图片描述
在这里插入图片描述

用例图

概念理解

描述角色以及角色与用例之间的连接关系。说明是谁要使用系统,以及他们使用该系统可以做些什么。

用例图被广泛应用于系统的需求建模阶段,并在系统的整个生命周期中被不断细化

从外部定义系统功能,将需求与设计完全分离开来(不关心系统内部如何完成);强调从最终用户的角度来理解软件系统的需求。

三要素

参与者(用户):可以是真实的人,其他系统,进程。 用一个人形状图标表示。
用例:
关系:包括关联关系(Association)、扩展关系(Extend)、包含关系(Include)、泛化关系(Generalization)

依赖关系(dependency) 包括扩展关系和包含关系
表示方法: 用带箭头的虚线表示

参与者

定义

描述的是谁来做
参与者(Actor)是指存在于系统外部并直接与系统进行交互的外部实体的抽象

参与者的表示方法

在这里插入图片描述

用例

定义

描述的是做什么
用例(Use Case)是对一组动作序列的描述, 系统执行这些动作序列来为参与者产生一个可观察的结果值。

注意事项

用例是动宾短语
用例是一个完整的功能,不能是部分功能。(一次完整的人机交互序列)
用例具有观测意义。
用例由请求或者观测触发,不存在没有参与者的用例,也不存在自启动的用例

用例的表示

一个外部可见的功能单元,椭圆形图标,
用例名称可以写在椭圆里面或者椭圆下面
用例名可以使用简单名称,也可以使用路径名

在这里插入图片描述

正确与错误示例

1)错误示例一:功能不完整
在这里插入图片描述
2)错误示例二:不具有可观测意义
在这里插入图片描述

在这里插入图片描述

关系

关联关系

表示方法:用带箭头的实线表示,由参与者指向用例

在这里插入图片描述

泛化关系

泛化关系(generalization)表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。

用来表示参与者之间的关系或者用例之间的关系
表示方法:带空心箭头的实现,
方向:子用例(特殊用例)指向父用例(一般用例)

在这里插入图片描述

包含关系

一个基础用例包含另外几个包含用例
表示方法:带箭头的虚线表示,包含《include》字样
方向:由基础用例指向包含用例

扩展关系

子用例(扩展用例)扩展父(基)用例,扩展是指行为增强
表示方法:子用例指向父用例

在这里插入图片描述

系统边界

用例在系统内部,参与者在系统外部
系统名称在系统边界内部,靠近上面\

在这里插入图片描述

用例规约

1)说明

对用例的具体描述,每一个用例都要有规约

2)包含内容

简要说明
用例名称 ,用例编号 ,参与者 ,用例简述
场景描述
触发器,前置条件 ,基本事件流 ,扩展事件流 ,结论 ,后置条件
其他事项
特殊需求, 扩展点 ,优先级

在这里插入图片描述

用例图示例

在这里插入图片描述

类图

概念理解

类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让开发人员在正确编写代码以前对系统有一个全面的认识

类的组成

类名
属性:权限 属性名:类型
方法 权限 方法(参数):返回类型

类的属性、方法权限

属性和方法权限 private protected friendly public
对应的符号表示依次是 - # ~ +

类名表示

简单类名(类名)
路径类名(包名:类名)

抽象类名和抽象方法使用斜体

类图的画法

在这里插入图片描述

接口的画法

方法发一:接口使用一个带有名称的小圆圈来进行表示。

在这里插入图片描述

方法二:在接口名的上面加一个《interface》 关键字

在这里插入图片描述

关系

关系强弱

泛化=实现>组合>聚合>关联>依赖

意义:能用组合就不用聚合,能用聚合就不用一般关联,能用一般关联就不要用依赖

关系箭头指向总结

在这里插入图片描述

关系含义总结

聚合:has a
组合:contains a
依赖:use a
泛化:is a

泛化关系

1)说明

继承关系,耦合度最大的关系,表示一般与特殊的关系
是一种 is-a 的关系

2)类图

带空心三角箭头的实线来

在这里插入图片描述

实现关系

1)说明

接口与实现类的关系

2)代码

public interface Shape{public double computeArea();public double computePerimeter();
}

3)类图

带空心三角箭头的虚线来表示,方向由实现类指向接口

在这里插入图片描述

组合关系

1)说明

整体与部分的关系,整体与部分是不可分割的,整体实例销毁部分实例也跟着销毁

2)代码

class Computer {private Monitor monitor = new Monitor();private Mouse mouse = new Mouse();public Computer(){monitor = new Monitor();mouse = new Mouse();} 
}class Monitor {
}
class Mouse {
}

2)类图

用实心棱形和实现表示
在这里插入图片描述

聚合关系

1)说明

整体与部分的关系 ,整体与部分是可以分开的,整体实例销毁,部分实例并不会跟着销毁

2)代码

class Computer {private Monitor monitor;private Mouse mouse;public Computer(Monitor monitor, Mouse mouse) {this.monitor = monitor;this.mouse = mouse;}
}class Monitor {
}class Mouse {
}

3)类图

用空心棱形和实线表示

在这里插入图片描述

关联关系

1)说明

A 类拥有B类的成员变量
A 关联 B

2)代码

class Person {private IdCard idCard;
}
class IdCard {
}

3)类图

单向关联

在这里插入图片描述

双向关联

在这里插入图片描述

自关联

在这里插入图片描述

依赖关系

1)说明

依赖关系是类与类之间耦合度最弱的关系
A类中用到了B类
A类中有B类型的成员变量
B类是A类方法的返回类型
B类是A类方法的参数类型
A类的方法中用到了B类

2)示例

A类依赖B类,A类指向b类,用带箭头的虚线表示

在这里插入图片描述

对象图

概念理解

对象图包括对象和对象之间的关系,其中对象是类的实例

对象图作为系统在某一时刻的快照,是类图中的各个类在某一个时间点上的实例及其关系的静态写照

基于类图画对象图

对象的画法

图中对象包括两部分:对象的名称和对象的属性
对象的名称写法:“对象名:类名”
对象的属性写法:“权限 属性名 = 属性值”
对象图中不包括方法,因为所有对象的操作都是一样的
对象图关系只有一对一关系

在这里插入图片描述

举例

在这里插入图片描述

活动图

概念理解

描述活动的顺序,展现从一个活动到另一个活动的控制流,活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程

活动图是面向对象的,而流程图是面向过程的。
活动图可以理解为uml中的流程图

根据用例图细化出活动图

基本符号

起始活动:起始节点,有且仅有一个
结束活动:结束节点,可以有多个
迁移:执行顺序,一个活动执行完后转到下一个活动
对象流:对象
并发分劈:一个活动执行完后同时执行下面几个活动
并发接合:多个活动都执行完后执行下一个活动
泳道:用于区分各个组织所负责的活动部分,例如示例中学生与老师是两个不同的泳道
在这里插入图片描述

举例

在这里插入图片描述

在这里插入图片描述

状态图

概念理解

状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应

状态图由状态和迁移组成

可以用visio工具绘制

元素

状态 分上下两格,上格状态名称,下格是当前系统处于该状态的时候要触发的事件
迁移(转换)从一个状态转换转换成林外一个状态所需要触发的事件

状态

1)种类

简单状态(simple)只有状态名称得状态
组合状态(composite) 含有子状态的状态叫做组合状态
历史状态(history)记录该状态的历史执行状态
结合状态(junction)将两个转换连接成一次就可以完成的转换,状态机中作为一个综合转换一部分的伪状态
起始状态(initial)实心圆点表示,每个状态图有且只有一个起始状态
终止状态(final)内嵌原点表示,状态图可以有多个终止状态

简单状态

只有状态名字

在这里插入图片描述

普通状态

包含状态名字和内容,内容包括入口动作,出口动作,内部动作,内部转换

在这里插入图片描述

历史状态

洗衣机暂停后,会保存当前正在运行的子状态,洗衣机继续工作后会恢复到之前的子状态

要记忆更深层次的嵌套状态使用圆圈加H*

在这里插入图片描述
在这里插入图片描述

并发状态

多个并发状态用虚线分隔。并发状态由个并发子图组成,每个并发子图叫做并发段(并发区域 Concurrent Regions)

在这里插入图片描述

进入节点(Entry point)& 退出节点 (Exit point)

在这里插入图片描述

转移(Transitions)

转移的分类

外部转换
内部转换
入口动作
出口动作

内部转换

在状态1不变的情况下继续进入状态1-1,
反向箭头:同理

在这里插入图片描述

外部转换

退出状态二,重新进入状态2-1
反向箭头同理

在这里插入图片描述

入口动作和出口动作

在这里插入图片描述

自身转换

在这里插入图片描述

转移的组成

源状态(source state)
事件触发(event trigger): 导致转移发生的事件,信号
监护条件(guard condition ): 达到某一条件时,事件才会转移
动作(action):包括进入动作(Entry Action )和退出动作(Exit Action),进入一个状态和退出一个状态所发生的动作,可以理解一个钩子
结果(Effect):对象状态转移后的结果(影响),事件触发后,在进入状态之前会做什么动作 。多个Effect 如果是同样的,可以写成动作
目标状态(target state)

触发事件

在这里插入图片描述

动作

在这里插入图片描述

状态图举例

在这里插入图片描述

时序图

概念理解

时序图(时间顺序图)也叫顺序图、序列图,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作

根据用例图来细化出顺序图,类图。顺序图是动态的。类图是静态的

元素

角色:用一个人形图标表示
对象:使用 “对象名:类名” 表示
生命线:对象下面一条虚线,表示对象存活的时间
控制焦点(Activation):又叫激活条,火花。对象执行某个操作的时间段,在生命线上用一段小矩形表示,可以理解为方法中代码片段
消息:方法调用,接口请求

对象

对象的表示的三种方法

1)对象名:类名
2):类名
3)对象名

图示注意事项

1)交互频繁的对象尽量靠拢
2)初始化整个交互活动的对象放在最左边
3)角色对象是名字,消息是动词

创建对象

在这里插入图片描述

销毁对象

在生命线的尽头用符号X表示

在这里插入图片描述

消息

消息的分类

同步消息
异步消息
返回消息

同步消息:消息的发送者把控制消息传递个消息的接收者,等待接收者返回消息
使用实现+实心三角箭头

异步消息:消息的发送者把控制消息传递给消息的接收者后,继续自己的活动,不等待接受者返回消息
使用实线+线型箭头表示

返回消息:接受者过程调用结束后返回消息
使用实虚线+线型箭头表示

自调用消息
同一对象不同方法的调用

组合片段

片段表示方法

在这里插入图片描述

具体片段表示方法

Opt (选项) 一个可能发生或者不可能发生的序列,

在这里插入图片描述
在这里插入图片描述

Alt (条件/抉择) 达到某种条件才执行Alt片段, 否则执行Else 片段

在这里插入图片描述

Loop (循环)当处于某种条件内,一直循环做代码片段

在这里插入图片描述

Par (并行) 片段中的事件可以交错执行

在这里插入图片描述

Break (中断)循环的临界条件

在这里插入图片描述

Critical (关键)用在par 和seq 中,表示该片段中的事件不能与其他并行片段中的事件交错执行

在这里插入图片描述

Seq (弱顺序) 有多个片段时,涉及同一生命线的消息必须按照顺序发生,如果是不同生命线的消息,可以交错执行

Strict (强顺序)有多个片段时,这些片段必须按顺序发生
Consider (考虑) 此片段描述的消息列表
Ignore (忽略) 此片段未描述的消息列表,但是存在于系统运行中
Assert (断言) 操作片段指定唯一有效序列, 通常用在 Consider 或 Ignore 片段中。
Neg (否定) 此片段中显示的序列不得发生, 通常用在 Consider 或 Ignore 片段中。

顺序图示例

示例一

在这里插入图片描述

示例二

在这里插入图片描述

示例三

在这里插入图片描述

协作图

概念理解

协作图也叫通信图,合作图,是一种交互图

顺序图更强调时间和顺序,而协作图强调对象的交互关系。

两都表示对象间的关系,但是表述的方式不同,协作图更有利于理解对给定对象的所有影响。

在顺序图上,对象的初始化和消亡的时间是很清楚的,但是协作图中无法显示。

提倡在分析中使用顺序图,在设计中使用协作图。

随着对象和消息数量的增多,理解协作图将越来越困难。

两者在语意上是互通的,可以互相转换。

元素

对象:用长方形框表示对象。具体细节同时序图
连接:使用实线标记两个对象之间的连接。
消息:由标记在连接上方的带有标记的箭头表示。

协作图举例

在这里插入图片描述

组件图

概念理解

组件图又称构建图,软件系统中遵从并实现一组接口的物理的、可替换的软件模块

组件代表系统的一个物理实现块,代表逻辑模型元素如类、接口、协同等的物理打包

一般来说,组件就是一个实际的文件或者多个文件组成的可执行程序,比如一个jar包

组件是可以部署的,是一组类通过协作完成的,组件是通过接口访问的

元素

组件:组件可以是二进制文件、源码文件、可执行程序
接口:一组操作的集合,是组件提供的服务
部件:组件的一部分
端口:被封装的组件与外界的交互点
连接件(关系):在特定语境下组件中两个部件之间或者两个端口之间的通信关系,包括关联关系和泛化关系

组件

组件的分类

  1. 配置组件(Deployment Component):运行系统需要配置的组件,是形成可执行文件的基础—操作系统、JAVA虚拟机、DBMS;
  2. 工作产品组件(Work Product Component):包括模型、源代码和用于创建配置组件的数据文件,它们是配置组件的来源—UML图、java类和数据库表;
  3. 执行组件(Execution Component):在运行时创建的组件,是最终可运行的系统产生的允许结果—.net组件

组件的表示方法

1)表示方法一:由左侧带有两个突出小矩形的矩形来表示

在这里插入图片描述

2)表示方法二:带《component》的矩形表示,右上角带由表示方法一的形状
在这里插入图片描述

关系

实现关系

在这里插入图片描述

依赖关系

在这里插入图片描述

接口(UML2.0)

在这里插入图片描述

端口(UML2.0)

端口由小方块表示,端口可以有端口名

端口描述了在构件与它的环境之间以及在构件与它的内部构件之间的一个显示地交互点

端口是一个封装构件的显示的对外窗口,所有进出构件的交互都要通过端口。

使用端口能在更大的程度上增加构件的封装性和可替代性。

端口是构件的一部分,端口的实例随着它们所属的构件的实例一起被创建和撤消。

在这里插入图片描述

连接器

定义

端口与端口之间的连接

连接器的分类

直接连接器
接口连接器
委派连接器(内部端口与外部端口)

在这里插入图片描述

组件图示例

示例一(对系统建模)

在这里插入图片描述

示例二(对源代码建模)

在这里插入图片描述

示例三(对可执行程序建模)

部署图

概念理解

部署图(Deployment Diagram)用于描述系统硬件的物理拓扑结构以及在相关节点上运行的软件工件(artifacts)。
工件是系统开发过程产生的具体的元素,如可执行文件、库、档案文件、数据库模式、配置文件等。

部署图中的节点是硬件部分,组件图中的组件时软件部分
组件运行于节点之上,见示例

元素

节点(node)
关系(relationship):节点之间的关系

节点

节点的分类

1)UML1.0节点的分类

处理器:具有计算能力的节点。例如服务器。用带阴影立方体表示
设备:不具有计算能力,可能作为处理器的输入输出或者外部连接。例如打印机,读卡器。用全空的立方体表示

在这里插入图片描述

2)UML2.0节点分类

设备:服务器
执行环境:一种软件节点

在这里插入图片描述
在这里插入图片描述

节点名称的表示

简单名称:数据库服务器
受限名称:Server::数据库服务器(节点类型:节点名称)

关系

1)设备与设备之间的关系通常为物理连接
在这里插入图片描述
2)执行环境与执行环境的关系通常为通信协议。常见的协议有http,jdbc ,odbc,rmi,rpc,webservice
在这里插入图片描述

部署图示例

在这里插入图片描述

这篇关于UML 标准建模语言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177465

相关文章

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

C 标准库 - `<float.h>`

C 标准库 - <float.h> 概述 <float.h> 是 C 标准库中的一个头文件,它定义了与浮点数类型相关的宏。这些宏提供了关于浮点数的属性信息,如精度、最小和最大值、以及舍入误差等。这个头文件对于需要精确控制浮点数行为的程序非常有用,尤其是在数值计算和科学计算领域。 主要宏 <float.h> 中定义了许多宏,下面列举了一些主要的宏: FLT_RADIX:定义了浮点数的基数。

UML- 统一建模语言(Unified Modeling Language)创建项目的序列图及类图

陈科肇 ============= 1.主要模型 在UML系统开发中有三个主要的模型: 功能模型:从用户的角度展示系统的功能,包括用例图。 对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。 动态模型:展现系统的内部行为。 包括序列图、活动图、状态图。 因为要创建个人空间项目并不是一个很大的项目,我这里只须关注两种图的创建就可以了,而在开始创建UML图

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

标准IO与系统IO

概念区别 标准IO:(libc提供) fopen fread fwrite 系统IO:(linux系统提供) open read write 操作效率 因为内存与磁盘的执行效率不同 系统IO: 把数据从内存直接写到磁盘上 标准IO: 数据写到缓存,再刷写到磁盘上

第三章 UML类图简介(设计模式笔记)

第三章 UML类图简介 3.1类 3.2接口 名字层必须有<> 3.3 泛化(继承)关系 箭头终点端指向父类(空心三角形) 3.4 关联(组合1)关系 B类是A类的成员变量 ,称A关联B。 箭头终点端指向B 3.5 依赖(组合2)关系 B类是A类的某个方法的参数 ,称A依赖B。 箭头终点端指向B(虚线) 3.6 实现关系 箭头终点端指向接口(虚线,空心

通信工程学习:什么是AM标准调幅

AM标准调幅       AM标准调幅,即Amplitude Modulation(振幅调制),是一种在电子通信中广泛使用的调制方法,特别是在无线电载波传输信息方面。以下是关于AM标准调幅的详细解释: 一、AM标准调幅的定义与原理 AM标准调幅的定义:        AM调幅是通过改变载波信号的振幅(即信号强度或电压幅度),使其与信息信号(如音频、视频等)同步变化,从而实现信息的传

【电子通识】洁净度等级划分及等级标准

洁净度常用于评估半导体、生物制药、医疗、实验室及科研院所、新能源等领域的洁净室、无尘室或者无菌室等环境。         一般来说,晶圆光刻、制造、测试等级为100级或1000级的洁净间,百级洁净间要求空气中0.5微米的尘埃粒子数不得超过每立方米3520个;等级为1000级的洁净间要求0.5微米的尘埃粒子数不得超过每立方米35200个。         晶圆切割或封装工序一

标准库标头 <filesystem> (C++17)学习

此头文件是文件系统支持库的一部分。本篇介绍filesystem命名空间的一些函数。 函数 在命名空间 std::filesystem 定义 absolute (C++17) 组成一个绝对路径 (函数) canonicalweakly_canonical (C++17) 组成一个规范路径 (函数) relativeproximate (C++17) 组成一个相对路径 (函数) copy (C

搭建服务器机房的标准是什么?

企业在进行选择服务器时,可能会将服务器放置公司,但是大多数企业还是会选择服务器租用或托管服务,因为专业的IDC服务商通常能够提供良好的机房环境来进行放置服务器,接下来小编就主要来介绍一下搭建服务器机房的标准都有哪些吧! 首先对于机房的位置选择要保证原理水源、油库和化工厂等危险的场所,并且不应该建设在容易受到水灾和地震等自然灾害影响的地区当中,防止出现不可遏制的情况发生,造成重大的经济损失。