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

构件图

构件图概述

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

构件图的作用

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

构件图的组成

  • 构件图三元素
    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.mfbz.cn/a/211391.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java学习part30callabel和线程池方式

140-多线程-线程的创建方式3、4&#xff1a;实现Callable与线程池_哔哩哔哩_bilibili 1.Callable 实现类 使用方式 返回值 2.线程池

Linux expect命令详解

在Linux系统中&#xff0c;expect 是一款非常有用的工具&#xff0c;它允许用户自动化与需要用户输入进行交互的程序。本文将深入探讨expect命令的基本语法、使用方法以及一些最佳实践。 什么是Expect命令&#xff1f; expect 是一个用于自动化交互式进程的工具。它的主要功能…

【PyTorch】线性回归

文章目录 1. 代码实现1.1 一元线性回归模型的训练 2. 代码解读2.1. tensorboardX2.1.1. tensorboardX的安装2.1.2. tensorboardX的使用 1. 代码实现 波士顿房价数据集下载 1.1 一元线性回归模型的训练 import numpy as np import torch import torch.nn as nn from torch.ut…

Ext4文件系统解析(二)

1、前言 想要了解EXT文件系统的工作原理&#xff0c;那了解文件系统在磁盘上的分布就是必不可少的。这一节主要介绍EXT文件系统硬盘存储的物理结构。 由于当前主流的CPU架构均采用小端模式&#xff0c;因此下文介绍均已小端模式为准。 2、超级块 2.1 属性 下表列举出超级块…

Java 8 中 ReentrantLock 与 Synchronized 的区别

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

分布式ID生成框架Leaf升级踩坑

背景&#xff1a; 在项目中需要一个统一的拿单号等唯一ID的服务&#xff0c;就想起了之前用到的leaf&#xff0c;但是因为项目要求&#xff0c;leaf的版本不符合&#xff0c;需要做一些升级 项目地址&#xff1a;https://github.com/Meituan-Dianping/Leaf 升级点&#xff1…

231202 刷题日报

周四周五&#xff0c;边值班边扯皮&#xff0c;没有刷题。。 今天主要是做了: 1. 稀疏矩阵压缩&#xff0c;十字链表法 2. 快速排序 3.349. 两个数组的交集​​​​​ 4. 174. 地下城游戏 要注意溢出问题&#xff01;

Motion 5 for Mac,释放创意,打造精彩视频特效!

Motion 5 for Mac是一款强大的视频后期特效处理软件&#xff0c;为Mac用户提供了无限的创意可能性。无论你是专业的影视制作人&#xff0c;还是想为个人视频添加独特特效的爱好者&#xff0c;Motion 5都能满足你的需求&#xff0c;让你的视频脱颖而出。 Motion 5提供了丰富多样…

跳表的基础

跳表的作用 无需数组查找目标元素-----从头遍历---O(n); 有序数组查找目标元素-----二分查找---O(logn); 链表查找目标元素----------只能从头遍历---O(n); 那么链表要如何实现O(logn)的查找时间复杂度呢-----跳表。 跳表的定义 有序链表多级索引跳表 就是一个多级链表 …

TA-Lib学习研究笔记(八)——Momentum Indicators 中

TA-Lib学习研究笔记&#xff08;八&#xff09;——Momentum Indicators 中 Momentum Indicators 动量指标&#xff0c;是最重要的股票分析指标&#xff0c;能够通过数据量化分析价格、成交量&#xff0c;预测股票走势和强度&#xff0c;大部分指标都在股票软件中提供。 11. …

力扣题:字符串的反转-11.22

力扣题-11.22 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;541. 反转字符串 II 解题思想&#xff1a;进行遍历翻转即可 class Solution(object):def reverseStr(self, s, k):""":type s: str:type k: int:rtype: str"&quo…

[计算机网络] 高手常用的几个抓包工具(下)

文章目录 高手常用的抓包工具一览什么是抓包工具优秀抓包工具HTTP Debugger ProFree Network AnalyzerKismetEtherApeNetworkMiner 结尾 高手常用的抓包工具一览 什么是抓包工具 抓包工具是一种可以捕获、分析和修改网络流量的软件。它可以帮助您进行网络调试、性能测试、安全…

JavaScript 延迟加载的艺术:按需加载的最佳实践

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

cyclictest 交叉编译与使用

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

Android 中的权限

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、权限分类3.1 安装时权限3.2 运行时…

Java面试题(每天10题)-------连载(41)

目录 Spring篇 1、什么是Spring框架&#xff1f;Spring框架主要有哪些模块&#xff1f; 2、使用Spring框架能带来哪些好处&#xff1f; 3、什么是控制反转&#xff08;IOC&#xff09;&#xff1f;什么是依赖注入&#xff1f; 4、解释下Spring中的IoC? 5、BeanFactory和…

docker-compose Foxmic dt版

Foxmic dt 版前言 实现企业对资产的基本管理,包含对资产的登记、维修、调拨、转移等基本功能的支持,并提供对资产的耗材、库存进行管理,有完善的组织架构,非常适合中小企业的需求系统整体覆盖了基本的资产管理、合同管理、运维服务、运维服务、数据中心设备管理等多个模块。…

深入理解原码、反码、补码(结合C语言)

一、引出问题 在学习C语言单目操作符中~按位取反的过程中&#xff0c;对这样一段代码的结果产生了疑惑&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>int main() {int a 0;int b ~a;//按位取反printf("%d\n", b);return 0; }输出结果…

使用trigger-forward跨流水线传递参数

参考文档&#xff1a;https://docs.gitlab.com/ee/ci/yaml/#triggerforward 今天给大家介绍一个gitlab CI/CD的关键字 - forward&#xff0c;该关键字是一个比较偏的功能&#xff0c;但同时也是一个很实用的功能&#xff0c;我们通过在gitlab的ci文件中使用forward关键字&#…

二叉树遍历及应用

文章目录 前言构建二叉树前序遍历中序遍历后序遍历二叉树的结点个数二叉树的叶节点个数二叉树的高度二叉树第K层结点个数 前言 二叉树的遍历及应用主要是运用了递归、分治的思想。在这一篇文章&#xff0c;小编将介绍二叉树的前序遍历、中序遍历、后序遍历&#xff0c;求二叉树…
最新文章