软件工程 - 第8章 面向对象建模 - 4 - 物理体系结构建模

news2025/6/8 18:47:48

构件图

构件图概述

构件图描述了软件的各种构件和它们之间的依赖关系。

构件图的作用

在构件图中,系统中的每个物理构件都使用构件符号来表示,通常,构件图看起来像是构件图标的集合,这些图标代表系统中的物理部件,构件图的基本目的是:使系统人员和开发人员能够从整体上了解系统的所有物理部件,同时,也使我们知道如何对构件进行打包,以便交付给最终客户,最后,构件图显示了被开发系统所包含的构件之间的依赖关系。
构件图从软件架构的角度来描述一个系统的主要功能,如系统分成几个子系统,每个子系统包括哪些类、包和构件,它们之间的关系以及它们分配到哪些节点上等。
使用构件图可以清楚地看出系统的结构和功能。方便项目组的成员制定工作目标和了解工作情况,同时,最重要的一点是有利于软件的复用。
从宏观的角度上,构件图把软件看作多个独立构件组装而成的集合,每个构件可以被实现相同接口的其它构件替换。

构件图的组成

  • 构件图三元素
    1. 构件(Component)
    2. 接口(Interface)
    3. 依赖关系(Dependency)
  • 构件图由构件、接口、关系、端口和连接器组成,它的表达方式为:
    构件图=构件+接口+关系+端口+连接器

构件

  • 构件的定义
    构件是定义了良好接口的物理实现单元,是系统中可替换的物理部件。一般情况下,构件表示将类、接口等逻辑元素打包而成的物理模块。
  • 构件与类
    从构件的定义上看,构件和类十分相似,事实也是如此:二者都有名称,都可以实现一组接口,都可以参与依赖、泛化和关联关系,都可以被嵌套,都可以有实例,都可以参与交互。但也存在着一些明显的不同,下面是构件与类的区别:
    (1)类表示是对实体的抽象,而构件是对存在于计算机中的物理部件的抽象。也就是说,构件是可以部署的,而类不能部署。
    (2)构件属于软件模块,而非逻辑模块,与类相比,它们处于不同的抽象级别。甚至可以说,构件就是由一组类通过协作完成的。
    (3)类可以直接拥有操作和属性,而构件仅拥有可以通过其接口访问的操作。
  • 构件的名称
    每个构件必须有一个不同于其他构件的名称。构件的名称和类的名称的命名法则很是相似,有简单名和路径名之分。构件的名称是一个字符串,位于构件图标的内部。在实际应用中,构件名称通常是从现实词汇中抽取出来的短名词或名词短语。
  • 构件的表示
    在这里插入图片描述
    供接口用棒棒糖式的图形表示,由一个封闭的圆形与一条直线组成;需接口用插座式的图形表示,由一个半圆与一条直线组成
    在这里插入图片描述
  • 构件间的关系
    为了表达构件与其他构件间的关系,供接口与需接口之间用一个表示依赖的箭头(即虚线加一个开箭头)连接起来,该箭头从需接口引出,指向服务供应者提供的供接口
    在这里插入图片描述
    用一个装配连接器(Assembly Connectors)来表示构件之间的关系
    在这里插入图片描述
    更简单的,你可以忽略构件间的供接口和需接口,而直接在构件间画上依赖关系
    在这里插入图片描述

外部接口----端口

组合构件的外部接口用一个尾部加一个小方块的正常的接口组成,这个小矩形框被称为端口(Port)
端口是UML2.0引入的一个概念,端口提供种方法,显示建模构件所提供或要求的接口如何与它里面的部分相关联

连接器

