软件物理架构与逻辑架构在软件架构中的应用

2023-10-27

在不同的架构设计方法中出现的软件架构视图种类很多,本文介绍最常用的两种架构视图——逻辑架构视图和物理架构视图,并通过具体案例的分析说明如何运用它们进行架构设计。

当观察和描述事物大局的时候,逻辑架构和物理架构是最常用的角度。比如,以我们办公室里的局域网为例:从物理角度看,所有计算机“毫无区别”地连接到路由器上;而从逻辑角度看呢,就发现这些计算机是有区别的——一台计算机充当文件服务器,而其它计算机是可以访问服务器的客户机。如图1所示。

 

图1  区分物理视角与逻辑视角

同样,在软件架构设计过程中,也可以通过区分软件的逻辑架构和物理架构,分别从不同的角度设计和描述软件架构。

所谓软件架构视图,是指设计和看待整个软件系统的特定视角。每个软件架构视图关注系统架构的不同方面,针对不同的目标和用途。也就是说,架构要涵盖的内容和决策太多了,超过了人脑“一蹴而就”的能力范围,因此采用“分而治之”的办法从不同视角分别设计;同时,也为软件架构的理解、交流和归档提供了方便。

逻辑架构

软件的逻辑架构规定了软件系统由哪些逻辑元素组成、以及这些逻辑元素之间的关系。

软件的逻辑元素一般指某种级别的功能模块,大到我们熟悉的逻辑层(Layer),以及子系统、模块,小到一个个的类。至于具体要分解到何种大小的功能模块才可结束软件架构设计,并不存在一个“一刀切”的标准——只要足够明确简单,能够分头开发就可以了。于是,在实践中我们往往将关键机制相关的架构设计部分明确到类,而一般功能则到模块甚至子系统的接口定义即可。

值得说明的是,功能模块有时容易识别,有时却比较隐含。而比较全面地识别功能块、规划功能块的接口、明确功能块之间的使用关系和使用机制,正是软件逻辑架构设计的核心任务所在。对此,Ivar Jacobson曾有过极为形象的说法,“软件系统的架构涵盖了整个系统,尽管架构的有些部分可能只有‘一寸深’”。

图2展示了一个网络设备管理系统逻辑架构设计的一部分,我们借此来举例说明软件逻辑架构设计的3大核心任务

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件物理架构与逻辑架构在软件架构中的应用 的相关文章

