系统架构设计师(第二版)学习笔记----系统架构概述

【原文链接】系统架构设计师(第二版)学习笔记----系统架构概述

文章目录

  • 一、系统架构的定义与发展历程
    • 1.1 架构的定义
    • 1.2 架构设计的作用
    • 1.3 架构设计产生的背景
    • 1.4 软件架构的发展历程
    • 1.5 模块化开发方法
    • 1.6 模块法方法分解模块遵循的原则
    • 1.7 软件工程领域研究重点
    • 1.8 架构分析常用的方法
    • 1.9 架构设计常用的方法
    • 1.10 架构测试策略
    • 1.11 架构测试方法
    • 1.12 架构风格
    • 1.13 软件架构影响开发的各个阶段
  • 二、软件架构的常用分类及建模方法
    • 2.1 软件架构的常用分类
    • 2.2 分层架构最常见的四层架构
    • 2.3 事件驱动架构的四个主要部分
    • 2.4 微核架构
    • 2.5 微服务架构三种实现模式
    • 2.6 云架构
    • 2.7 系统架构常用建模方法
    • 2.8 常见软件架构风格的使用场景

一、系统架构的定义与发展历程

1.1 架构的定义

系统架构是系统的一种整体的高层次的结构表示,是系统的骨架、根基,支撑和链接各个部分

1.2 架构设计的作用

  • 解决相对复杂的需求问题
  • 解决非功能属性在系统占据重要位置的设计问题
  • 解决生命周期长、扩展性需求高的系统整体结构问题
  • 解决系统基于组件需要的集成问题
  • 解决业务流程再造难的问题

1.3 架构设计产生的背景

  • 软件复杂、易变,其行为特征难以预见,软件开发过程中需求和设计之间缺乏有效的转换,导致软件开发过程困难和不可控
  • 随着软件系统的规模越来越大、越来越复杂,整个系统的结构和规格说明就显得越来越重要
  • 对于大规模的复杂软件系统,相较于对计算算法和数据结构的选择,系统的整体结构设计和规格说明已经变得明显重要的多
  • 对软件系统结构的深入研究将会成为提高软件生产率和解决软件维护问题的最有希望的新途径

1.4 软件架构的发展历程

  • 基础研究阶段(1968-1994)
  • 概念体系和核心技术形成阶段(1999-2000)
  • 理论体系完善和发展阶段(1996-至今)
  • 普及应用阶段(2000-至今)

1.5 模块化开发方法

模块化开发方法是指把一个待开发的软件分解为若干个小的而且简单的部分,采用对复杂事物分而治之的经典原则。

1.6 模块法方法分解模块遵循的原则

  • 最高模块内聚
  • 最低耦合
  • 模块大小适合
  • 模块调用链的深度不可过多
  • 接口简单、精炼(扇入扇出不宜太大),具有信息隐蔽能力
  • 尽可能地复用已有模块

1.7 软件工程领域研究重点

  • 软件架构描述和表示
  • 软件架构分析、设计与测试
  • 软件架构发现、演化与重用
  • 基于软件架构的开发方法
  • 软件架构风格
  • 动态软件架构

1.8 架构分析常用的方法

  • 软件架构分析方法SAAM
  • 架构权衡分析法ATAM
  • 成本效益分析法CBAM
  • 基于场景的架构再工程SBAR
  • 架构层析的软件可维护性预测ALSPM
  • 软件架构评估模型SAEM

1.9 架构设计常用的方法

  • 从工件描述中提取架构描述的工件驱动方法
  • 从用例导出架构抽象的用例驱动
  • 从模式导出架构的模式驱动方法
  • 从领域模型导出架构抽象的域驱动方法
  • 从设计过程中获得架构质量属性需求的属性驱动设计方法

1.10 架构测试策略

  • 单元
  • 子系统
  • 集成
  • 验收

1.11 架构测试方法

  • 架构测试覆盖方法
  • 组件设计正确性验证方法
  • 基于CHAM的架构动态语义验证方法

1.12 架构风格

  • 数据流风格
  • 调用/返回风格
  • 独立组件风格
  • 虚拟机风格
  • 仓库风格

1.13 软件架构影响开发的各个阶段

  • 需求阶段
  • 设计阶段
  • 实现阶段
  • 维护阶段

二、软件架构的常用分类及建模方法

2.1 软件架构的常用分类

  • 分层架构
  • 事件驱动架构
  • 微核架构
  • 微服务架构
  • 云架构

2.2 分层架构最常见的四层架构

  • 表现层
  • 业务层
  • 持久层
  • 数据库

2.3 事件驱动架构的四个主要部分

  • 事件队列
  • 分发器
  • 事件通道
  • 事件处理器

2.4 微核架构

微核架构又称为插件架构,是指软件的内核相对较小,主要功能和业务逻辑都通过插件实现

2.5 微服务架构三种实现模式

  • Restful API模式
  • Restful 应用模式
  • 集中消息模式

2.6 云架构


云架构主要分成两部分

  • 处理单元
  • 虚拟中间件

