文章目录

  • 前言
  • 12.1 软件架构概述
    • 12.1.1 软件架构的意义
    • 12.1.2 软件架构的发展史
  • 12.2 软件架构建模
  • 12.3 软件架构风格
    • 12.3.1 软件架构风格概述
    • 12.3.2 数据流体系结构风格
      • 1.批处理体系结构风格
      • 2.管道-过滤体系结构风格
    • 12.3.3 调用/返回体系结构风格
      • 1.主程序/子程序风格
      • 2.面向对象体系结构风格
      • 3.层次型体系结构风格
      • 4.客户端/服务端体系结构风格
        • 二层架构
        • 三层C/S架构
    • 12.3.4 以数据为中心的体系结构风格
      • 1.仓库体系结构风格
      • 2.黑板体系结构风格
    • 12.3.5 虚拟机体系结构风格
      • 1.解释器体系结构风格
      • 2.规则系统体系结构风格
    • 12.3.6 独立构件体系结构风格
      • 1.进程通信体系结构风格
      • 2.事件体系结构风格
    • 12.3.7 面向服务的架构风格
      • 1.SOA概述
        • 基本服务结构
        • SOA设计原则
        • 服务构建与传统构建
      • 2.SOA关键技术
        • UDDI
        • WSDL
        • SOAP
        • REST
      • 3.SOA实现方法
        • WebService
        • 服务注册表
        • 企业服务总线ESB
  • 12.4 软件架构标准
  • 12.5 软件架构实现
    • 12.5.1 体系结构需求
      • 1. 需求获取
      • 2. 标识构建
      • 3. 架构需求评审
    • 12.5.2 体系结构设计
      • 12.5.4 体系结构复审
      • 12.5.5 体系结构实现
      • 12.5.6 体系结构的演化
  • 12.6 软件架构质量属性
    • 12.6.1 质量属性概念
      • 1.开发期质量属性
      • 2.运行期质量属性
    • 12.6.2 面向架构评估的质量属性
      • 1.性能
      • 2.可靠性
      • 3.可用性
      • 4.安全性
      • 5.可修改性
      • 6.功能性
      • 7.可变性
      • 8.互操作性
    • 12.6.3 质量属性场景描述
      • 1.可用性质量属性场景
      • 2.可修改性质量属性场景
      • 3.性能质量属性场景
      • 4.可测试性质量属性场景
      • 5.易用性质量属性场景描述
      • 6.安全性质量属性场景
  • 总结


前言

学者们提出了软件架构(SofwareArchitecture)的概念,并试图在软件需求与设计之间架起一座桥梁,·重点解决系统结构和需求向实现平坦过渡的问题。

12.1 软件架构概述

  • 软件架构研究的主要内容涉及软件架构描述、软件架构风格、软件架构评估和软件架构的形式化方法等。

  • 解决好软件的复用、质量和维护问题,是研究软件架构的根本目的。

12.1.1 软件架构的意义

  1. 架构是项目干系人进行交流的手段
  2. 架构是早期设计决策的体现
  3. 架构明确了对系统实现的约束条件
  4. 架构决定了开发和维护组织的组织结构
  5. 架构制约着系统的质量属性
  6. 架构使推理和控制更改更简单
  7. 架构有助于循序渐进的原型设计
  8. 架构可以作为培训的基础
  9. 架构是可传递和可复用的模型

12.1.2 软件架构的发展史

纵观软件架构技术的发展过程,从最初的无架构设计到现行的基于架构的软件开发。
经历了4个阶段:

  1. 无架构设计阶段。以汇编语言进行小规模应用程序开发为特征。(20世纪70年代以前)
  2. 萌芽阶段。出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征。(20世纪70年代中后期)
  3. 初级阶段。出现了从不同侧面描述系统的结构模型,以 UML为典型代表。(20世纪80年代—90年代中期)
  4. 高级阶段。以描述系统的高层抽象结构为中心,不关心具体的建模细节,划分了架构模型与传统软件结构的界限。(20世纪90年代以后)