随机推荐

  • Python三维点云实战:从入门到深度学习

    Python三维点云实战 从入门到深度学习 三维点云是现代计算机视觉和机器学习领域中一个非常重要的数据形式 具有广泛应用 本文将介绍如何在Python中使用Open3D这个开源库读取 可视化 处理和分割三维点云 此外 我们还将介绍如何使用P
  • uniapp 分页,分为scroll-view以及页面下拉刷新 onReachBottom两种情况

    1 包含在scroll view里的滚动分页
  • 我的编程之路~常用Python代码和函数分享

    在学习编程的过程中 我们会遇到大量的代码 函数和概念 为了能够更好地掌握和记忆这些内容 我通常会记录下来作为学习的参考 下面我来分享一些我常用的Python代码和函数 希望能给小伙伴们带来帮助 1 列表操作 创建列表 使用方括号 例如 li
  • SpringMVC集成Swagger2,初尝试和遇到的相关问题

    本文章更新页请至 http blog csdn net MikeLC7 article details 75088123 之前项目的接口文档都是手动编写Word文档来做 制作成本较高 并且在进行版本迭代的时候进行标注和说明不是很方便 后来发
  • 电池的安规认证(IEC/EN)和航空运输认证UN38.3

    IEC62133 EN62133认证标准 使用范围及介绍 可充电电池和电池组 碱性或其他非酸性电解质 密封便携式电池的安全要求 测试项目测试项目 连续低倍率充电 振动 高温模壳应力 高低温循环 反充电 镍电 外部 短路 自由跌落 机械冲击
  • H5页面,上下滑动翻页

    针对之前的版本 https blog csdn net qq 16494241 article details 78095575进行了升级修改 改用原生JS编写 之前的基于JQ 可设置页面内容元素内部滚动及滚动至顶部或最底部触发翻页效果 P
  • 海湾标准汉字码表查询_标准汉字码表

    A 安 1618 暗 1621 按 1620 案 1624 B 吧 1641 八 1643 白 1655 百 1657 班 1664 般 1667 板 1669 半 1675 办 1676 帮 1679 棒 1684 包 1692 薄 17
  • Oracle navicat新建表空间,用户

    第一次使用oracle 记录一下遇到的不少坑 新建表空间 1 点击其它 gt 表空间 gt 新建表空间 2 填好基本信息 然后点击保存 大小 物理路径 自动扩展on off以及大小 创建好表空间后 新建用户 1 第一次使用的话 首先重启数据
  • linux特殊权限位之setuid、setgid和sticky

    我们登陆到系统之后 创建一个普通文件或者目录的时候 会有一个默认的权限 普通文件是644 目录文件是755 想必大家都知道这个是由umask这个值决定的 我们可以直接执行umask命令查看 linux系统默认的umask值是0022 想改变
  • 组合预测模型

    组合预测模型 EMD KPCA LSTM EMD LSTM LSTM多输入单输出回归预测对比 Matlab程序 目录 组合预测模型 EMD KPCA LSTM EMD LSTM LSTM多输入单输出回归预测对比 Matlab程序 预测结果
  • 声音反卷积matlab,用MATLAB做反卷积

    关键词 反卷积 MATLAB fft 频移 分母中频谱零点 卷积核 代码如下 clear all clc h 1 1 1 1 要求 f 1 2 3 2 已知 g conv h f 已知 g h f 这里卷积结果g知道 f知道 f视作卷积核
  • 在idea中使用JaCoCo插件统计单元测试覆盖率

    在后台工程师开发完新代码交给QA进行测试时 软件测试人员一般都会要求后台开发对单元测试的覆盖率达到一定的标准 例如我们的标准是分支覆盖率达到50 以上 函数覆盖率达到50 以上 在idea中查看覆盖率挺简单的 idea中支持三种插件来查看覆
  • SpringCloud详解

    SpringCloud是一个基于SpringBoot的分布式系统开发框架 它能够帮助我们快速 稳定地构建分布式系统 本篇博客将对SpringCloud进行详细解析 介绍SpringCloud的主要组件和相关应用场景 同时提供代码示例以帮助读
  • Linux查看端口、进程情况及kill进程

    看端口 ps aux grep tomcat 发现并没有8080端口的Tomcat进程 使用命令 netstat apn 查看所有的进程和端口使用情况 发现下面的进程列表 其中最后一栏是PID Program name 发现8080端口被P
  • Response对象-响应字符数据

    Response响应数据 1 response将字符数据返回到浏览器 需要两步 通过response对象获取字符输出流PrintWriter writer resp getWriter 通过字符输出流写数据 writer writer aa
  • 【语义分割】一篇看完就懂的最新深度语义分割模型综述

    点击上方 AI算法修炼营 选择加星标或 置顶 标题以下 全是干货 引言 语义分割结合了图像分类 目标检测和图像分割 通过一定的方法将图像分割成具有一定语义含义的区域块 并识别出每个区域块的语义类别 实现从底层到高层的语义推理过程 最终得到一
  • 解决Struts 中There is no Action mapped for namespace / and action name...

    自己调试的时候报这个错误 也是找了很久 试了很多网上的方法 最后发现是因为自己的请求写错了 struts中是这样的
  • 超详细进制转换(二进制、八进制、十进制、十六进制)详解

    目录 在学习四种进制转换之前先了解一下自种进制的特点 一 整数转换 1 十进制转R进制 2 R进制转十进制 3 二进制转八进制 十六进制 4 八进制转二进制 二 小数转换 1 十进制转R进制 2 R进制转十进制 在学习四种进制转换之前先了解
  • 华为云中对象存储服务软件开发工具包(OBS SDK) C语言介绍

    华为云的OBS介绍 摘自华为云官网 https support huaweicloud com obs index html 华为云的对象存储服务 Object Storage Service OBS 是一个基于对象的海量存储服务 为客户提
  • 软件物理架构与逻辑架构在软件架构中的应用

    在不同的架构设计方法中出现的软件架构视图种类很多 本文介绍最常用的两种架构视图 逻辑架构视图和物理架构视图 并通过具体案例的分析说明如何运用它们进行架构设计 当观察和描述事物大局的时候 逻辑架构和物理架构是最常用的角度 比如 以我们办公室里