虚拟中间件包含4个组件

  • 消息中间件(Messageing Grid)
  • 数据中间件(Data Grid)
  • 处理中间件(Processing Grid)
  • 部署中间件(Deployment Manager)

2.7 系统架构常用建模方法

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

2.8 常见软件架构风格的使用场景

  • 管道-过滤器风格适用于将系统分成若干独立的步骤
  • 主程序/子系统和面向对象的架构风格适用于对组件内部进行设计
  • 虚拟机风格适用于构造解释器或专家系统
  • C/S和B/S风格适合于数据和处理分布在一定范围,通过网络连接构成系统
  • 平台/插件风格适用于具有插件扩展功能的应用程序
  • MVC风格被广泛应用于用户交互程序的设计
  • SOA风格适用于在企业集成等方面
  • C2风格适用于GUI软件开发,用以构建灵活和可扩展的应用系统

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

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

相关文章

学习SpringMvc第二战之【SpringMVC之综合案例】

目录 一. 参数传递 1.前期准备工作(替换pom.xml中的部分依赖) 1.1将log4j替换成为slf4j(将打印语句替换成为日志文件输出结果) 2.正式操作 1.基础传参 1.1创建方法,用于验证传参 1.2构建界面回显 1.3设置访问路径(localho…

人工智能AI 全栈体系(一)

第一章 神经网络是如何实现的 这些年人工智能蓬勃发展,在语音识别、图像识别、自然语言处理等多个领域得到了很好的应用。推动这波人工智能浪潮的无疑是深度学习。所谓的深度学习实际上就是多层神经网络,至少到目前为止,深度学习基本上是用神…

使用navicat for mongodb连接mongodb

使用navicat for mongodb连接mongodb 安装navicat for mongodb连接mongodb 安装navicat for mongodb 上文mongodb7.0安装全过程详解我们说过,在安装的时候并没有勾选install mongodb compass 我们使用navicat去进行可视化的数据库管理 navicat for mongodb下载地址…

Hadoop生态之hive

一 概述与特点 之所以把Hive放在Hadoop生态里面去写,是因为它本身依赖Hadoop。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能。 其本质是将 SQL 转换为 MapReduce/Spark 的任务进行运算,底层由 HDFS 来提供…

【管理运筹学】第 7 章 | 图与网络分析(4,最大流问题)

系列文章目录 【管理运筹学】第 7 章 | 图与网络分析(1,图论背景以及基本概念、术语、矩阵表示) 【管理运筹学】第 7 章 | 图与网络分析(2,最小支撑树问题) 【管理运筹学】第 7 章 | 图与网络分析&#xf…

chrome_elf.dll丢失怎么办?修复chrome_elf.dll文件的方法

Chrome是目前最受欢迎的网络浏览器之一,然而有时用户可能会遇到Chrome_elf.dll丢失的问题。该DLL文件是Chrome浏览器的一个重要组成部分,负责启动和管理程序的各种功能。当Chrome_elf.dll丢失时,用户可能无法正常启动Chrome或执行某些功能。本…

Istio 探索:微服务的流量管理、安全性和策略加固

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

Qt-QTransform-内存结构-仿射变换-工作原理-C++

文章目录 1.概述2.内存结构3.矩阵乘法4.map函数5.QPaint-setWorldTransform6.总结 1.概述 QTransform是Qt中推荐的矩阵变换类。转换指定如何平移,缩放,剪切,旋转或投影坐标系,通常在渲染图形时使用。QTransform类支持矩阵乘法&am…

RK3399平台开发系列讲解(内核调试篇)spidev_test工具使用

🚀返回专栏总目录 文章目录 一、环境二、执行测试三、回环测试四、字节发送测试五、32位数据发送测试沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 在 Linux 系统上,“spidev_test” 是一个用于测试和配置 SPI(Serial Peripheral Interface)设备的命令行工具。…

嵌入式基础知识-信息安全与加密

本篇来介绍计算机领域的信息安全以及加密相关基础知识,这些在嵌入式软件开发中也同样会用到。 1 信息安全 1.1 信息安全的基本要素 保密性:确保信息不被泄露给未授权的实体。包括最小授权原则、防暴露、信息加密、物理加密。完整性:保证数…

AI绘画:Midjourney超详细教程Al表情包超简单制作,内附关键词和变现方式

大家好,本篇文章主要介绍AI绘画完成表情包的制作和变现方式分享。 你还不会AI表情包制作吗?下面我们详细的拆解制作过程。跟着这个教程做出一套属于自己的表情包。 核心工具Midjourney PS,你就可以得到一套自己的专属表情包啦~ 整体制作…

算法竞赛入门【码蹄集新手村600题】(MT1260-1280)C语言

算法竞赛入门【码蹄集新手村600题】(MT1260-1280)C语言 目录MT1260 袋鼠躲猫猫MT1261 留下来的才是幸运数MT1262 约数MT1263 最大的三位约数MT1264 完数MT1265 区间完数MT1266 完数与因子MT1267 亏数MT1268 因数的因数MT1269 区间素数MT1270 素数计算MT1271 三生质数…