软件体系结构

第一章

构件

具有某种功能的

可复用的软件结构单元,为组装服务,可部署,具有规范的接口规约和显式的语境依赖

构件模型

构件模型是对构件本质特征的抽象描述,可以把它想象成一个类的组合,它封装了多个类,并具有一个或多个服务而提供了简单的接口。

构件重用

构件重用是指在软件开发过程中,复用已有的软件构件,并将其集成到新系统中,以实现软件生产的高效率、高质量和低成本。这里的构件可以是源代码、设计文档、测试用例等任何可重用的软件元素。

软件体系结构定义

由构件+连接件+拓扑结构+约束+质量属性组成

软件体系结构的作用

交流的手段,可复用可传递的模型,体现关键决策

软件体系结构的发展历史

汇编语言->数据流图控制流图->uml->以描述系统的高层抽象为中心,4+1模型

第二章

软件体系结构描述

非标准的图形符号,uml,mil.adl

(1)⾮标准图形符号描述:语义丰富、不精确、没有形式化基础;

(2)统⼀建模语⾔UML:语义丰富、相对精确、有少量的形式化基础;

(3)模块接⼝语⾔:语义⽐较丰富,但局限在实现级别,层次较低,语义精确,有编译器作保 证,没有或极少有形式化基础;

(4)体系结构描述语⾔ADL:语义不够丰富,语义精确,有形式化基础。

软件体系结构的核心概念

构件:可复用的软件体系结构单元

连接件:构件之间的交互并实现构件之间的连接

接口与服务  构件作为封装的实体,通过接口与外部环境交互,内部实现的功能以服务的形式体现出来并通过接口向外发布,进而产生与其他构件之间的关联

构件的粒度 构件的相对大小,规模,细节程度或关注程度的一个属性

连接 构件间建立与维护行为关联与信息传递的途径, 需要有实现连接的物质基础以及连接的协议支持

同步:过程调用开始,调用者必须等待被调用过程执行完成,才能执行后续任务

异步:过程调用开始,同时调用者不用等待,而是继续执行后续任务

软件体系结构模型

sa作用

利于交流

利于分析验证SA设计的优劣

指导开发人员开发

为之后的软件维护提供文档

Sa建模的三个层次

图形化模型,

形式化模型,

文档化模型

(1)图形化模型: 从不同的视⻆描述特定系统的体系结构,从⽽得到多个视图,并将这些视图组织起来以描述整体的SA模型;

(2)形式化模型: 在SA基本概念的基础上,选取适当的形式化或半形式化的⽅法来描述⼀个特定的体系结构;

(3)⽂档化模型: 记录和整理软件体系结构设计⽅案的各类细节。

使用多视图建模的原因

系统复杂,简单的一维模型无法描述

从多个角度建立模型,分别刻画某一方面的性质,体现关注点分离

4+1视图模型

逻辑视图  描述系统的功能 功能需求,系统最终提供给用户的服务,类图,活动图,顺序图

开发视图  描述系统子系统,模块之间的关系 模块视图,实现视图,开发期质量属性 可扩展可重用可移植易理解易测试,构件图

处理视图  描述系统进程以及之间的通信协作关系 ,运行期质量属性,类图,交互图,状态转换图

物理视图  描述系统如何被安装部署 安装与部署需求,部署图,包图

场景视图  描述系统典型场景与功能 用例视图,最终用户所需求的功能

系统的静态结构:逻辑视图,开发视图

系统的动态结构:物理视图,进程视图

软件体系结构的生命周期

非规范化描述->规范化描述->求精与验证->实施->演化与扩展->评价与度量->终结

第三章

软件体系结构风格概述

软件体系结构⻛格是指设计、组织和实现软件体系结构的各种惯⽤模式和习惯⽤法,是对⼀系列体系结构设计的抽象。

数据流体系结构风格

批处理 

每一个处理步骤是独立的程序

每一步必须在前一步结束后才能开始

数据必须是完整的,以整体的方式传递

管道过滤器

系统分解为几个顺序的处理步骤,即是过滤器

这些步骤之间通过数据流进行连接,即是管道

每个过滤器都有一组输入与输出

过滤器从管道中读取输入的数据流,经过内部处理,然后产生输出数据流并写入管道中

管道过滤器的优点