为了展现功能的实现,连接器(Connectors将一个组件提供的接口与另一个组件必需的接口绑定到一起

  • UML2.0提供了两种类型的连接器:
    代理连接器(Delegation Connectors):连接外部接口的端口和内部接口
    组装连接器(Assembly Connectors):组装连接器表示构件之间的关系,它连接构件内部的类,将一个构件的供接口和一个构件的需接口捆绑在一起

怎么画构件图?

  1. 确定划分的子系统的对外接口。
    程序子系统和系统外实际要进行联系的边界处理。
  2. 确定子构件和接口。
    在子系统中把功能不同的模块划分成构件,同时确定构件跟构件之间的接口。
  3. 确定构件之间的关系。
    分析构件之间存在的逻辑设计关系,画出依赖图。

案例:绘制出汽车租赁系统的构件图

  • 汽车租赁系统的需求分析简述如下:
    (1)客户可以通过不同的方式(电话、网上和前台)预订租借车辆
    (2)能够保存客户的预定信息
    (3)能够保存客户的历史记录
    (4)工作人员可以处理客户申请
    (5)技术人员可以保存对车辆检修的结果
  • 汽车租赁系统是建立在一个含有过去租赁记录、汽车信息、服务记录以及客户和员工信息的中央数据库上
  • 包括租赁程序、员工记录、客户信息、服务记录、工作记录汽车记录6个构件
    在这里插入图片描述

部署图

部署图显示了系统的硬件、在这些硬件上安装的软件以及用于连接异构的机器之间的中
间件
从部署图中,可以了解到软件构件、硬件是如何部署到系统的物理架构中的,使用部署图可以显示运行时系统的结构,同时传达构成应用程序的硬件和软件元素的配置和部署方式

部署图的表达方式为:

部署图=制品+节点+通信路径

制品

  • 制品是与软件开发过程相关联的实际存在的信息
  • 制品是被软件开发过程所利用或通过软件开发过程所生产的一段信息
  • 制品可以是一个模型、描述或软件,它通常以文件的形式存在,可以是可执行的,比如.exe文件、二进制文件、DDLs或者JAR文件等,或者是一个数据文件、一个配置文件、一个用户手册或者一个HTML文档
  • 在UML2.0中,制品可以用于表示任何可打包的元素,这些元素涵盖了UML中的所有部分
  • 在UML中,制品用右上角带一个狗耳朵标记的矩形框表示
    在这里插入图片描述
  • 制品可以有属性和操作,最常见的是用属性和操作表示制品的配置选项
  • 属性和操作可以放在制品的第二栏中
    在这里插入图片描述
  • 制品拥有制品实例,用制品名加下划线的方式来表示一个制品实例
    在这里插入图片描述
  • 一个制品可能是另一个UML元素的显示(Manifestation)
    • 比如Logging.jar是LoggingSubsystem构j件的显示
    • 在UL1.X中,这种显示关系被建模为实施(Implementation)
    • 在UML2.0中用标记<< manifest>>的虚线箭头表示这种实施关系
      在这里插入图片描述

节点

  • 节点Nodes)是一个能够执行制品的实体,可以是硬件,但有时也可以是为其他软件的执行提供执行环境的软件
  • 有两种类型的节点
    • 执行环境(Execution Environments)节点
    • 设备(Device)节点
  • UML2.0用一个3D风格的盒子表示书点,在节点的内部注明节点名
    在这里插入图片描述
执行环境节点

在部署图内部用构造型<< ExecutionEnvironment>>和所选用的执行环境名称来表示执行环境节点
执行环境通常是中间件或操作系统
在这里插入图片描述

设备节点

设备节点用于表示具体的计算设备,一般是个单独的硬件设备
在这里插入图片描述

部署

  • 部署图最重要的部分就是将制品部署在将执行它的节点上
  • UML2.0提供了三种方法来表示把制品部署到节点中
    1、通过将制品绘制在节点中实现对制品的部署
    在这里插入图片描述
  1. 可以用带构造型<< deploy>>标签的虚线箭头表示将制品部署在节点中,注意,箭头指向节点
    在这里插入图片描述
  2. 更简单的,可以将制品直接记录在节点中表示部署关系
    在这里插入图片描述
