【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…...
Cmake基础(2)
使用一个简单的示例来应用cmake,无任何三方库的单一的应用程序项目 你可以收获 使用cmake生成VS项目生成mingw项目(makefile) 1 首先新建一个cpp,我们要做一个控制台应用程序 #include<iostream> void main(){std::cout<<"hello cm…...
OSPF理论总结与实验
第1章 OSPF[1] 本章阐述了OSPF协议的特征、术语,OSPF的路由器类型、网络类型、区域类型、LSA类型,OSPF报文的具体内容及作用,描述了OSPF的邻居关系,通过实例让读者掌握OSPF在各种场景中的配置。 本章包含以下内容: …...
浅谈安科瑞无线测温产品在巴西某工厂的应用
摘 要:高压开关设备是变电站和配电站中保证电力系统安全运行的重要设备之一,因此,开关柜的稳定运行对于整个电力系统有非常重要的意义。设备老化、长期高负荷运行都可能使设备局部温度过高而发生火灾,因此,对变电站内的敏感设备进行温度检测变得尤为重要…...
RabbitMQ 命令
Docker # 进入容器 > docker exec -it rabbitmq /bin/bash# 帮助 > rabbitmq-service help# 查看所有队列 > rabbitmqctl list_queues Windows 进入安装目录【D:\Program Files\RabbitMQ Server\rabbitmq_server-3.9.10\sbin】输入cmd # 帮助 > rabbitmq-servic…...
数据库系列之简要对比下GaussDB和OpenGauss数据库
GaussDB作为一款企业级的数据库产品,和开源数据库OpenGauss之间又是什么样的关系,刚开始接触的时候是一头雾水,因此本文简要对比下二者的区别,以加深了解。 1、GaussDB和OpenGauss数据库简要对比 GaussDB是华为基于PostgreSQL数据…...
FFmpeg的AVInputFormat
文章目录 结构体定义操作函数支持的AVOutputFormat 通过上面的分析,基本可以看到ffmpeg的套路了,首先一个context上下文,上下文里面一个priv_data 指针,然后再插件结构体中有一个priv_data_size,然后回调函数。 结构体…...
SQL命令---删除字段
介绍 使用sql语句删除表字段。 命令 alter table 表名 drop 字段名;例子 删除a表中的name字段。 alter table a drop name;下面是执行删除后的表结构:...
深入探讨 Python 中的装饰器和上下文管理器
Python 作为一门灵活而强大的语言,提供了许多高级特性,其中装饰器(Decorators)和上下文管理器(Context Managers)是其中两个非常有用的概念。这两个功能性特性提供了对代码结构和行为进行修改和控制的强大工…...
比whatsapp效果好---Google Messages RCS协议消息推送
这段时间由于使用谷歌手机Pixel 7 ( Android13)研究改机room,看了很多相关的资料,测试研究了谷歌生态很多软件功能。结果就是改机Room还没编译成功,反而是测试出Google Messages群发功能的bug,算是一个惊喜…...
HBuilder X
选择一款编程软件有以下几个好处: (1)提高效率:编程软件通常强调代码编辑和自动完成,可以帮助程序员更快速、更准确地输入代码。 (2)降低错误率:编程软件还可以检测代码中的错误&a…...
做的网站电脑上跟手机上不一样/google seo是什么意思
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 ⛄ 内容介绍 Monoamine oxidase A (MAOA) is a mito…...
做政府网站个人能做吗/关键词查询工具
OpenCV中有实现遍历文件夹下所有文件的类Directory,它里面包括3个成员函数:(1)、GetListFiles:遍历指定文件夹下的所有文件,不包括指定文件夹内的文件夹;(2)、GetListFolders:遍历指定文件夹下的所有文件夹…...
网站建设 开源/软文营销经典案例优秀软文
seq命令用于产生从某个数到另外一个数之间的所有整数。语法seq [选项]... 尾数seq [选项]... 首数 尾数seq [选项]... 首数 增量 尾数选项-f, --format格式 使用printf 样式的浮点格式-s, --separator字符串 使用指定字符串分隔数字(默认使用:\n)-w, --equal-width …...
怎么把服务器做网站/一手渠道推广平台
一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到…...
教育考试类网站建设/成都专门做网络推广的公司
ORM,即Object-Relation Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。 转载于:h…...
济南网站建设优化/网站内容检测
一个同事问我,说他用innobackupex恢复数据后用mysqlbinlog导入增量数据时,发现数据没有导入进去并且也没有报错。 mysqlbinlog /u01/mysql_py/database/mysql3306/logs/mysql-bin.000014 /u01/mysql_py/database/mysql3306/logs/mysql-bin.000015 --sta…...