高内聚,低耦合,

将复杂的输入输出看成多个过滤器行为的简单合成

支持软件复用

系统维护和增强系统性能简单

允许对一些如吞吐量,死锁等属性的分析

支持并行执行

管道过滤器的缺点

导致进程成为批处理的结构

不适合处理交互的应用

增加编写过滤器的复杂性,导致系统性能下降

批处理与管道过滤器的比较

相似点:

都把任务分解为一系列固定顺序的计算单元

彼此之间通过数据传递交互

不同点:

层次体系结构风格

系统分为若干个层次,每一个层次由一系列构件构成

下层构件向上层构件提供服务

上层构件被看作下层构件的客户端

交互只在相邻的层次之间发生

优点:基于抽象递增,支持功能增强,支持重用

缺点:难以分层

C/S 与 B/S体系结构风格

⼆层C/S、三层C/S、B/S,以及C/S与B/S混合架构⻛格示意图及其含义

答:

B/S(browser/server): 浏览器-服务端架构,由浏览器向服务器发送请求,服务器向浏览器 ⻚⾯进⾏响应。

C/S(client/server): 客户端-服务端,由客户端应⽤向服务器发送⽹络请求,有服务端向客户端应⽤响应。客户端通常负责处理⽤户界⾯和输⼊数据,⽽服务器则负责处理应⽤程序逻辑和数据存储。

三层C/S,它将应⽤程序分成三个层次:表示层(Presentation Layer)、应⽤层(Application Layer)和数据层(Data Layer)。表示层负责处理⽤户界⾯,应⽤层负责处理应⽤程序逻辑, 数据层负责处理数据存储和检索。

B/S、C/S混合架构:指将B/S架构和C/S架构进⾏结合,通过服务器端的中间件来协调前端浏览器和后端应⽤程序之间的交互。在这种架构中,前端⽤户界⾯仍然是基于浏览器的Web应⽤程 序,但是通过中间件与后端服务器进⾏交互,后端服务器可以提供更多的应⽤逻辑和数据处理 功能。
 

胖客户端:客户端有较多的的业务处理逻辑

瘦客户端:客户端很少的业务处理逻辑

事件系统风格

事件系统包括发布,订阅,等基本过程

系统中的组件将发布事件到事件中心

其他组件可以订阅这个事件

当事件被传播时自动调用已经订阅了该事件的组件

该组件内部事件处理程序执行

每个事件订阅者有自己独立的事件处理程序

事件发布者不关心她所发布的事件如和被调用

仓库风格

第四章

为什么引入soa

需求拉动,技术推动

什么是soa

面向服务的软件体系结构

Soa典型特征

分布式异构系统的集成与互操作

松散耦合

大数据量低频率访问

基于文本的信息传递

上下文无关

大粒度复用

Soa实现

Web服务,企业服务总线

第五章

中间件

一种软件,位于系统软件与应用软件之间,使得应用层中的各个应用成分实现跨网络的协同工作

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

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

相关文章

Spark 的Standalone集群环境安装与测试

目录 一、Standalone 集群环境安装 (一)理解 Standalone 集群架构 (二)Standalone 集群部署 二、打开监控界面 (一)master监控界面 (二)日志服务监控界面 三、集群的测试 &a…

react的antd-mobile使用Steps显示物流

antd-mobile的图标,是需要安装依赖的 step如果只有一个步骤是不会展示的,代码里面的标题那块可以看出来 尝试了很多遍测试发现一直不显示,查询后发现是这个组件的本身设置的原因 那么就算你只展示一个那么也要写两个step,第二个…

基于鸟类AI识别的果园智能物联网解决方案

1. 项目背景 我国拥有广阔的果园种植面积,但每年因鸟类造成的损失高达数亿元。传统的防鸟害措施,如建立防护网和使用物理化学方法,效果并不理想,且成本较高。为了解决这一问题,深圳快瞳科技有限公司的提出基于鸟类AI识…

让Erupt框架支持.vue文件做自定义页面模版

Erupt是什么? Erupt 是一个低代码 全栈类 框架,它使用 Java 注解 动态生成页面以及增、删、改、查、权限控制等后台功能。 零前端代码、零 CURD、自动建表,仅需 一个类文件 简洁的注解配置,快速开发企业级 Admin 管理后台。 提…

