【UML】NO.1 UML简介
目录
一、什么是UML
二、UML和软件工程
三、UML的诞生
四、UML的基本构成
从今天开始,开一个新的话题,把UML梳理一遍。
一、什么是UML
UML(Unified Modeling Language,UML)是一个通用的可视化建模语言标准,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。
UML不是一门程序设计语言,而是一种可视化的建模语言。
UML(Unified Modeling Language,统一建模语言)被认为是一门语言的原因如下:
- 它是一种标准化的表示法:UML为面向对象系统的产品提供了说明、可视化和文档编制的标准语言,使得不同的人员和团队能够使用共同的理解和符号进行沟通。
- 它具有丰富的表现力:UML提供了多种图形表示法,如类图、时序图、用例图等,可以描述系统的静态结构和动态行为,从而帮助人们更好地理解和分析复杂的系统。
- 它是一种建模工具:UML本质上是一种用于对软件密集系统进行可视化建模的工具,支持面向对象的分析与设计。通过UML,人们可以从不同的视角对系统进行建模,从而更好地理解系统的结构和行为。
- 它独立于具体的程序设计语言:UML是一种通用的建模语言,可以与各种编程语言进行映射和转换。因此,无论使用哪种编程语言,都可以使用UML进行建模和分析。
- 它广泛应用于软件工程领域:UML已成为软件工程领域广泛使用的一种语言和工具,被应用于企业信息系统、银行金融服务系统、通信系统、交通系统等各种领域。
UML作为一门语言,具有标准化的表示法、丰富的表现力、建模工具的特性、独立于具体的程序设计语言以及广泛的应用领域等特点。
二、UML和软件工程
UML与软件工程有着密切的联系,并在软件工程领域发挥着重要作用。以下是UML与软件工程之间的联系及其对软件工程的作用:
-
建模工具:UML是一种用于对软件密集系统进行可视化建模的工具,它是软件工程中最常用的建模语言之一。通过UML,软件工程师可以使用一组丰富的图形表示法来描述系统的静态结构和动态行为,从而更好地理解和分析复杂的软件系统。
-
需求分析和设计:UML在软件工程的早期阶段起着重要作用,特别是在需求分析和设计阶段。通过绘制用例图、类图、时序图等,项目团队可以在项目早期明确梳理系统需求和业务流程,为开发人员提前确定目标和工作范围,避免后期需求变更带来的成本和风险。UML图可以帮助团队成员更好地理解和管理复杂系统,从而提高开发效率和质量。
-
沟通与合作:UML提供了一种通用的表示方法,使得软件工程师、项目经理、系统分析师等不同角色的人员能够使用共同的理解和符号进行沟通。通过UML图,团队成员可以更快速地了解项目的整体情况,包括系统的结构、功能、交互等,从而提高沟通效率和协作能力。
-
文档编制:UML图可以作为软件系统的文档,用于记录系统的设计、实现和测试过程。这些文档可以帮助团队成员回顾和理解系统的历史和设计决策,也可以作为与系统利益相关者(如客户、测试人员等)沟通的桥梁。
-
工具支持:许多软件工程工具和集成开发环境(IDE)都提供了对UML的支持,包括自动生成代码、逆向工程、代码与模型同步等功能。这些工具可以帮助软件工程师更高效地使用UML进行建模和开发工作。
通过使用UML进行建模和分析,软件工程师可以更好地理解和管理系统复杂性,提高沟通效率和协作能力,明确系统需求并降低风险,从而提高软件开发的效率和质量。
三、UML的诞生
UML的诞生过程可以追溯到20世纪90年代初,当时面向对象编程和软件工程领域正在快速发展。不同的建模语言和方法论纷纷涌现,如Booch、Rumbaugh的OMT和Jacobson的OOSE等。然而,这些方法之间存在差异,导致用户难以根据应用特点选择合适的建模语言,引发了所谓的"方法大战"。
为了解决这一问题,1994年,Grady Booch、Jim Rumbaugh和Ivar Jacobson这三位面向对象方法领域的先驱者开始合作,试图整合他们的方法,以形成一个统一的标准建模语言。他们的合作得到了Object Management Group(OMG,对象管理组织)的支持。OMG是一个国际性的非营利组织,致力于推动对象技术的标准化。
经过一段时间的努力,1997年,OMG正式发布了UML 1.0版本,标志着UML的诞生。UML提出了一套IT专业人员期待多年的统一的标准建模符号,通过使用UML,这些人员能够阅读和交流系统架构和设计规划。UML迅速得到了业界的广泛接受和应用,并逐渐发展成为软件工程领域最重要的建模语言之一。
UML的成功得益于其标准化、易于理解和使用的特点,以及OMG的持续推广和支持。如今,UML已经广泛应用于各种领域,包括企业信息系统、银行金融服务系统、通信系统、交通系统等,成为软件工程领域不可或缺的一部分。
四、UML的基本构成
UML的构成主要包括以下几个部分:
-
视图(Views):UML提供了多种视图来描述系统的不同方面。常见的视图包括用例图、类图、时序图、活动图等。每个视图都侧重于系统的某个特定方面,例如用例图用于描述系统的功能需求,类图用于描述系统的静态结构,时序图用于描述系统对象之间的交互等。通过不同视图的组合使用,可以全面地理解和描述系统的全貌。
-
图(Diagrams):UML中的图是指用于可视化建模的具体图形表示法。每种图都有其特定的符号和布局规则,用于表示系统中的不同元素和关系。例如,类图中的类、属性和方法使用特定的符号进行表示,时序图中的对象、消息和时间顺序也有其独特的表示方式。通过绘制不同类型的图,可以清晰地表达系统的结构、行为和交互。
-
模型元素(Model Elements):UML中包含了许多模型元素,用于描述系统中的实体、关系和属性。这些模型元素包括类、接口、对象、关联、泛化、聚合、依赖等。每个模型元素都有其特定的含义和用途,在建模过程中起着重要作用。通过对模型元素的定义和组合,可以构建出具有丰富语义的UML模型。
-
通用机制(General Mechanisms):UML还提供了一些通用机制,用于增强模型的表达能力和灵活性。这些通用机制包括注释、约束、扩展机制等。注释用于在模型中添加解释性文本,约束用于定义模型元素的规则和限制,扩展机制用于自定义UML的符号和语义。通过使用这些通用机制,可以根据具体需求对UML进行扩展和定制。
我们已经讨论过UML与软件工程的关系以及对软件工程的作用。UML作为一种建模语言,可以帮助软件工程师更好地理解和管理系统复杂性,提高沟通效率和协作能力,明确系统需求并降低风险,从而提高软件开发的效率和质量。通过使用UML的视图、图、模型元素和通用机制,软件工程师可以构建出具有丰富语义的UML模型,用于描述和分析软件系统。
很多建模工具,都支持通过UML图生成代码。
现在UML绘制最流行的工具包括以下几种:
-
Visual Paradigm:是一款功能强大的UML工具,支持多种UML图和模型元素的绘制,具有丰富的模板和符号库,可以帮助用户快速创建专业的UML模型。
-
StarUML:是一款广泛使用的开源UML工具,具有直观的用户界面和强大的功能,支持多种UML图和模型元素的绘制,以及代码生成和逆向工程等功能。
-
Enterprise Architect:是一款功能齐全的商业UML工具,提供了丰富的UML建模功能,包括需求管理、系统设计、数据库建模、测试等,可以帮助企业快速构建高质量的软件系统。
-
Rational Rose:是一款历史悠久的UML工具,具有完善的建模功能和广泛的支持,可以用于大型复杂系统的建模和分析,支持多种编程语言和平台。
-
UML Designer:是一款基于Eclipse插件的UML工具,提供了轻量级的UML建模功能,支持多种UML图和模型元素的绘制,以及代码生成和文档生成等功能。
我最早绘制UML使用的就是Rose,很多UML教程中的黄底红线的图,都是出自Rose。
我个人觉得,UML最大的作用,就是在你不知道如何思考的时候,给你一个方向。
当然,UML本身也确实越来越复杂,甚至比要设计的软件本身还要复杂,这个其实没关系,灵活应用就好了。UML毕竟提供了一系列的抽象方法,让你对纷繁复杂的各种逻辑,做更理智的分析。
相关文章:
【UML】NO.1 UML简介
目录 一、什么是UML 二、UML和软件工程 三、UML的诞生 四、UML的基本构成 从今天开始,开一个新的话题,把UML梳理一遍。 一、什么是UML UML(Unified Modeling Language,UML)是一个通用的可视化建模语言标准,用于对…...
【Idea】SpringBoot项目中,jar包引用冲突异常的排查 / SM2算法中使用bcprov-jdk15to18的报错冲突问题
问题描述以及解决方法: 项目中使用了bcprov-jdk15to18 pom依赖,但是发现代码中引入的版本不正确。 追溯代码发现版本引入的是bcprov-jdk15on,而不是bcprov-jdk15to18,但是我找了半天pom依赖也没有发现有引入bcprov-jdk15on依赖。…...
MISRA C++ 2023:C和C++测试解决方案实现静态分析
自动化软件测试解决方案的全球领导者Parasoft今天宣布,随着Parasoft C/Ctest 2023.2即将发布,全面支持MISRA C 2023。Parasoft针对C和C软件开发的完全集成测试解决方案计划于2023年12月发布,可以帮助团队实现自动化静态分析和编码标准合规性&…...
半导体:Gem/Secs基本协议库的开发(4)
继续接上篇 《半导体:Gem/Secs基本协议库的开发(3)》,本篇我们分享的比较简单,windows系统下tcp和串口通讯。这也是我们协议开发比较重要的一部分,不过我们在此把它封装程一个单独的通讯库,毕竟…...
解锁知识的新大门:自建知识付费小程序的技术指南
在数字化时代,知识付费小程序的崛起为创作者和学习者提供了全新的学习和分享方式。本文将以“知识付费小程序源码”为关键词,从技术角度出发,为你展示如何搭建一个独具特色的知识付费平台。 步骤1:选择适用的知识付费小程序源码…...
Java8实战 - 行为参数化传递代码
背景: 根据《java8实战》把第二章简单概括一下。 在软件工程中,一个最重要的问题是,用户的需求会一直变化,如何应对不断变化的需求,并且把工作量降到最低是需要考虑的,而行为参数化就是一个处理频繁变更需…...
jmeter,取“临时重定向的登录接口”响应头中的cookie
1、线程组--创建线程组; 2、线程组--添加--取样器--HTTP请求; 3、Http请求--添加--后置处理器--正则表达式提取器; 4、线程组--添加--监听器--查看结果树; 5、线程组--添加--取样器--调试取样器。 首先理解 自动重定向 与跟随…...
流程控制之条件判断
目录 流程控制之条件判断 2.1.if语句语法 2.1.1单分支结构 2.1.2双分支结构 2.1.3多分支结构 2.2.案例 例一: 例2: 例3: 例4: 例5: 例6: 例7: 例8: 例9: 2.3.case多条件判断 2.3.1.格式 2.3.2.执行过程 例10: 流程控制之条件判断 2.1.if语句语法 2.1.1单分…...
2 - Electron 核心概念
Electron 核心概念 主进程 通过Node.js、Electron提供的API与系统底层打交道启动项目时运行的 main.js 脚本就是我们说的主进程。在主进程运行的脚本可以以创建 Web 页面的形式展示 GUI。主进程只有一个 渲染进程 每个 Electron 的页面都在运行着自己的进程,这样…...
Cmake找不到mysql.h和libmysqlclient.so
查看mysql.h和libmysqlclient.so的路径 eikeik-Virtual-Machine:~/桌面/dbpool/bin$ locate mysql.h /usr/include/mysql/mysql.h eikeik-Virtual-Machine:~/桌面/dbpool/bin$ locate libmysqlclient.so /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/x86_64-linux-g…...
图论——二分图
图论——二分图 二分图通俗解释 有一个图,将顶点分成两类,边只存在不同类顶点之间,同类顶点之间设有边。称图 G 为二部图,或称二分图,也称欧图。 性质 二分图不含有奇数环图中没有奇数环,一定可以转换为二…...
国产浪潮服务器:风扇免手动调节脚本
简介:浪潮集团,是中国本土顶尖的大型IT企业之一,中国领先的云计算、大数据服务商。浪潮集团旗下拥有浪潮信息、浪潮软件、浪潮国际,业务涵盖云计算、大数据、工业互联网等新一代信息技术产业领域,为全球120多个国家和地…...
智能科技企业网站搭建的作用是什么
随着科学技术快速提升,各种智能产品随之而来,每个赛道里都涌入了大量企业商家,有些热门产品更是广受关注,对企业来说,形象、品牌、信息等方面需要完美呈现到用户眼前,而网站无疑是很好的工具。 企业通过【…...
【多组学数据驱动的机器学习:生物医学研究的创新与突破】
简介:随着生物医学研究的不断发展,多组学数据在疾病预防、诊断和治疗方面发挥着越来越重要的作用。本文将介绍如何利用机器学习技术对多组学数据进行综合分析,以及这种方法在生物医学研究中的优势和潜力。 正文: 一、多组学数据…...
AI影响谷歌正在推出新的人工智能模型,用于医疗保健。以下是医生如何使用它们的介绍
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
云仓酒庄带您品法国葡萄酒
说起葡萄酒肯定绕不开法国,法国葡萄酒闻名中外,口碑卓越。作为世界上的产酒大国,可以说是每一寸土地都可以种植葡萄。云仓酒庄的品牌雷盛红酒分享这么优秀的一个葡萄酒产酒国有哪些特点呢? 1.产区特色:波国有最著名的…...
XIAO ESP32S3之实现口罩检测
一、例程介绍 此例程是运行FOMO 轻量检测模型实现人员佩戴口罩检测,Demo中已包含训练好的模型参数,无需再训练。 FOMO(Faster Objects, More Objects) 是由 Edgeimpulse 工程师提出的一种轻量级的目标检测模型,其主要特点是模型非常小&#…...
LVS简介及LVS-NAT负载均衡群集的搭建
目录 LVS群集简介 群集的含义和应用场景 性能扩展方式 群集的分类 负载均衡(LB) 高可用(HA) 高性能运算(HPC) LVS的三种工作模式 NAT 地址转换 TUN IP隧道 IP Tunnel DR 直接路由 Direct Rout…...
ElasticSearch之cat segments API
命令样例如下: curl -X GET "https://localhost:9200/_cat/segments?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下: index shard prirep ip segment g…...
docker镜像与容器的迁移
docker容器迁移有两组命令,分别是 save & load :操作的是images, 所以要先把容器commit成镜像export & import:直接操作容器 我们先主要看看他们的区别: 一 把容器打包为镜像再迁移到其他服务器 如把mysq…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
