【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…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...