12.2 软件架构建模

软件架构设计的首要问题是如何表示软件架构,即如何对软件架构建模。
根据建模的侧重点不同,可以把软件架构的模型分为5种,分别是:

  • 结构模型
  • 框架模型
  • 动态模型
  • 过程模型
  • 功能模型

在这里插入图片描述
“4+1”:视图模型从5个不同的视角来描述软件架构,每个视图只关心系统的一个侧面,5个视图结合在一起才能反映软件架构的全部内容:

  • 逻辑视图(静态结构)
  • 开发视图(静态结构)
  • 进程视图(动态结构)
  • 物理视图(动态结构)
  • 场景:可以用文本表示,也可以用图形表示

例如,图12-2是一个小型电话呼叫系统场景片段的图形描述,相应的文本表示如下:
在这里插入图片描述

12.3 软件架构风格

12.3.1 软件架构风格概述

  • 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
  • 体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。例如,如果某人把系统描述为“客户/服务器”模式,则不必给出设计细节,我们立刻就会明白系统是如何组织和工作的。

12.3.2 数据流体系结构风格

1.批处理体系结构风格

在这里插入图片描述

2.管道-过滤体系结构风格

在这里插入图片描述

12.3.3 调用/返回体系结构风格

1.主程序/子程序风格

在这里插入图片描述

2.面向对象体系结构风格

在这里插入图片描述

3.层次型体系结构风格

在这里插入图片描述

4.客户端/服务端体系结构风格

在这里插入图片描述

二层架构

在这里插入图片描述
表示层:表示层是系统的用户接口部分,担负着用户与系统之间的对话功能。
数据层:负责对 DBMS 进行管理和控制。

三层C/S架构
  • 表示层:表示层是系统的用户接口部分,担负着用户与系统之间的对话功能。它用于检查用户从键盘等输入的数据,显示输出的数据。
  • 功能层:功能层也称为业务逻辑层,是将具体的业务处理逻辑编入程序中。
  • 数据层:数据层相当于二层 C/S 架构中的服务器,负责对 DBMS 进行管理和控制。

在这里插入图片描述

在这里插入图片描述

与传统的二层 C/S 架构相比,三层CS 架构具有以下优点:

  1. 允许合理地划分三层的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统的可维护性和可扩展性。
  2. 允许更灵活、有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层,并且这些平台和各个组成部分可以具有良好的可升级性和开放性。
  3. 系统的各层可以并行开发,各层也可以选择各自最适合的开发语言,使之能并行且高效地进行开发,达到较高的性能价格比。对每一层的处理逻辑的开发和维护也会更容易些。
  4. 利用功能层可以有效地隔离表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段非法访问数据层,这就为严格的安全管理定了坚实的基础。但是,若三层C/S架构各层间的通信效率不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。

此外,设计时必须慎重考虑三层间的通信方法、通信频度和数据量,这是三层 C/S 架构设计的关键问题。

B/S层架构:

  • 浏览器/服务器(Browser/Server,B/S)架构是三层C/S架构的一种实现方式,其具体结构为“浏览器/Web服务器/数据库服务器”。B/S架构利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。从某种程度上来说,B/S架构是一种全新的软件架构。

B/S层架构优点:

  • 在B/S架构中,除了数据库服务器外,应用程序以网页形式存放于Web服务器上,用户运行某个应用程序时,只需在客户端的浏览器中键入相应的网址,调用 Web服务器上的应用程序,并对数据库进行操作,完成相应的数据处理工作,最后将结果通过浏览器显示给用户。
  • 基于 B/S架构的软件,系统安装、修改和维护全在服务器端解决。
  • 用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。

B/S层架构缺点,与C/S架构相比,B/S架构也有许多不足之处,例如:

  • 缺乏对动态页面的支持能力,没有集成有效的数据库处理功能;
  • 安全性难以控制
  • 采用B/S架构的系统在数据查询等响应速度上远远低于 C/S 架构
  • B/S 架构的数据提交一般以页面为单位,数据的动态交互性不强,不利于 OLTP 应用。

