当前位置: 首页 > news >正文

UML-实现图(组件图和部署图)

实现图是从系统的层次来描述的,描述硬件的组成和布局,描述软件系统划分和功能实现。

UML-实现图(组件图和部署图)

  • 一、组件图
    • 1.组件图的元素
      • (1)组件
      • (2)接口
      • (3)组件间的关系
    • 2.组件图的作用
    • 3.组件图的用途
    • 4.组件图的特点
    • 5.使用组件图建模
      • (1)对源代码建模
      • (2)对可执行文件建模
      • (3)对物理数据库建模
      • (4)对可适应的系统建模
  • 二、部署图
    • 1.部署图的元素
      • (1)节点
      • (2)部署图的关系
    • 2.使用部署图建模
      • (1)对嵌入式系统建模
      • (2)对客户/服务器建模
      • (3)对全分布式系统建模
  • 三、应用练习题
    • 1.例题1


一、组件图

  • ** 通常会被称为构件图**,因此组件也会被称为构件

1.组件图的元素

  • 组件图中包含多种内容,包括包、组件、接口、组件间的关系、工件和端口,也可以包括子系统,还可以包含约束和注释等内容。但是组件图中常用的只有组件接口依赖关系

(1)组件

  • 在 UML2 中,组件被认为是独立的,在一个系统或子系统中的封装单元,提供一个或多个接口。
  • 组件的重点在于强调重用性。
  • 组件是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现。可以将组件看作是一种容器,因此它没有自己的特征,但是它包含定义特征的类。
  • 组件的符号:
    在这里插入图片描述
  • 组件的分类:一类存在于开发时刻,两类存在于运行时刻。
    • 配置组件(Deployment Component): 配置组件也会被称为发布组件或者实施组件,它是运行系统需要配置的组件,是形成可执行文件的基础。操作系统、Java 虚拟机和数据库管理系统都属于配置组件。
    • 工作产品组件(Work Product Component): 有时会被称为开发用组件,这类组件主要是开发过程的产物,包括创建实施组件的源代码文件及数据文件,这些组件并不直接地参加可执行系统。而开发过程中的工作产品,用于产生可执行系统。
    • 执行组件(Execution Component): 这类组件时作为一个正在执行系统的结果而被创建的,例如由 DLL 实例化而来的 COM+对象、HTML 文档、Servlets等。
  • 组件可以包含组件。
    在这里插入图片描述

(2)接口

  • 在 UML 组件图中,接口是一组用于描述类或组件的一个服务操作,是一个被命名的操作的集合。一般情况下,可以将组件的接口分为两种类型:
    • 导出接口(Expert Interface):为其他组件提供服务的接口,一个组件可以有多个导出接口。
    • 导入接口(Import Interface): 在组件中所用到的其他组件所提供的接口,一个组件可以使用多个接口。
  • 接口的符号有两种:
    • 一种是构造型表示法,在这种接口中,接口和实现接口之间用一条带三角形箭头的虚线连接,箭头指向接口。
      在这里插入图片描述

    • 另一种形式是 “棒棒糖” 接口,可以使用一个小圆圈代表接口,用实线将接口和组件连接起来。在这种形式中,实线代表的是实线关系。
      在这里插入图片描述

(3)组件间的关系

  • 依赖关系
    在这里插入图片描述
  • 泛化关系
    在这里插入图片描述

2.组件图的作用

  • 组件图的主要目的是显示系统组件之间的结构关系
  • 在以组件为基础的开发中,组件图为系统架构师提供一个开始为解决方案建模的自然形式。组件图允许系统架构师验证系统的必需功能是由组件实现的,这样确保了最终系统将会被接受。
  • 组件图通常可以使项目发起人感到轻松,该图对于不同的小组是很有用的一种交流工具。
  • 组件图为开发者提供了将要建立的系统的高层次的架构视图,这将帮助开发者建立实现的目标。

3.组件图的用途

  • 组件图是系统实现视图的图形表示,一个组件图表示了系统实现视图的一部分,系统中的所有组件结合起来才能表示出完整的系统实现图。
  • 组件图的用途:
    • 使系统人员和开发人员能够从整体上了解系统的所有物理组件。
    • 组件图显示了被开发系统所包含的组件之间的依赖关系。
    • 从宏观的角度上,组件图把软件看作多个独立组件组装而成的集合,每个组件可以被实现相同接口的其他组件替代。
    • 可以清楚地看出系统的结构和功能,方便项目组的成员制定工作目标以及了解工作情况。
    • 有助于对系统感兴趣的人了解某个功能单元位于软件包的什么位置。

