【UML】NO.1 UML简介

目录

一、什么是UML

二、UML和软件工程

三、UML的诞生

四、UML的基本构成


从今天开始,开一个新的话题,把UML梳理一遍。

一、什么是UML

UML(Unified Modeling Language,UML)是一个通用的可视化建模语言标准,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。

UML不是一门程序设计语言,而是一种可视化的建模语言。

UML(Unified Modeling Language,统一建模语言)被认为是一门语言的原因如下:

  1. 它是一种标准化的表示法:UML为面向对象系统的产品提供了说明、可视化和文档编制的标准语言,使得不同的人员和团队能够使用共同的理解和符号进行沟通。
  2. 它具有丰富的表现力:UML提供了多种图形表示法,如类图、时序图、用例图等,可以描述系统的静态结构和动态行为,从而帮助人们更好地理解和分析复杂的系统。
  3. 它是一种建模工具:UML本质上是一种用于对软件密集系统进行可视化建模的工具,支持面向对象的分析与设计。通过UML,人们可以从不同的视角对系统进行建模,从而更好地理解系统的结构和行为。
  4. 它独立于具体的程序设计语言:UML是一种通用的建模语言,可以与各种编程语言进行映射和转换。因此,无论使用哪种编程语言,都可以使用UML进行建模和分析。
  5. 它广泛应用于软件工程领域:UML已成为软件工程领域广泛使用的一种语言和工具,被应用于企业信息系统、银行金融服务系统、通信系统、交通系统等各种领域。

UML作为一门语言,具有标准化的表示法、丰富的表现力、建模工具的特性、独立于具体的程序设计语言以及广泛的应用领域等特点。

二、UML和软件工程