12.3.4 以数据为中心的体系结构风格

1.仓库体系结构风格

在这里插入图片描述

2.黑板体系结构风格

在这里插入图片描述

12.3.5 虚拟机体系结构风格

1.解释器体系结构风格

在这里插入图片描述

2.规则系统体系结构风格

在这里插入图片描述

12.3.6 独立构件体系结构风格

1.进程通信体系结构风格

2.事件体系结构风格

在这里插入图片描述

12.3.7 面向服务的架构风格

面向服务的架构(Service-Oriented Architecture,SOA)

1.SOA概述

基本服务结构

在这里插入图片描述

SOA设计原则
服务构建与传统构建

2.SOA关键技术

UDDI
WSDL

在这里插入图片描述

SOAP
REST

REST是一种只使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。它的简单性和缺少严格配置文件的特性,使它与SOAP很好地隔离开REST从根本上来说只支持几个操作(POST、GET、PUT和DELETE),这些操作适用于所有的消息。

REST提出了如下一些设计概念和准则:

  1. 网络上的所有事物都被抽象为资源。
  2. 每个资源对应一个唯一的资源标识
  3. 通过通用的连接件接口对资源进行操作。
  4. 对资源的各种操作不会改变资源标识。
  5. 所有的操作都是无状态的。

3.SOA实现方法

WebService

在这里插入图片描述

服务注册表
企业服务总线ESB

12.4 软件架构标准

软件架构标准要素之间的关系,具体分为5个层次:

  • 任务
  • 环境
  • 利益相关者
  • 关注
  • 关注点库、模型

在这里插入图片描述

12.5 软件架构实现

传统软件开发模型存在开发效率不高、不能很好地支持软件重用等缺点。基于架构的软,件开发模型(ABSDM)把整个基于体系结构的软件过程划分为体系结构需求、设计、文档化、复审、实现和演化等6个子过程,
在这里插入图片描述

12.5.1 体系结构需求

1. 需求获取

在这里插入图片描述

2. 标识构建

  1. 生成类图
  2. 对类进行分组
  3. 把类打包成构建

3. 架构需求评审

组织一个由不同代表(如分析人员、客户、设计人员、测试人员)组成的小组,对体系结构需求及相关构件进行仔细的审查。审查的主要内容包括所获取的需求是否真实反映了用户的要求,类的分组是否合理,构件合并是否合理等。必要时,可以在“需求获取一标识构件一需求评审”之间进行迭代。

12.5.2 体系结构设计

  1. 提出体系结构模型
  2. 映射构件
  3. 分析构件间的相互作用
  4. 产生体系结构
  5. 设计评审
    在这里插入图片描述

12.5.4 体系结构复审

  • 体系结构设计、体系结构文档化和体系结构复审是一个迭代过程。从这个角度来说,在分析一个主版本的软件体系结构之后,要安排一次由外部人员(用户代表和领域专家)参加的复审。

  • 鉴于体系结构文档标准化,以及风险识别的现实情况,通常我们根据架构设计,搭建一个可运行的最小化系统用于评估和测试体系架构是否满足需要,是否存在可识别的技术和协作风险。

  • 复审的目的是标识潜在的风险,及早发现体系结构设计中的缺陷和错误,包括体系结构能否满足需求、质量需求是否在设计中得到体现、层次是否清晰、构件的划分是否合理、文档表达是否明确、构件的设计是否满足功能与性能的要求等。

12.5.5 体系结构实现

在这里插入图片描述

12.5.6 体系结构的演化

在这里插入图片描述

12.6 软件架构质量属性

12.6.1 质量属性概念

软件系统质量属性(Quality Attribute)是一个系统的可测量或者可测试的属性,用来描述系统满足利益相关者(Stakeholders)需求的程度。

基于软件系统的生命周期,可以将软件系统的质量属性分为开发期质量属性和运行期质量属性两部分。