4.组件图的特点

  • 侧重于描述系统静态视图的某一侧面。
  • 只包含那些对描述该侧面内容有关的模型元素。
  • 提供与抽象层次一致的描述,只显示有助于理解该组件图的必要的修饰。
  • 图形不要过于简化,以防止产生误解。

5.使用组件图建模

(1)对源代码建模

在这里插入图片描述

(2)对可执行文件建模

在这里插入图片描述

(3)对物理数据库建模

在这里插入图片描述

(4)对可适应的系统建模


二、部署图

  • 部署图通常会被称为配置图,它是用来显示系统中软件和硬件的物理架构。
  • 一个 UML 部署图描述了一个运行时的硬件节点,以及这些节点运行的软件组件的静态视图。
  • 部署图(Deployment Diagram)描述处理器、设备、软件组件在运行时的架构。它是系统拓扑的最终物理描述,即描述硬件单元和运行在硬件单元上的软件的结构
    在这里插入图片描述

1.部署图的元素

  • 部署图的组成元素包括节点和节点之间的连接,连接把每个节点关联在一起,从而构成一个部署图。部署图中除了包含基本的节点、组件和关系等元素外,还可以包含其他的元素,例如子系统、包、设备、执行环境以及工作(制品)等。

(1)节点

  • 节点是存在于运行时并代表 一项计算资源的物理元素,一般至少拥有一些内容,而且通常具有处理能力。他一般用于对执行处理或计算的资源建模,通常具有两方面内容,即能力(基本内存、计算能力和二级存储器)和位置(在所有必需的地方均可得到)。
  • 节点的两种类型:
    • 处理器(Processor):处理器是能够执行软件组件且具有计算能力的节点,例如服务器。处理器和设备是一个相反的概念。
    • 设备(Device): 设备是不能执行软件组件的外围硬件且是没有计算能力的节点,通常通过其接口为外接提供某种服务,例如打印机和扫描仪等都是设备。
  • 节点和组件的区别:
    在这里插入图片描述

(2)部署图的关系

  • 依赖关系
    在这里插入图片描述
  • 实现和关联关系
    • 实现关系是节点内组件向外提供服务,其符号是一条实线。关联关系体现节点间的通信关联,其符号也是一条实线。
      在这里插入图片描述

2.使用部署图建模

(1)对嵌入式系统建模

在这里插入图片描述

(2)对客户/服务器建模

在这里插入图片描述

(3)对全分布式系统建模

在这里插入图片描述

三、应用练习题

1.例题1

  • 教室在线答疑系统有4个组件:教室客户端程序、学生客户端程序、白板程序、通信协议。其中,教室客户端、学生客户端都要依赖于白板程序以及通信协议。画出该系统部署图。
    在这里插入图片描述

相关文章:

UML-实现图(组件图和部署图)

