软件体系结构

第一章

构件

具有某种功能的

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

构件模型

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

构件重用

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

软件体系结构定义

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

软件体系结构的作用

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

软件体系结构的发展历史

汇编语言->数据流图控制流图->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.xdnf.cn/news/3702.html

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

相关文章

基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发

在中医针灸的传统治疗中,穴位取穴的精确度对于治疗效果至关重要。然而,传统的定位方法,如体表标志法、骨度折量法和指寸法,由于观察角度、个体差异(如人体姿态和皮肤纹理)以及环境因素的干扰,往…

华硕推出Intel Xeon 6/ Gaudi 3服务器 加速企业AI布局!

(10月23日,台北讯) 华硕服务器新品接力强势助攻,今再推出多款搭载Intel Xeon 6处理器的服务器,包括:多节点的ASUS RS920Q-E12,其兼容适用HPC运算的Intel Xeon 6900系列处理器;以及ASUS RS720Q-E12、RS720-E…

[MySQL#11] 索引底层(2) | B+树 | 索引的CURD | 全文索引

目录 1.B树的特点 索引结构 复盘 其他数据结构的对比 B树与B树总结 聚簇索引与非聚簇索引 辅助索引 2. 索引操作 主键索引 1. 创建主键索引 第一种方式 第二种方式 第三种方式 2. 查询索引 第一种方法 第二种方法 第三种方法 3. 删除索引 删除主键索引 删除…

人工智能基础-opencv-图像处理篇

一.图像预处理 图像翻转 cv2.flip 是 OpenCV 库中的一个函数,用于翻转图像。翻转可以是水平翻转、垂直翻转或同时水平和垂直翻转。这个函数接受两个参数:要翻转的图像和一个指定翻转类型的标志。 img cv2.imread(../images/car2.png) #翻转 0&#xf…

【机器学习】嘿马机器学习(科学计算库)第4篇:Matplotlib,学习目标【附代码文档】

本教程的知识点为:机器学习(常用科学计算库的使用)基础定位 机器学习概述 机器学习概述 1.5 机器学习算法分类 1 监督学习 机器学习概述 1.7 Azure机器学习模型搭建实验 Azure平台简介 Matplotlib 3.2 基础绘图功能 — 以折线图为例 1 完善原…

平衡二叉树(递归)

给定一个二叉树,判断它是否是 平衡二叉树.平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:true示例 2: 输入:root [1,2,2,3,3,null,null,4…

Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)

案例背景 虽然在效果上,传统的逻辑回归模型通常不如现代的机器学习模型,但在风控领域,解释性至关重要。逻辑回归的解释性是这些“黑箱”模型所无法比拟的,因此,研究传统的评分卡模型依然是有意义的。 传统的评分卡模型…

Weblogic漏洞复现(Vulhub)

0x00前言 1.docker 安装 Docker的安装_docker安装-CSDN博客 2.docker的镜像 1.可以在阿里云上的容器服务找到镜像源。 2.也可以使用下面的镜像源,时快时慢不稳定。 {"registry-mirrors":["https://docker.registry.cyou","https://d…

【Python环境配置-Step1】PyCharm 2024最新官网下载、安装教程

背景: 1、 步骤: 1、PyCharm 官网下载地址:https://www.jetbrains.com/pycharm/ 2、查看下图红框选中,下载社区版(免费) 3、(查看下图红框选中)这里选其他版本 4、这里我下载的…

用vite创建项目

一. vite vue2 1. 全局安装 create-vite npm install -g create-vite 2. 创建项目 进入你想要创建项目的文件夹下 打开 CMD 用 JavaScript create-vite my-vue2-project --template vue 若用 TypeScript 则 create-vite my-vue2-project --template vue-ts 这里的 …

FBX福币交易所A股三大指数小幅低开 稀土永磁板块回调

查查配分析11月5日电 周二,A股三大指数小幅低开。沪指开盘跌0.10%报3306.81点,深证成指开盘跌0.09%报10653.20点,创业板指开盘跌0.05%报2184.90点。 FBX福币凭借用户友好的界面和对透明度的承诺,迅速在加密货币市场中崭露头角,成为广大用户信赖的平台。 来源:同花顺iFinD 盘面…

LeetCode总结-链表

一、遍历链表 1290.二进制链表转整数 2058.找出临界点之间的最小和最大距离 2181.合并零之间的节点 二、删除节点 问:为什么没有修改 dummy,但 dummy.next 却是新链表的头节点?如果删除了 head,那么最后返回的是不是原链表的头…

腐蚀图像分割系统:前端交互展示

腐蚀图像分割系统源码&数据集分享 [yolov8-seg-C2f-DySnakeConv&yolov8-seg-LSKNet等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al…

NIM 平台生成式 AI-demo

需要python环境 官网注册:(后续调用模型需要秘钥key)Try NVIDIA NIM APIs 可以看到有多种模型: 官方案例 1.安装相关依赖: pip install langchain_nvidia_ai_endpoints langchain-community langchain-text-splitt…

欢迎使用Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

智慧医疗:AI如何改变传统医疗服务模式?

内容概要 在如今的医疗界,智慧医疗正如一阵旋风,呼啸而来,打破了传统的模式。这一变革的核心,毫无疑问是人工智能。想象一下,一个不需要排队候诊、甚至不需要出门的医生——这就是智能助手的非凡魅力!通过…

1.kubernetes作用及组件

容器管理集群名称叫做k8s 容器的编排工具:swarm,kubesphere,open shift,kubernetes【市场占比大】 一.kubernetes介绍 1.kubernetes是什么? 由谷歌公司开源的应用,基于go语言编写 简称k8s 2.kubernet…

【AcWing】算法基础课-动态规划

目录 1、闫式DP分析法 2、背包问题 2.1 01背包问题 朴素版本 优化版本 2.2 完全背包问题 朴素版本 优化版本 2.3 多重背包问题 朴素版本 二进制优化 2.4 分组背包问题 3、线性DP 3.1 数字三角形 3.2 最长上升子序列 3.3 最长公共子序列 4、区间DP 5、数位统计…

白天用的投影仪哪款好?掌握这个亮度参数谁敢忽悠你

人们追求松弛人生的同时,也着眼于高品质的家庭娱乐体验,高端家用投影仪以其大屏幕的视觉冲击力和便捷的移动性,应运成为众多家庭客厅、卧室的新宠。而在挑选家用投影仪时,亮度作为衡量其性能的重要指标之一,直接影响着…

七牛云OSS的使用

图片上传 一、七牛云oss介绍 1.1 图片存储介绍 在实际开发中,我们会有很多处理不同功能的服务器。例如: 应用服务器:负责部署我们的应用 数据库服务器:运行我们的数据库 文件服务器:负责存储用户上传文件的服务器…