1.开发期质量属性

2.运行期质量属性

12.6.2 面向架构评估的质量属性

1.性能

2.可靠性

3.可用性

4.安全性

5.可修改性

6.功能性

7.可变性

8.互操作性

12.6.3 质量属性场景描述

1.可用性质量属性场景

在这里插入图片描述

2.可修改性质量属性场景

在这里插入图片描述

3.性能质量属性场景

在这里插入图片描述

4.可测试性质量属性场景

在这里插入图片描述

5.易用性质量属性场景描述

在这里插入图片描述

6.安全性质量属性场景

在这里插入图片描述

总结

参考:
10种常见的架构风格,你用过几种


关于博主

wx/qq:binary-monster/1113673178 (添加时注明来意,否则不予通过)
wxgzh: 二进制怪兽
CSDN:https://blog.csdn.net/qq1113673178
码云:https://gitee.com/shiver
Github: https://github.com/ShiverZm
个人博客:https://www.binary-monster.top

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

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

相关文章

C++---存储周期,作用域,链接性

在C程序设计中,变量的行为不仅由其类型决定,还由存储周期(变量在内存中存在的时间)、作用域(变量可被访问的代码范围)和链接性(变量在多文件程序中的可见性)共同约束。 一、存储周期…

基于Python的商品爬取与可视化系统

本系统是基于Python的商品数据爬取与价格分析可视化系统,集成了数据爬取、数据存储、数据展示和可视化分析等功能。下面介绍一下系统主要功能和技术栈。一、主要功能:1、数据爬取功能 支持淘宝美妆商品数据爬取 可配置搜索关键词和爬取页数 实时显示爬取…

联邦学习过程中,了解清楚影响准确率的因素有哪些也很重要

影响模型准确率的因素有很多,下面是一些主要的因素,它们可以从数据、模型设计、训练策略以及超参数等多个层面来考虑。1. 学习率作用:学习率直接影响模型的训练速度、稳定性和最终表现。过高的学习率可能导致模型不收敛或收敛不稳定&#xff…

C# WPF中使用System.Management.Automation类调用Powershell报错解决办法

在WPF开发中,需要使用powershell进行自动化管理,以下为开发环境 1、.NET framework 4.7.2 2、VS2019 社区版 使用System.Management.Automation类 遇到的问题: 需要引用 System.Management.Automation类,但是在使用using指令时无法…

从 Pump.fun「直播」看热点币的生与死

在加密市场里,热点就是流量,流量就是价值。最近,Solana 生态的 Pump.fun 推出了「直播」板块,让发币这件事变得像看秀一样:一个个新币在链上实时登场,社区即时互动,玩家实时下注。这种形式不仅带…