UML与软件工程有着密切的联系,并在软件工程领域发挥着重要作用。以下是UML与软件工程之间的联系及其对软件工程的作用:

  1. 建模工具:UML是一种用于对软件密集系统进行可视化建模的工具,它是软件工程中最常用的建模语言之一。通过UML,软件工程师可以使用一组丰富的图形表示法来描述系统的静态结构和动态行为,从而更好地理解和分析复杂的软件系统。

  2. 需求分析和设计:UML在软件工程的早期阶段起着重要作用,特别是在需求分析和设计阶段。通过绘制用例图、类图、时序图等,项目团队可以在项目早期明确梳理系统需求和业务流程,为开发人员提前确定目标和工作范围,避免后期需求变更带来的成本和风险。UML图可以帮助团队成员更好地理解和管理复杂系统,从而提高开发效率和质量。

  3. 沟通与合作:UML提供了一种通用的表示方法,使得软件工程师、项目经理、系统分析师等不同角色的人员能够使用共同的理解和符号进行沟通。通过UML图,团队成员可以更快速地了解项目的整体情况,包括系统的结构、功能、交互等,从而提高沟通效率和协作能力。

  4. 文档编制:UML图可以作为软件系统的文档,用于记录系统的设计、实现和测试过程。这些文档可以帮助团队成员回顾和理解系统的历史和设计决策,也可以作为与系统利益相关者(如客户、测试人员等)沟通的桥梁。

  5. 工具支持:许多软件工程工具和集成开发环境(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的构成主要包括以下几个部分:

  1. 视图(Views):UML提供了多种视图来描述系统的不同方面。常见的视图包括用例图、类图、时序图、活动图等。每个视图都侧重于系统的某个特定方面,例如用例图用于描述系统的功能需求,类图用于描述系统的静态结构,时序图用于描述系统对象之间的交互等。通过不同视图的组合使用,可以全面地理解和描述系统的全貌。

  2. 图(Diagrams):UML中的图是指用于可视化建模的具体图形表示法。每种图都有其特定的符号和布局规则,用于表示系统中的不同元素和关系。例如,类图中的类、属性和方法使用特定的符号进行表示,时序图中的对象、消息和时间顺序也有其独特的表示方式。通过绘制不同类型的图,可以清晰地表达系统的结构、行为和交互。

  3. 模型元素(Model Elements):UML中包含了许多模型元素,用于描述系统中的实体、关系和属性。这些模型元素包括类、接口、对象、关联、泛化、聚合、依赖等。每个模型元素都有其特定的含义和用途,在建模过程中起着重要作用。通过对模型元素的定义和组合,可以构建出具有丰富语义的UML模型。

  4. 通用机制(General Mechanisms):UML还提供了一些通用机制,用于增强模型的表达能力和灵活性。这些通用机制包括注释、约束、扩展机制等。注释用于在模型中添加解释性文本,约束用于定义模型元素的规则和限制,扩展机制用于自定义UML的符号和语义。通过使用这些通用机制,可以根据具体需求对UML进行扩展和定制。

我们已经讨论过UML与软件工程的关系以及对软件工程的作用。UML作为一种建模语言,可以帮助软件工程师更好地理解和管理系统复杂性,提高沟通效率和协作能力,明确系统需求并降低风险,从而提高软件开发的效率和质量。通过使用UML的视图、图、模型元素和通用机制,软件工程师可以构建出具有丰富语义的UML模型,用于描述和分析软件系统。

很多建模工具,都支持通过UML图生成代码。

现在UML绘制最流行的工具包括以下几种:

  1. Visual Paradigm:是一款功能强大的UML工具,支持多种UML图和模型元素的绘制,具有丰富的模板和符号库,可以帮助用户快速创建专业的UML模型。

  2. StarUML:是一款广泛使用的开源UML工具,具有直观的用户界面和强大的功能,支持多种UML图和模型元素的绘制,以及代码生成和逆向工程等功能。

  3. Enterprise Architect:是一款功能齐全的商业UML工具,提供了丰富的UML建模功能,包括需求管理、系统设计、数据库建模、测试等,可以帮助企业快速构建高质量的软件系统。

  4. Rational Rose:是一款历史悠久的UML工具,具有完善的建模功能和广泛的支持,可以用于大型复杂系统的建模和分析,支持多种编程语言和平台。

  5. UML Designer:是一款基于Eclipse插件的UML工具,提供了轻量级的UML建模功能,支持多种UML图和模型元素的绘制,以及代码生成和文档生成等功能。

我最早绘制UML使用的就是Rose,很多UML教程中的黄底红线的图,都是出自Rose。

我个人觉得,UML最大的作用,就是在你不知道如何思考的时候,给你一个方向。

当然,UML本身也确实越来越复杂,甚至比要设计的软件本身还要复杂,这个其实没关系,灵活应用就好了。UML毕竟提供了一系列的抽象方法,让你对纷繁复杂的各种逻辑,做更理智的分析。

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

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

相关文章

企业欠税信息API:实现税务管理的智能化与高效化

前言 随着经济的发展和社会的进步,企业欠税问题逐渐凸显,成为制约经济发展的重要因素。为了解决这一问题,企业欠税信息API应运而生。它通过先进的技术手段,提供了一种全新的欠税信息查询方式,帮助企业实现税务管理的智…

nginx多ip部署

1.修改网卡信息自定义多个IP 进入/etc/sysconfig/network-scripts,编辑ifcfg-ens33网卡文件。将dhcp动态分配修改成static,同时添加ip地址子网掩码、网关和DNS。 修改完成后重启网卡,systemctl restart network 2.修改nginx配置文件 有几个…

Vue3无废话,快速上手

Vue3无废话&#xff0c;快速上手 认识Vue3 1. Vue2 选项式 API vs Vue3 组合式API <script> export default {data(){return {count:0}},methods:{addCount(){this.count}} } </script><script setup> import { ref } from vue const count ref(0) const…

【c++随笔16】reserve之后,使用std::copy会崩溃?

【c随笔16】reserve之后&#xff0c;使用std::copy会崩溃? 一、reserve之后&#xff0c;使用std::copy会崩溃?二、函数std::reserve、std::resize、std::copy1、std::resize&#xff1a;2、std::reserve&#xff1a;3、std::copy&#xff1a; 三、崩溃原因分析方案1、你可以使…

机器学习 | Python贝叶斯超参数优化模型答疑

机器学习 | Python贝叶斯超参数优化模型答疑 目录 机器学习 | Python贝叶斯超参数优化模型答疑问题汇总问题1答疑问题2答疑问题3答疑问题汇总 问题1:想问一下贝叶斯优化是什么? 问题2:为什么使用贝叶斯优化? 问题3:如何实现? 问题1答疑 超参数优化在大多数机器学习流水线…

浅析不同NAND架构的差异与影响

SSD的存储介质是什么&#xff0c;它就是NAND闪存。那你知道NAND闪存是怎么工作的吗&#xff1f;其实&#xff0c;它就是由很多个晶体管组成的。这些晶体管里面存储着电荷&#xff0c;代表着我们的二进制数据&#xff0c;要么是“0”&#xff0c;要么是“1”。NAND闪存原理上是一…

安卓11修改power按键功能

客户需要把power键的短按休眠功能去除&#xff0c;并且把长按功能改成直接关机&#xff0c;我们先分析系统framework层处理按键的代码&#xff1a; interceptKeyBeforeQueueing power按键上来都会直接走这里&#xff0c;我们找到power按键处理的地方如下&#xff1a; case KeyE…

开启数据库性能之旅:MSSQL存储过程索引优化深度解析

数据库&#xff0c;如同一座庞大的图书馆&#xff0c;蕴藏着无数宝贵的信息。然而&#xff0c;想要在这个海量数据的世界中迅捷而准确地找到所需&#xff0c;索引就成为了至关重要的引路人。本文将引领读者深入探讨MSSQL存储过程中索引优化的奥妙&#xff0c;揭示数据库性能提升…

Spring日志完结篇,MyBatis操作数据库(入门)

目录 Spring可以对日志进行分目录打印 日志持久化&#xff08;让日志进行长期的保存&#xff09; MyBatis操作数据库(优秀的持久层框架) MyBatis的写法 开发规范&#xff1a; 单元测试的写法 传递参数 Spring可以对日志进行分目录打印 他的意思是说spring相关只打印INFO…

mysql中的DQL查询

表格为&#xff1a; DQL 基础查询 语法&#xff1a;select 查询列表 from 表名&#xff1a;&#xff08;查询的结果是一个虚拟表格&#xff09; -- 查询指定的列 SELECT NAME,birthday,phone FROM student -- 查询所有的列 * 所有的列&#xff0c; 查询结果是虚拟的表格&am…

中国各省、市乡村振兴水平数据(附stata计算代码,2000-2022)

数据简介&#xff1a;乡村振兴是当下经济学研究的热点之一&#xff0c;对乡村振兴进行测度&#xff0c;是研究基础。测度乡村振兴水平的学术论文广泛发表在《数量经济技术经济研究》等顶刊上。数据来源&#xff1a;主要来源于《中国农村统计年鉴》、《中国人口和就业统计年鉴》…

CRM系统选择技巧,什么样的CRM系统好用?

SaaS行业发展迅速&#xff0c;更多的企业逐渐选择CRM管理系统。打开搜索引擎&#xff0c;有非常多的结果。怎样在数十万个搜索结果中选择适合您的CRM系统&#xff1f;下面我们将聊聊&#xff0c;怎样选择CRM系统。 第一步&#xff1a;明确自身需求 重要性&#xff1a;每家企业…

仿照MyBatis手写一个持久层框架学习

首先数据准备&#xff0c;创建MySQL数据库mybatis&#xff0c;创建表并插入数据。 DROP TABLE IF EXISTS user_t; CREATE TABLE user_t ( id INT PRIMARY KEY, username VARCHAR ( 128 ) ); INSERT INTO user_t VALUES(1,Tom); INSERT INTO user_t VALUES(2,Jerry);JDBC API允…

深入理解Java虚拟机----内存区域的划分

Java虚拟机在执行Java程序的过程时&#xff0c;会将它管理的内存划分为若干个不同的数据区域。主要分为以下几个区域&#xff1a; 程序计数器 当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变程序计数器来选取下一条需要执行的字节码指令&#xff0c;分支、循…

nginx中Include使用

1.include介绍 自己的理解&#xff1a;如果学过C语言的话&#xff0c;感觉和C语言中的Include引入是一样的&#xff0c;引入的文件中可以写任何东西&#xff0c;比如server相关信息&#xff0c;相当于替换的作用&#xff0c;一般情况下server是写在nginx.conf配置文件中的&…

VR串流线方案:实现同时充电传输视频信号

VR&#xff08;Virtual Reality&#xff09;&#xff0c;俗称虚拟现实技术&#xff0c;是一项具有巨大潜力的技术创新&#xff0c;正在以惊人的速度改变我们的生活方式和体验&#xff0c;利用专门设计的设备&#xff0c;如头戴式显示器&#xff08;VR头盔&#xff09;、手柄、定…

idea 本身快捷键ctrl+d复制 无法像eclipse快捷键ctrl+alt+上下键,自动换行格式问题解决

问题 例如我使用ctrld 想复制如下内容 复制效果如下&#xff0c;没有自动换行&#xff0c;还需要自己在进行调整 解决 让如下快捷键第一个删除 修改成如下&#xff0c;将第二个添加ctrld 提示&#xff1a;对应想要修改的item&#xff0c;直接右键&#xff0c;remove是删…

分子生成领域的stable diffusion - GEOLDM

一、关于stable diffusion 很多人都知道stable diffusion&#xff0c;stable diffusion的出现改变了机器生成领域&#xff0c;让AI技术第一次无比的接近正常人。大语言模型&#xff0c;AIGC概念于是兴起。基于stable diffusion 大家开发了lora&#xff0c; hyperwork等微调技术…

[GWCTF 2019]我有一个数据库1

提示 信息收集phpmyadmin的版本漏洞 这里看起来不像是加密应该是编码错误 这里访问robots.txt 直接把phpinfo.php放出来了 这里能看到它所有的信息 这里并没有能找到可控点 用dirsearch扫了一遍 ####注意扫描buuctf的题需要控制扫描速度&#xff0c;每一秒只能扫10个多一个都…

聚类算法的性能度量

聚类算法的性能度量 聚类算法就是根据数据中样本与样本之间的距离或相似度&#xff0c;将样本划分为若干组&#xff0f;类&#xff0f;簇&#xff0c;其划分的原则&#xff1a;簇内样本相似、簇间样本不相似&#xff0c;聚类的结果是产生一个簇的集合。 其划分方式主要分为两…