uml 时序图_程序猿都应学习的语言:看 25 张图学 UML

3a6577b3f4d9dc0f4c79f7851a3ce9b2.png

作者 | 逸珺

责编 | 屠敏

来源 | 嵌入式客栈

作为程序猿都最好掌握的一门语言,那就是UML(Unified Modeling Language),统一建模语言(UML)是软件工程领域中一种通用的开发建模语言,旨在提供一种可视化系统设计的标准方法。是开发人员、系统设计人员交流的有效工具。今天来分享一下UML的一些体会,如有错误请帮忙指正。

注:UML工具有很多,本文描述的基于Enterprise Architect。

9c20b86d9920f69649da022c2058ad60.png

UML前世今生

UML时间进化线:

3f385631178340ed8cae7f53c19d89bd.png

说到UML不得不提的三位大神,Grady Booch、Jacobson、James Rumbaugh,三位是UML的创始人,均为软件工程界的权威,除了著有多部软件工程方面的著作之外,在对象技术发展上也有诸多杰出贡献,其中包括Booch方法、对象建模技术(OMT)和Objectory(OOSE)过程。三人被合称为“UML三友”。

面向对象编程方法以及描述符号进化历史:

913bc5e4a0deb4d69279e3c692a66399.png

然后逐步发展到UML2.5标准。

UML目前的官方组织是https://www.uml.org/

6a0965e504b39447d8a2972cf6f4434d.png

宏观看UML

UML用图去描述一个软件系统,从需求、设计、到部署的方方面面都以及覆盖。那么从总体上先来看看UML有哪些图呢?

从描述系统建模目的,UML图可以分成下面4大类:

8db4873e2c5b2e508a0cb16eea7b1081.png

从建模的动态视角/静态视角,可以这样去分类:

b63f2e0dbc9a8e1fa7f55c9a46775f10.png
96642cecd5face2ffd03885c94a6170c.png

微观看UML

UML由基本的组成可以从三大块去了解:事物/关系/图

事物(Things)

  • 构件事物:UML模型的静态部分,描述概念或物理元素
  • 类:具有相同属性相同操作 相同关系相同语义的对象的描述
  • 接口:描述元素的外部可见行为,即服务集合的定义说明
  • 协作 描述了事物间的相互作用的集合
  • 用例:代表一个系统或系统的一部分行为,是一组动作序列的集合
  • 构件:系统中物理存在,可替换的部件
  • 节点:运行时存在的物理元素
  • 另外,参与者、信号应用、文档库、页表等都是上述基本事物的变体
  • 行为事物:UML模型图的动态部分,描述跨越空间和时间的行为
  • 状态机:描述事物或交互在生命周期内响应事件所经历的状态序列
  • 交互:实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列、链接
  • 分组事物:UML模型图的组织部分,描述事物的组织结构
  • 注释事物:UML模型的解释部分,用来对模型中的元素进行说明,解释

关系(Relationship)

下面是UML的基础4大关系:

  • 实现(realization)是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约
  • 泛化(generalization)是一种特殊/一般的关系。也可以看作是常说的继承关系
  • 关联(association)是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系
  • 依赖(dependency)是两个事物之间的语义关系,其中一个事物(独立事物)发生变化,会影响到另一个事物(依赖事物)的语义

更为详细的描述,看看下面这些表吧:

d93b071f219383501a863be5c4aa2f56.png
defc4a8e5e017aa95a34e4bbdbb1d667.png
1f3e639e267f8a522942022c4e64921b.png
a14790a54cb78183731ce28b79053d2f.png
49109ff82d9ecc83192db0bb6c850560.png