部署规约
  • 为了使部署在节点上的制品能够执行,大多数情况下我们需要说明一些配置参数
  • 这些参数被称为部署规约(DeploymentSpecification)
    • 它是一个属性的集合,是一类特殊的制品,说明了其他制品是如何部署到节点中的
    • 它提供了其他制品如何成功的在节点上运行的信息
    • 部署规约用构造型<< deployment spec>>表示
  • 可以用指向制品的依赖箭头将部署规约与制品绑定
    在这里插入图片描述
  • 可以将部署规约用虚线连接在制品和节点间的部署箭头上
    在这里插入图片描述

通信路径

通信路径表示节点间的通信,用实心线表示
在这里插入图片描述

第八章小结

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

前端监控学习笔记

现成的SDK SentryFun Debug 需要监控什么&#xff1f; 错误统计 记录我们代码发布到线上各种奇奇怪怪的错误 行为日志埋点 记录用户行为&#xff0c;比如&#xff1a;分析用户浏览时间比较长的页面有哪些&#xff0c;常常点击的有哪些&#xff0c;可以做 相应的推荐 PV/UV统…

管理类联考-性质

性质 ——性质—— 一、是什么 &#xff08;1&#xff09;本质&#xff1a;判断一定范围内的对象是否具备某个性质的命题就是性质命题&#xff08;直言命题&#xff09;。直言命题是断定事物/对象是否具有某种性质的命题。直言命题在结构上由主项、谓项、联项和量项组成。 &am…

【ArcGIS Pro微课1000例】0039:制作全球任意经纬网的两种方式

本文讲解在ArcGIS Pro中制作全球任意经纬网的两种方式。 文章目录 一、生成全球经纬网矢量1. 新建地图加载数据2. 创建经纬网矢量数据二、布局生成经纬网1. 新建布局2. 创建地图框2. 创建经纬网一、生成全球经纬网矢量 以1:100万比例尺地图分幅为例,创建经差6、维差4的经纬网…

<软考>软件设计师-1计算机组成与结构(总结)

(一)计算机系统基础知识 1 计算机硬件组成 计算机的基本硬件系统由运算器、控制器、存储器、输入设备 和 输出设备 5大部件组成。 1 运算器、控制器等部件被集成在一起统称为中央处理单元(CPU) 。CPU是硬件系统的核心&#xff0c;用于数据的加工处理&#xff0c;能完成各种算…

gitlab高级功能之容器镜像仓库

今天给大家介绍一个gitlab的高级功能 - Container Registry&#xff0c;该功能可以实现docker镜像的仓库功能&#xff0c;将gitlab上的代码仓的代码通过docker构建后并推入到容器仓库中&#xff0c;好处就是无需再额外部署一套docker仓库。 文章目录 1. 参考文档2. Container R…

mybatis数据输入-Map类型参数输入

1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSERT INTO t_emp(emp_name,emp_salary) VALUES("tom",200.33); INSERT INTO…

P1 嵌入式开发之什么是Linux应用开发

目录 前言 01 .Linux应用与裸机编程、驱动编程之间的区别 1.1裸机编程&#xff1a; 1.2 驱动编程 1.3应用编程 前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《Linux C应用编程&a…

波奇学C++:智能指针(二):auto_ptr, unique_ptr, shared_ptr,weak_ptr

C98到C11&#xff1a;智能指针分为auto_ptr, unique_ptr, shared_ptr&#xff0c;weak_ptr,这几种智能都是为了解决指针拷贝构造和赋值的问题 auto_ptr&#xff1a;允许拷贝&#xff0c;但只保留一个指向空间的指针。 管理权转移&#xff0c;把拷贝对象的资源管理权转移给拷贝…

Centos7.9搭建zabbix6.4.0过程及报错注意点

搭建参考此链接即可&#xff1a;https://blog.csdn.net/PerDrix/article/details/129624091 报错整理&#xff1a; 一、zabbix6.0以上版本默认必须安装mysql 8.0.30以上版本数据库&#xff0c;否则服务起不来 二、编译安装zabbix时&#xff0c;必须执行如下操作&#xff0c;…

