0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

程序员都应学习的语言:看25张图学UML

电子设计 来源:电子设计 作者:电子设计 2020-12-14 23:09 次阅读
首发:嵌入式客栈
作者:逸珺

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

注:UML工具有很多,本文描述的基于Enterprise Architect。最近微信平台排序规则升级了,如不想错过小号文章,建议给小号加下星标。

UML前世今生

UML时间进化线:


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

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


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

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

宏观看UML

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

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

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

微观看UML

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

事物(Things)

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

关系(Relationship)

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

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

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

图(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:描述系统的部署方式(如何部署、部署在什么环境、硬件环境、软件环境等等)
  • .....

用例图

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

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

类图/ Class Diagram


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

对象图/Object Diagram

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

序列图/Sequence Diagram


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

时序图/Timing Diagram

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

通讯图/Communication Diagram


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

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

交互概视图/Interaction Overview

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

复合结构图/Composite Structure

状态机图/State Machine Diagram


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

活动图/Activity Diagram

常见的活动图

带泳道活动图

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

子活动图


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

可中断活动图

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

封装图/包图/Package Diagram

构件图/ Component Diagram

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

部署图/Deployment Diagram

总结一下

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

本文辛苦原创分享,如果觉得有价值也请帮忙点赞/转发支持,不胜感激!

_END_—

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UML
    UML
    +关注

    关注

    0

    文章

    122

    浏览量

    30858
  • 深度学习
    +关注

    关注

    73

    文章

    5500

    浏览量

    121115
收藏 人收藏

    评论

    相关推荐

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 0次下载
    TMS320C55x DSP CPU<b class='flag-5'>程序员</b>参考补充

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 0次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册

    机械革命发布CODE AI程序员

    近日,英特尔新质生产力技术生态大会在成都举行,机械革命作为重要参展商带来了多款明星产品引爆全场!其中更是在AI PC软件生态产品发布分论坛上,Intel、智谱、机械革命三方联合发布了专为程序员设计的CODE AI程序员本,成为本次大会的一大亮点。
    的头像 发表于 11-30 10:34 373次阅读

    Linux驱动程序程序员指南

    电子发烧友网站提供《Linux驱动程序程序员指南.pdf》资料免费下载
    发表于 11-22 15:53 0次下载
    Linux驱动<b class='flag-5'>程序</b><b class='flag-5'>程序员</b>指南

    AI编程工具会不会抢程序员饭碗

    AI编程工具可辅助编程,减少手动编码,提升效率,对程序员有积极影响也有挑战。程序员需深化技能、拓宽知识应对。长远看,AI与人类程序员将共生共荣。
    的头像 发表于 11-08 10:17 158次阅读

    第五届长沙·中国1024程序员节开幕

    据官方媒体报道,10月24日;  第五届长沙·中国1024程序员节在湖南湘江新区开幕;本次中国1024程序员节以“智能应用新生态”为主题。设置有岳麓对话、技术英雄会、主题峰会及赛事、展览等活动,一场
    的头像 发表于 10-25 15:42 192次阅读

    程序员节视频创意大赛,用串口屏赢取千元大奖

    10月24日,程序员专属的节日里,我们盛大开启“程序员节视频创意大赛”特别活动!这不仅是一场视觉的盛宴,更是智慧与创意的璀璨碰撞。我们诚挚邀请每一位程序员及编程爱好者,拿起你的镜头,记录下那些平凡日子中的不凡瞬间,让编程的魅力与
    的头像 发表于 07-08 10:38 72次阅读
    <b class='flag-5'>程序员</b>节视频创意大赛,用串口屏赢取千元大奖

    程序员节视频创意盛宴,邀您共襄盛举!

    10月24日,程序员专属的节日里,我们盛大开启“程序员节视频创意大赛”特别活动!这不仅是一场视觉的盛宴,更是智慧与创意的璀璨碰撞。我们诚挚邀请每一位程序员及编程爱好者,拿起你的镜头,记录下那些平凡日子中的不凡瞬间,让编程的魅力与
    的头像 发表于 07-04 09:00 67次阅读
    <b class='flag-5'>程序员</b>节视频创意盛宴,邀您共襄盛举!

    大模型时代,程序员当下如何应对 AI 的挑战

    随着 AI 技术的飞速发展,特别是大模型的出现,传统的程序员角色正在经历深刻的变革,我们不得不重新对自己进行审视和思考。 通用领域大模型的“泛化能力” 在过去的二十年内,AI 领域的大部分研究
    的头像 发表于 06-28 16:19 534次阅读
    大模型时代,<b class='flag-5'>程序员</b>当下如何应对 AI 的挑战

    适者生存,程序员最终会流向哪……

    程序员没有永远的护城河!!就目前的互联网大环境来看,it行业已经是……
    的头像 发表于 03-11 17:11 407次阅读
    适者生存,<b class='flag-5'>程序员</b>最终会流向哪……

    薪资高、青春饭,是不是程序员=青楼?

    进入裁员阶段。所以我们程序员要做的只能是与时俱进。 适者生存,程序员亦是如此 顺应时代发展,是我们必须跟紧的。就好比技术更迭我们就要学习更新。而现在我们程序员最好的赛道出路在哪? 目前
    发表于 03-06 21:32

    感觉我国的程序员前景一片灰暗,是这样吗?

    程序员也分为好几等,在现在看来大部分的Android、Java、前端等等开发。已经看不到希望了,很多人都在边缘挣扎;刚看到一位Android开发者,过完年回公司就通知被裁;可见每年都会有很多互联网
    发表于 02-20 20:52

    瑞萨Flash程序员V3 发布说明

    电子发烧友网站提供《瑞萨Flash程序员V3 发布说明.pdf》资料免费下载
    发表于 02-19 09:37 1次下载
    瑞萨Flash<b class='flag-5'>程序员</b>V3 发布说明

    2024程序员的未来方向如何走?还看今朝

    这几年的IT行业想必大家已经感受到了,Android、Java、前端等等程序员都经历了大厂……
    的头像 发表于 02-02 09:45 816次阅读
    2024<b class='flag-5'>程序员</b>的未来方向如何走?还看今朝

    1月18号“纯鸿蒙”千帆启航,程序员预备!

    。 如何正确看待鸿蒙? 我作为程序员来说,首先是鸿蒙的发展、市场开发岗位、薪资以及前景。 这几年对鸿蒙的发展情况来分析,从2019年开始鸿蒙的出来今天,华为鸿蒙取得了很大的成就。从“不兼容
    发表于 01-16 22:13