图(Diagram)

  • 用例图/Use Case Diagram:用于描述系统的参与者与用例间的关系
  • 类图/Class Diagram:•类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的逻辑结构,是一种静态建模方法
  • 对象图/Object Diagram: 描述系统类在某个时刻的具体实例化情况,类似系统某时刻对象角度的快照
  • 序列图/Sequence Diagram:描述对象间动态行为在一段时间的行为序列
  • 时序图/Timing Diagram:描述对象在时间维度的动态行为
  • 通讯图/Communication Diagram:类似序列图,相对序列图强调时间维度,通讯着重描述协作的逻辑关系
  • 相互作用概视图/Interaction Overview Diagram:系统高层级的交互描述,可以引用其他序列图、时序图、通讯图、以及交互概视图
  • 复合结构图/Composite Structure Diagram:复合结构图反映了类,接口或组件(及其组件)的内部协作属性来描述一个功能
  • 信息流图/Info Flow Diagram:描述信息在对象间、构件、包、参与者之间的流向
  • 状态机图/State Machine Diagram:用于描述元素在不同状态间如何迁移的逻辑联系
  • 活动图/Activity Diagram:常用于描述系统级行为的实现建模。需要考虑多种因素:逻辑条件、并发、中断、数据访问等等
  • 封装图/包图/Package Diagram:包图描绘了将模型元素组织到包中以及它们之间的依赖关系(包括包导入和包扩展等)。它们还提供相应命名空间的可视化。
  • 构件图/Component Diagram:用于高层级描述系统的组成构件,以及构件间的依赖关系
  • 部署图/Deployment Diagram:描述系统的部署方式(如何部署、部署在什么环境、硬件环境、软件环境等等)
  • .....
24a56c30d7723d19afe86d99b7d62481.png

用例图

998078eadae8ac5e322703252796213b.png
  • 参与者/Actor:图中的小人,表示系统的用户,如人/机器/内部的其他子系统/硬件等
  • 用例/Use Case:图中的椭圆框及描述,描述参与者与系统交互所实现的工作内容经常会配合附加文本进行详细描述。
  • 边界/Boundary:方框,描述框里的都是属于建模对象里的东东,建模的时候可以方便识别与其他系统交互的接口

用例图在UML语言中处于至关重要的位置,所谓4+1架构设计,用例图用于描述系统需求,处于核心位置。属于Use-case drivering 大法的心脏。

af9f87094ad3e17ab1861b8c8f2cc6ed.png
093b1fc5a3ed38c973b4a71bb2f0d9c3.png

类图/ Class Diagram

70545d530e7961b31656691a28475d4e.png

这个类图描述一个图像管理系统。

b3c7980ef491176e33dc0d91a828c352.png

对象图/Object Diagram

1139a63fa1ffa5784118dc00400a1bf7.png

描述一个图书管理系统某时刻对象的快照。

0c3d5c293f927a875f84ec54ecc4258c.png

序列图/Sequence Diagram

6972feb3ee0835a79728aa1e79c40d30.png

此图说明了在交互中满足视图历史用例所需的对象。对象之间的消息流为用户提供了事务历史信息。描述图书管理系统如何查阅历史的操作系列,反应了客户端与各对象间消息传递关系。

c38c24a964db042eeed1fbc77ebc8089.png

时序图/Timing Diagram

这个类似于芯片的时序图概念。下图描述用户在有卡/无卡对系统访问的时间线场景图:

7284701ae9e7dfd172cce75a9516630f.png
4f70a14be029612c28d05714f80c026d.png

通讯图/Communication Diagram

04a18123268de19cd7028876779d045c.png

这是一个嵌入式系统的UML建模,该图描述一个压力控制系统两个主要用例的实现:

  • 压力控制循环,上面的数字以及箭头表示消息传递流向
  • 通过HMI设置压力
2ef2e725733a3092766fbacf8eb886f9.png

交互概视图/Interaction Overview

fdd5a9740679ca78b5cd5639eb61f06b.png

描述了一个图书管理系统如何从订单发起后的所有交互概要图,每个子图上面的ref表示引用了一个更详细的图,比如Add to Shopping Basket 放入购物篮的具体动作:

e1eb9dcceb2d89c6487940f111b8cfce.png
f92d97dafc6196ee5939d3432dd2db0a.png

复合结构图/Composite Structure

dc3f89584de4e49e7b438d61a73b3855.png
9430b4032760b371296de0fd67e6d935.png

状态机图/State Machine Diagram

21e006763362cf237b1eb75e69e0d8fe.png

这是描述图书订购系统如何登录的状态机图

e02c954498521c4d2ca1e5de00f73247.png

活动图/Activity Diagram

常见的活动图