如何优雅处理异常?处理异常的原则

前言 在我们日常工作中,经常会遇到一些异常,比如:NullPointerException、NumberFormatException、ClassCastException等等。 那么问题来了,我们该如何处理异常,让代码变得更优雅呢? 1 不要忽略异常 不知…

DBAPI连接阿里云 maxcompute 报错

使用正确的驱动包 访问以下链接寻找驱动包 https://github.com/aliyun/aliyun-odps-jdbc/releases/tag/v3.4.3 注意要使用odps-jdbc-3.4.3-jar-with-dependencies.jar ,这个是完整的jar包 不要使用odps-jdbc-3.4.3.jar,这个不是完整的,它还…

2024最新Python安装教程+Pycharm安装教程【附安装包】

Python安装 1.首先下载好Python安装包 获取方式:点击这里(扫描神秘②薇码免下载)完全免费!!! 2.打开安装包,先勾选最下面两个选项,再选择第二个自定义安装 3.这里默认全选&#xff…

【数据库】elasticsearch

1、架构 es会为每个索引创建一定数量的主分片和副本分片。 分片(Shard): 将索引数据分割成多个部分,每个部分都是一个独立的索引。 主要目的是实现数据的分布式存储和并行处理,从而提高系统的扩展性和性能。 在创建索…

JAVA基础:数组 (习题笔记)

一,编码题 1,数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”&…

【学习】使用webpack搭建react项目

前言 在日常工作中,我大多是在已有的项目基础上进行开发,而非从头构建项目。因此,我期望通过本次学习能填补我在项目初始化阶段知识的空白,与大家共同进步。在此过程中,我欢迎并感激任何指正或建议,无论是…

什么是人工智能体?

人工智能体(AI Agent)是指能够感知环境、做出决策并采取行动以实现特定目标的自主实体。以下是对人工智能体的具体介绍: 定义与核心概念 智能体的定义:智能体,英文名为Agent,是指具有智能的实体&#xff0…

【初阶数据结构篇】链式结构二叉树(续)

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…

二叉树 最大深度(递归)

给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,2] 输出…

python机器人Agent编程——实现一个本地大模型和爬虫结合的手机号归属地天气查询Agent

目录 一、前言二、准备工作三、Agent结构四、python模块实现4.1 实现手机号归属地查询工具4.2实现天气查询工具4.3定义创建Agent主体4.4创建聊天界面 五、小结PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源ps3.wifi小车控制相关…

python安装selenium,geckodriver,chromedriver

安装浏览器 找到浏览器的版本号 chrome 版本 130.0.6723.92(正式版本) (64 位) firfox 116.0.3 (64 位),但是后面运行的时候又自动更新到了 127.0.0.8923 安装selenium > pip install selenium > pip show …

基于SSM+uniapp的营养食谱系统+LW参考示例

1.项目介绍 功能模块:用户管理、年龄类型管理、阶段食谱管理、体质类型管理、季节食谱管理、职业食谱管理等系统角色:管理员、普通用户技术栈:SSM,uniapp, Vue等测试环境:idea2024,HbuilderX&a…

python常用的第三方库下载方法

方法一:打开pycharm-打开项目-点击左侧图标查看已下载的第三方库-没有下载搜索后点击install即可直接安装--安装成功后会显示在installed列表 方法二:打开dos窗口输入命令“pip install requests“后按回车键,看到successfully既安装成功&…

vue项目安装组件失败解决方法

1.vue项目 npm install 失败 删除node_modules文件夹、package-lock.json 关掉安装对话框 重新打开对话框 npm install

qt QComboBox详解

QComboBox是一个下拉选择框控件,用于从多个选项中选择一个。通过掌握QComboBox 的用法,你将能够在 Qt 项目中轻松添加和管理组合框组件,实现复杂的数据选择和交互功能。 重要方法 addItem(const QString &text):将一个项目添…

window 利用Putty免密登录远程服务器

1 在本地电脑用putty-gen生成密钥 参考1 参考2 2 服务器端操作 将公钥上传至Linux服务器。 复制上述公钥到服务器端的authorized_keys文件 mkdir ~/.ssh vi ~/.ssh/authorized_keys在vi编辑器中,按下ShiftInsert键或者右键选择粘贴,即可将剪贴板中的文…