当前位置: 首页 > news >正文

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

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

文章目录

  • 一、系统架构的定义与发展历程
    • 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软件开发,用以构建灵活和可扩展的应用系统

相关文章:

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

【原文链接】系统架构设计师(第二版)学习笔记----系统架构概述 文章目录 一、系统架构的定义与发展历程1.1 架构的定义1.2 架构设计的作用1.3 架构设计产生的背景1.4 软件架构的发展历程1.5 模块化开发方法1.6 模块法方法分解模块遵循的原则1.7 软件工程…...

FPGA基本算术运算

FPGA基本算术运算 FPGA基本算术运算1 有符号数与无符号数2 浮点数及定点数I、定点数的加减法II、定点数的乘除法 3 仿真验证i、加减法验证ii、乘除法验证 FPGA基本算术运算 FPGA相对于MCU有并行计算、算法效率较高等优势,但同样由于没有成型的FPU等MCU内含的浮点数运…...

Linux Input子系统

一、基本概念 按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。本质属于字符设备。 1. input子系统结构如下: input 子系统分为 input 驱动层、input 核心层、input 事件处理层&…...

commet与websocket

commet与websocket Comet 前言 Comet是一种用于web的技术,能使服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,长轮询和iframe流。 实现方式 长轮询 长轮询是在打开一条连接以后保持&…...

python3 简易 http server:实现本地与远程服务器传大文件

在个人目录下创建新文件httpserver.py : vim httpserver.py文件内容为python3代码: # !/usr/bin/env python3 import datetime import email import html import http.server import io import mimetypes import os import posixpath import re import…...

Microsoft Edge 主页启动diy以及常用的扩展、收藏夹的网站

一、Microsoft Edge 主页启动diy 二、常用的扩展 1、去广告:uBlock Origin 2、翻译: 页面翻译:右键就有了,已经内置了划词翻译 3、超级复制 三、收藏夹的网站...

文末送书!谈谈原型模式在JAVA实战开发中的应用(附源码+面试题)

作者主页:Designer 小郑 作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,蓝桥云课认证讲师。 本文讲解了 Java 设计模式中的原型模式,并给…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR启动时打印starting server:listen tcp,该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码H.264、平台级联等。为了便于用户二次开发、调用与集成,…...

【Linux从入门到精通】通信 | 管道通信(匿名管道 命名管道)

本派你文章主要是对进程通信进行详解。主要内容是介绍 为什么通信、怎么进行通信。其中本篇文章主要讲解的是管道通信。希望本篇文章会对你有所帮助。 文章目录 一、进程通信简单介绍 1、1 什么是进程通信 1、2 为什么要进行通信 1、3 进程通信的方式 二、匿名管道 2、1 什么是…...

实践和项目:解决实际问题时,选择合适的数据结构和算法

文章目录 选择合适的数据结构数组链表栈队列树图哈希表 选择合适的算法实践和项目 🎉欢迎来到数据结构学习专栏~实践和项目:解决实际问题时,选择合适的数据结构和算法 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT…...

上线检查工具(待完善)

根据V11《CEBPM系统上线CheckList》整理而得,适用于V11,DHERP,Oracle和MSSQL数据库,检查内容还不完善。 上图: 1)数据库连接 2)双击[连接别名],可选择历史连接 3)主界面…...

PE文件格式详解

摘要 本文描述了Windows系统的PE文件格式。 PE文件格式简介 PE(Portable Executable)文件格式是一种Windows操作系统下的可执行文件格式。PE文件格式是由Microsoft基于COFF(Common Object File Format)格式所定义的&#xff0c…...

【Alibaba中间件技术系列】「RocketMQ技术专题」RocketMQ消息发送的全部流程和落盘原理分析

RocketMQ目前在国内应该是比较流行的MQ 了,目前本人也在公司的项目中进行使用和研究,借着这个机会,分析一下RocketMQ 发送一条消息到存储一条消息的过程,这样会对以后大家分析和研究RocketMQ相关的问题有一定的帮助。 分析的总体…...

关于vue首屏加载loading问题

注意&#xff1a;网上搜索出来的都是教你在index.html里面<div id"app"><div class"loading"></div>或者在app.vue Mounte生命周期函数控制app和loading的显示和隐藏,这里会有一个问题&#xff0c;就是js渲染页面需要时间&#xff0c;一…...

数据库性能测试实践:慢查询统计分析

01、慢查询 查看是否开启慢查询 mysql> show variables like %slow%’; 如图所示&#xff1a; 系统变量log_slow_admin_statements 表示是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志启用log_slow_extra系统变量 &#xff08;从MySQL 8.0.14开始提供&a…...

windows wsl ssh 配置流程 Permission denied (publickey)

wsl ssh连接失败配置流程 1、wsl2 ifconfig的网络ip是虚拟的ip&#xff0c;所以采用wsl1 2、wsl1的安装教程。 3、openssh-server重装 sudo apt-get update sudo apt-get remove openssh-server sudo apt-get install openssh-server4、修改ssh配置文件 sudo vim /etc/ss…...

OpenCV(五):图像颜色空间转换

目录 1.图像颜色空间介绍 RGB 颜色空间 2.HSV 颜色空间 3.RGBA 颜色空间 2.图像数据类型间的互相转换convertTo() 3.不同颜色空间互相转换cvtColor() 4.Android JNI demo 1.图像颜色空间介绍 RGB 颜色空间 RGB 颜色空间是最常见的颜色表示方式之一&#xff0c;其中 R、…...

一图胜千言!数据可视化多维讲解(Python)

数据聚合、汇总和可视化是支撑数据分析领域的三大支柱。长久以来&#xff0c;数据可视化都是一个强有力的工具&#xff0c;被业界广泛使用&#xff0c;却受限于 2 维。在本文中&#xff0c;作者将探索一些有效的多维数据可视化策略&#xff08;范围从 1 维到 6 维&#xff09;。…...

Hbase相关总结

Hbase 1、Hbase的数据写入流程 由客户端发起写入数据的请求, 首先会先连接zookeeper 从zookeeper中获取到当前HMaster的信息,并与HMaster建立连接从HMaster中获取RegionServer列表信息 连接meta表对应的RegionServer地址, 从meta表获取当前要写入的表对应region被那个RegionS…...

C++ Primer Plus第二章编程练习答案

答案仅供参考&#xff0c;实际运行效果取决于运行平台和运行软件 1.编写一个C程序&#xff0c;它显示您的姓名和地址。 #include <iostream> using namespace std;int main() {cout << "My name is sakuraaa0908 C Primer Plus." << endl;cout &…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...