1b6b15bf55f7f81a80b4726a46ae32e0.png

带泳道活动图

ed49d045e36460cfb1d376bc7022c902.png

将活动分组,明确该组活动负责的对象,对象负责该组的全部活动

子活动图

0dff86d6928ecbfc63fd35a558f8660b.png

活动图中,某几个活动可以组成一个内聚的子活动。

可中断活动图

d8809d32a1d01c20c9211a50eeb1a563.png

这里的中断并不严谨,本图中表示这个活动事物是可以取消的。

247717f9ebcd3a17b345e9e5849c80a9.png

封装图/包图/Package Diagram

c4779fce1123efb37d2f695f532abdd7.png
eb3a2d1f008b508582aa8a1b9ba98ec9.png

构件图/ Component Diagram

caf6d579a466375436d567d7973b41d0.png

用以描述构件之间的相互关系。

8842718c1a9171b53651d28e633c9759.png

部署图/Deployment Diagram

3facc3ff1846bd2601fadbbcf35d19af.png
7006275f44023a584eda362e765d3033.png

总结一下

本文走马观花的将UML大致梳理了一下,并结合EA的例图,将常见的UML图的作用大致描述一遍,供大家参考。对于软件开发人员而言,UML还是很有必要学习掌握的。

55dfeb7bd55ac48ec63b9da0e6b3cff0.png

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

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

相关文章

was6 linux 卸载,重新安装was61

昨天折腾一天,或者是少安装了compat-libstdc-33包导致app2出不来安装向导,或者是修改了主机名导致./addNode.sh xxx执行异常,诸多不爽后,决定从头再来!手动删除/was下所有文件,导致再次安装时,报…

新服务器的配置

新服务器的安装好那三款软件后还是打不开会报错,去服务器管理网站增加执行权即可。 转载于:https://www.cnblogs.com/longhun/p/4266665.html

最大公约数python语言算法_使用Python求解最大公约数的实现方法

这篇文章主要介绍了使用Python求解最大公约数的实现方法,包括用Python表示欧几里得算法和Stein算法的求解原理.1. 欧几里德算法欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数。其计算原理依赖于下面的定理:定理: gcd(a, b) …

Linux下好用的日志库,我使用過的Linux命令之tailf - 跟蹤日志文件/更好的tail -f版本...

用途說明tailf命令幾乎等同於tail -f,嚴格說來應該與tail --followname更相似些。當文件改名之后它也能繼續跟蹤,特別適合於日志文件的跟蹤(follow the growth of a log file)。與tail -f不同的是,如果文件不增長,它不會去訪問磁盤…

Android学习笔记(四十):Preference的使用

Preference直译为偏好,博友建议翻译为首选项。一些配置数据,一些我们上次点击选择的内容,我们希望在下次应用调起的时候依旧有效,无须用户再一次进行配置或选择。Android提供preference这个键值对的方式来处理这样的情况&#xff…

telegr怎么连接不上_无线网密码正确但是手机连接不上wifi?

现在企业、家庭、餐厅、宾馆到处都有WiFi无线网络信号,为大家的电脑、手机提供免费的无线网络服务,但是有的时候明明有信号而无线网密码正确却连不上,是多么痛苦的一件事情。那么无线网密码正确但是手机连接不上wifi怎么回事?下面…

linux录制远程麦克风声音,在Linux上录制麦克风到wav或mp3文件?

Niki Yoshiuc..5它当然是可能的,但它并不像从文件中读取那么简单.最简单的方法是使用一个库,例如PortAudio.PortAudio是跨平台的,使用起来相当简单.PortAudio将允许您从麦克风录制,但它对文件格式一无所知.为此你需要另一个图书馆.我从来没有使用它,但libsndfile库可能会做你需…

hdu3652(数位dp)

要求找出范围内含有“13”且能被13整除的数字的个数 可以使用数位dp dp[i][j][0] 表示长度为i,余数为j,不含13的数字的个数 dp[i][j][1] 表示长度为i,余数为j,3开头的数字的个数 dp[i][j][2] 表示长度为i,余数为j&…

怎么查看电脑是不是禁ping_怎么查看电脑内存的大小,找回丢失的内存,电脑小技巧...