实现图是从系统的层次来描述的,描述硬件的组成和布局,描述软件系统划分和功能实现。 UML-实现图(组件图和部署图) 一、组件图1.组件图的元素(1)组件(2)接口(3&#xff09…...

苹果Find My可查找添加32件物品,伦茨科技ST17H6x芯片加速产品赋能

苹果最近更新的支持文档证实,从 iOS 16 开始,"Find My"可查找添加物品从16件增加到32件,AirTag 和“查找”网络中的物品利用“查找”网络的强大功能来发挥作用,这个网络由数亿台加密的匿名 Apple 设备构成。“查找”网络…...

postman后端测试时invalid token报错+token失效报错解决方案

报错信息1{“msg”:“invalid token”,“code”:401} 没有添加postman的token信息 报错信息2{“msg”: “token失效,请重新登录”,“code”: 401} 写了token但是token信息写的是错的,会提示token失效 解决方案如下 仅写完后端的查询,但是前端还没写的时候,可…...

使用 mybatis-plus 的mybaits的一对多时, total和record的不匹配问题

应该是框架的问题,去官方仓库提了个issues,等回复 https://github.com/baomidou/mybatis-plus/issues/5923 回复来了: 背景 发现 record是两条,但是total显示3 使用resultMap一对多时,三条数据会变成两条&#xff0…...

SpringCloud之Nacos

一、微服务介绍 1. 什么是微服务 2014年,Martin Fowler(马丁福勒 ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通信。同时服务会使用最小的规模…...

小封装高稳定性振荡器 Sg2520egn / sg2520vgn, sg2520ehn / sg2520vhn

描述 随着物联网和ADAS等5G应用的实施,数据流量不断增长,网络基础设施变得比以往任何时候都更加重要。IT供应商一直在快速建设数据中心,并且对安装在数据中心内部/内部的光模块有很大的需求。此应用需要具有“小”,“低抖动”和“…...

使用 Apache POI 更新/覆盖 特定的单元格

使用 Apache POI 更新特定的单元格 一. 需求二. 实现三. 效果 一. 需求 将以下表中第4行,第4列的单元格由“张宇”更新为“汤家凤”,并将更行后的结果写入新的Excel文件中; 二. 实现 使用Apache POI,可以精确定位到需要更改的单…...

Spring Boot整合MyBatis-Plus

引言 在现代软件开发中,我们经常需要处理大量的数据。为了有效地管理这些数据,我们需要使用一些强大的框架。其中,Spring Boot和MyBatis-Plus是两个非常流行的框架。Spring Boot是一个基于Spring的开源Java框架,可以用于创建独立…...

springboot项目之AOP角色权限的判断

引言 开发的项目中,可能遇到不同的角色,不同的角色有不通的权限定义。AOP切面是个很好的解决方案。 实践 1. 定义MerchRoles Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface MerchRoles {} 2. 定义切点 public c…...

Twincat PLC 跳出循环

在TwinCAT PLC编程中,要跳出循环结构通常可以通过以下几种方式实现: 使用Break指令: 在TwinCAT 3的PLC编程环境中(IEC 61131-3标准),可以使用BREAK指令来立即终止最内层的循环。例如,在FOR或WH…...

【Leetcode】277.搜寻名人

一、题目 1、题目描述 假设你是一个专业的狗仔,参加了一个 n 人派对,其中每个人被从 0 到 n - 1 标号。在这个派对人群当中可能存在一位 “名人”。所谓 “名人” 的定义是:其他所有 n - 1 个人都认识他/她,而他/她并不认识其他任何人。 现在你想要确认这个 “名人” 是…...

小白数学建模 Mathtype 7.7傻瓜式下载安装嵌入Word/WPS以及深度使用教程

数学建模Mathtype的下载安装嵌入Word/WPS以及深度使用教程 一 Mathtype 的下载安装1.1 安装前须知1.2 下载压缩包1.3 安装注册 二 嵌入Word/WPS2.1 嵌入Word2.1.1 加载项嵌入 Word2.1.2 宏录制嵌入 Word 2.2 嵌入 WPS2.2.1 加载项嵌入 WPS2.2.2 宏录制嵌入 WPS 2.3 嵌入时报错解…...

Linux之which和find

...

MySQL 常规操作指南

1. 连接MySQL服务器 (1)通过命令行连接 mysql -u username -p在提示下输入对应用户的密码,即可进入MySQL命令行界面。 (2)指定数据库连接 mysql -u username -p -D database_name这里会直接连接到名为database_nam…...

Rocketmq rust版本-开篇

我是蚂蚁背大象(Apache EventMesh PMC&Committer),文章对你有帮助给Rocketmq-rust star,关注我GitHub:mxsm,文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsmapache.com Rust重构Rocketmq,大家好我是mxsm(Apache EventMesh PMC&Comm…...

springboot3+springsecurity6集成druid启动报错

环境&#xff1a;springboot3security6druid1.2.20 druid1.2.20这个版本开始支持springboot3自动配置&#xff0c;不再需要手动引入 依赖为 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId>…...

golang面试题大全

go基础类 1、与其他语言相比&#xff0c;使用 Go 有什么好处&#xff1f; 与其他作为学术实验开始的语言不同&#xff0c; Go 代码的设计是务实的。每个功能和语法决策都旨在让程序员的生活更轻松。Golang 针对并发进行了优化&#xff0c;并且在规模上运行良好。由于单一的标…...

Google 在裁员的路上一路狂奔

早上刷新闻&#xff0c;Google 在 2024 开年还没几天就宣布了今年的裁员计划。 前几天还在说我们当地的大学为了削减预算而进行裁员。 大厂谷歌却是首当其冲&#xff0c;裁员1000多人&#xff0c;涉及了核心工程、谷歌助理、Pixel手机等硬件团队的人员。 截至2023年9月30日&…...

橘子学K8S04之重新认识Docker容器

我们之前分别从 Linux Namespace 的隔离能力、Linux Cgroups 的限制能力&#xff0c;以及基于 rootfs 的文件系统三个角度来理解了一下关于容器的核心实现原理。 这里一定注意说的是Linux环境&#xff0c;因为Linux Docker (namespaces cgroups rootfs) ! Docker on Mac (bas…...

Day31- 贪心算法part05

一、无重叠区间 题目一&#xff1a;453. 无重叠区间 435. 无重叠区间 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 主要思想是优先保留结束时间早的区间&#xff0c;这样…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...