LeetCode算法题解(动态规划)|LeetCode1143. 最长公共子序列、LeetCode1035. 不相交的线、LeetCode53. 最大子数组和

一、LeetCode1143. 最长公共子序列 题目链接&#xff1a;1143. 最长公共子序列 题目描述&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一…

四、设置主机名和域名映射

目录 1、配置每台虚拟机主机名 2、配置每台虚拟机域名映射 1、配置每台虚拟机主机名

Unity对接后台和加载图片

1、前言 在unity中与后台对接&#xff0c;用await在web端暂时还不支持&#xff0c;所以&#xff0c;协程成为比较好的通用方式&#xff0c;以下适用除post访问外的所有对接 2、对接后台 2.1、安装插件 首先我们需要用到Newtonsoft.dll&#xff0c;如果没有这个.dll的请跟着我…

vue权限管理解决方案

一. 什么是权限管理 权限控制是确保用户只能访问其被授权的资源和执行其被授权的操作的重要方面。而前端权限归根结底是请求的发起权&#xff0c;请求的发起可能有下面两种形式触发 页面加载触发页面上的按钮点击触发 总体而言&#xff0c;权限控制可以从前端路由和视图两个…

QProcess 启动 进程 传参数 启动控制台进程 传参

目录 QProcess 启动外部程序的两种方式 依赖式 分离式&#xff1a; 启动进程前的预处理 设置启动路径 设置启动命令参数 设置启动工作目录 设置启动所需环境&#xff1a; 启动的状态 code smple: QProcess 控制台进程 QProcess启动控制台不显示窗口 注意&#xff1a;…

jvm基本概念,运行的原理,架构图

文章目录 JVM(1) 基本概念:&#xff08;2&#xff09;运行过程 今天来和大家聊聊jvm&#xff0c; JVM (1) 基本概念: JVM 是可运行Java代码的假想计算机&#xff0c;包括一套字节码指令集、一组寄存器、一个栈一个垃圾回收&#xff0c;堆 和 一个存储方法域。JVM 是运行在操作…

9.ROS的TF坐标变换(三):坐标系关系查看与一个案例

1 查看目前的坐标系变化 我们先安装功能包&#xff1a; sudo apt install ros-melodic-tf2-tools安装成功&#xff01; 我们先启动上次的发布坐标变换的节点&#xff1a; liuhongweiliuhongwei-Legion-Y9000P-IRX8H:~/Desktop/final/my_catkin$ source devel/setup.bash liuho…

cyclictest 交叉编译与使用

目录 使用版本问题编译 numactl编译 cyclictest使用参考 cyclictest 主要是用于测试系统延时&#xff0c;进而判断系统的实时性 使用版本 rt-tests-2.6.tar.gz numactl v2.0.16 问题 编译时&#xff0c;需要先编译 numactl &#xff0c;不然会有以下报错&#xff1a; arm-…

Linux:优化原则

web系统的优化原则&#xff1a; 从单机到集群 对Linux系统自身的优化原则&#xff1a;

TCP报文解析

1.端口号 标记同一台计算机上的不同进程 源端口&#xff1a;占2个字节&#xff0c;源端口和IP的作用是标记报文的返回地址。 目的端口&#xff1a;占2个字节&#xff0c;指明接收方计算机上的应用程序接口。 TCP报头中的源端口号和目的端口号同IP报头中的源IP和目的IP唯一确定一…

【QT】Windows环境下,cmake引入QML

这里使用的QT库为5.7版本。 1、添加环境变量 QT库根目录环境变量 QTDIR QT库平台插件环境变量 QT_PLUGIN_PATH QML支持环境变量 QML2_IMPORT_PATH &#xff08;该环境变量仅在需要使用QML时添加&#xff09; QT库动态库环境变量&#xff0c;bin目录下包含了QT程序运行所需的dl…