小A自己组装了一台电脑,配件都是在jd买了。他高高兴兴的安装了系统准备开始体验一把,同事突然问,你的电脑内存是多少,他点来点去也没找到答案。他只知道他买了一个8G的内存条。.我们一般查看内存有两个地方。一我们的电脑 属性 安…

Linux 创建网页服务,Linux使用Node.js建立访问静态网页的服务实例详解

Linux使用Node.js建立访问静态网页的服务实例详解一、安装node.js运行所需要的环境,:二、创建node目录(/node/www),并在目录下创建node.js服务文件server.jsvar fs require(fs);//引入文件读取模块var documentRoot ‘/node/www;//需要访问…

finereport字段显示设置_QA | 表单如何设置字段显示逻辑?

Hi,大家好!表姐又来给大家答疑解惑啦!这一期的Q&A我们来聊聊表单如何设置字段显示逻辑。字段显示逻辑是什么?字段显示逻辑是指根据设定字段条件,显示或隐藏特定的字段,可以实现选择不同内容&#xff0c…

数据库管理之数据表管理(1)

数据类型 创建数据表 语法 CREATE TABLE 表名 ( 字段名1 数据类型 列的属性 列约束, 字段名2 数据类型 列的属性 列约束, 字段名3 数据类型 列的属性 列约束, … )列属性的格式: [NULL|NOT NULL] [IDENTITY(标识种子, 标识增量)]列约束的格式: [CONST…

python colormap_Matplotlib python更改colormap中的单色

我使用python中的colormap来绘制和分析矩阵中的值。我需要将白色与每个等于0.0的元素相关联,而对于其他元素,我希望有一个“传统”颜色映射。查看Python Matplotlib Colormap我修改了pcolor使用的字典:dic {red: ((0., 1, 1),(0.00000000001…

AngularJs-指令和指令之间的交互(动感超人)

前言: 上节我们学习到了指令和控制器之间的交互,通过给指令添加动作,调用了控制器中的方法。本节我们学习指令和指令之间是如何交互的,我们通过一个小游戏来和大家一起学习,听大漠老师说这是国外的人写的demo&#xff…

linux中有fd set函数吗,LINUX下FD_SET介绍

刚刚了解了linux下select系统调用,函数原型是#include #include intselect(int maxfdpl, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval *timeout);如何给readset, writeset, exceptset这3个参数中的每一个参数指定一个或多个描述符…

vba 指定列后插入列_在不同的列左侧插入指定数量的空白列

任务: 在不同的列左侧插入指定数量的空白列(本例是要求在每列左侧插入第2行数字对应的空白列) 插入空白列前 插入空白列后 vba代码如下: Sub 在不同的列左侧插入指定数量的空白列() Dim m, n, i As Integer For n 5 To 1 Step -1 Sheets("Sheet1").C…

怎么监听linux防火墙,linux怎么查看防火墙是否开启并清除防火墙规则?

iptables是linux下的防火墙组件服务,相对于windows防火墙而言拥有更加强大的功能,下面我们就来看看linux系统中关于iptables的一般常见操作,判断linux系统是否启用了iptables服务,并清除防火墙规则的教程。一、检查iptables是否安…

手册如何看运放的db_如何处理金属离子与配体之间的配位键?

更多资讯,请访问www.yinfotek.com 或关注微信公众号“殷赋科技”。殷赋学术交流2群已建立,需求加群的朋友,请在公众号输入“加群”,验证后即入群。1A:请教大家一个问题:在做对接模拟的过程中蛋白活性中心存在重要金属离…

修改PHP上传文件的大小限制

Warning: POST Content-Length of 35052172 bytes exceeds the limit of 8388608 bytes in Unknown on line 0 该条警告是PHP.ini中的配置有关。 上述错误信息的大致意思是,我们使用POST请求提交的数据大小超过了服务器的最大限制数 出现上述错误的原因是&#xff0…

linux如何得到本机地址,Linux下如何得到本机所有IP地址及MAC地址

已知:gethost and gethostbyname,测试只能得到一个IP地址。---------------------------------------------------------------原文:http://www.chinaunix.net/jh/23/161236.html---------------------------------------------------------------整理后…