图灵完备性:计算理论的基石与无限可能

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 1 图灵完备性的基本概念 图灵完备性(Turing completeness…

HarmonyOS 5.0应用开发——V2装饰器@once的使用

【高心星出品】 文章目录V2装饰器once的使用概念一、核心作用与规则二、适用场景案例V2装饰器once的使用 概念 在鸿蒙ArkTS开发中,Once装饰器用于实现子组件仅接受父组件传递的初始值,后续父组件数据变化不再同步至子组件。以下是其核心要点&#xff1…

跨域请求:解决方案

一、跨域核心概念:同源策略与跨域定义 跨域问题的根源是浏览器的 同源策略(Same-Origin Policy),这是浏览器为保护用户数据安全而设置的核心安全限制。 1. 什么是 “同源”? “同源” 指的是两个 URL 的 协议、域名…

前端形态与样式风格:从古典到现代的视觉语言演进

目录前端形态与样式风格:从古典到现代的视觉语言演进概述1. 前端形态的演进:四种核心范式1.1 古典范式:语义化HTML与CSS1.2 组件化范式:模块化与复用1.3 响应式范式:多端适配1.4 动态范式:状态驱动视图2. 样…

用户系统从0到1:登录、权限、积分一网打尽

👤 用户系统从0到1:登录、权限、积分一网打尽 副标题:Flask-Login 多级权限 积分会员系统实战 项目原型:https://madechango.com 难度等级:⭐⭐⭐☆☆ 预计阅读时间:20分钟 🎯 引子&#xff1…

Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频内容理解与智能预警升级

Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频内容理解与智能预警升级引言:正文:一、传统安防监控的 “三重困局”:看不全、看不懂、反应慢1.1 人工盯屏 “力不从心”1.1.1 摄像头密度与人力的矛盾1.1.2 录像调阅 “马后炮”1.2…

OpenHarmony包管理子系统核心源码深度解读:从BundleManager到AMS,彻底打通应用安装、卸载与沙箱机制全链路

目录 架构概览 核心组件详解 包安装流程分析 包卸载流程分析 包更新流程分析 包信息存储机制 Launcher界面管控 开机默认系统应用安装机制<

简单聊聊神经网络中的反向传播

参考文章&#xff1a; 一文弄懂神经网络中的反向传播法——BackPropagation - Charlotte77 - 博客园 反向传播求偏导原理简单理解_反向传播偏导-CSDN博客 这篇文章是笔者在读完上述两篇参考文章后的整理或者说按照自己的理解进行的一些补充&#xff0c;强烈推荐先阅读上述两篇文…

JSP自驾游管理系统46u2v--(程序+源码+数据库+调试部署+开发环境)

本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;带论文文档1万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义 近年来&#xff0c;自驾游因自由度高、个性化强成为国内旅游市场增长最快的领域&…

通过 SQL 快速使用 OceanBase 向量检索学习笔记

背景 AI时代离不开向量数据库&#xff0c;向量数据库简单说就是在数据库中用多维向量存储某类事物的特征&#xff0c;通过公式计算各个向量在空间坐标系中的位置关系&#xff0c;以此来判断事物之间的相似性。相关基础概念如下: ● Embedding ● 距离/相似性度量 ○ Cosine dis…

PromptAD:首次引入提示学习,实现精准工业异常检测,1张正常样本即可超越现有方法

近年来&#xff0c;工业异常检测&#xff08;Anomaly Detection&#xff09;在智能制造、质量监控等领域扮演着越来越重要的角色。传统方法通常依赖大量正常样本进行训练&#xff0c;而在实际生产中&#xff0c;异常样本稀少甚至不存在&#xff0c;能否仅凭少量正常样本就实现精…

算法 --- 字符串

字符串 字符串算法题目主要处理文本的查找、匹配、比较、变换和统计问题&#xff0c;其核心特点是输入数据为字符序列&#xff0c;解题关键在于利用其连续性、前缀性、字典序等特性&#xff0c;并常借助哈希、自动机、指针滑动、动态规划等技巧高效处理。 详细分类型与适用场景…

SpringBoot中 Gzip 压缩的两种开启方式:GeoJSON 瘦身实战

目录 前言 一、GZIP压缩知识简介 1、什么是Gzip 2、Gzip特点 3、Gzip在GIS方面的应用 二、SpringBoot中开启Gzip的方式 1、在SpringBoot中开启Gzip的知识简介 2、SpringBoot中GeoJSON的实例 三、全局开启Gzip实现 1、实现原理 2、实现效果 四、局部约定配置 1、实现…

PPTist+cpolar:开源演示文稿的远程创作方案

文章目录前言【视频教程】1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址6. 配置固定公网地址前言 PPTist作为开源在线演示文稿工具&#xff0c;提供媲美PowerPoint的核心功能&#xff0c;支持多页面编辑、图表插入、音视频嵌入和动画效果设置。特…

服务注册/服务发现-Eureka

目的&#xff1a;解决微服务在调用远程服务时URL写死的问题注册中心服务提供者&#xff08;Server&#xff09;&#xff1a;一次业务中&#xff0c;被其他微服务调用的服务&#xff0c;也就是提供接口给其他微服务。服务消费者&#xff08;Client&#xff09;:一次业务中&#…