【新版系统架构】第十章-软件架构的演化和维护

news/2024/7/4 7:48:27 标签: 系统架构, 微服务, 云原生

软考-系统架构设计师知识点提炼-系统架构设计师教程(第2版)

  1. 第一章-绪论
  2. 第二章-计算机系统基础知识(一)
  3. 第二章-计算机系统基础知识(二)
  4. 第三章-信息系统基础知识
  5. 第四章-信息安全技术基础知识
  6. 第五章-软件工程基础知识(一)
  7. 第五章-软件工程基础知识(需求工程和系统分析与设计)
  8. 第五章-软件工程基础知识(软件测试、净室软件工程、基于构件的软件工程、 软件项目管理)
  9. 第六章-数据库设计基础知识(数据库基本概念、关系数据库)
  10. 第六章-数据库设计基础知识(数据库设计)
  11. 第七章-系统架构设计基础知识(基于架构的软件开发方法)
  12. 第七章-系统架构设计基础知识(架构风格、复用)
  13. 第八章-系统质量属性与架构评估
  14. 第九章-软件可靠性基础知识

软件架构演化和定义的关系

架构演化的重要性:

  1. 软件架构作为软件系统的骨架支撑着整个系统,是软件系统具备诸多好的特性的重要保障
  2. 软件架构作为软件蓝图为人们宏观管控软件系统的整体复杂性和变化性提供了一条有效途径,而且基于软件架构进行的软件检测和修改成本相对较低

软件架构的演化可以更好地保证软件演化的一致性和正确性,明显降低软件演化成本,使得软件系统演化更加便捷,有3方面原因:

  1. 对系统的软件架构进行的形式化、可视化表示提高了软件的可构造性,便于软件演化
  2. 软件架构设计方案涵盖的整体结构信息、配置信息、约束信息等有助于开发人员充分考虑未来可能出现的演化问题、演化情况和演化环境
  3. 架构设计时对系统组件之间的耦合描述有助于软件系统的动态调整

面向对象软件架构演化过程

对象演化、消息演化、复合片段演化、约束演化

软件架构演化方式的分类

3种典型的分类方法:

  1. 按照软件架构的实现方式和实施粒度分类:基于过程和函数的演化、面向对象的演化、基于组件的演化和基于架构的演化
  2. 按照研究方法分类:第一类对演化的支持,第二类版本和工程的管理工具,第三类架构变换的形式方法,第四类架构演化的成本收益分析
  3. 按照软件架构的演化过程是否处于系统运行时期分:静态演化和动态演化

软件架构演化时期:设计时演化、运行前演化、有限制运行时演化、运行时演化

软件架构演化原则

演化成本控制原则、进度可控原则、风险可控原则、主体维持原则、系统总体结构优化原则、平滑演化原则、目标一致原则、模块独立演化原则、影响可控原则、复杂性可控原则、有利于重构原则、有利于重用原则、设计原则遵从性原则、适应新技术原则、环境适应性原则、标准依从性原则、质量向好原则、适应新需求原则

软件架构演化评估方法

根据演化过程是否已知可将评估过程分为:演化过程已知的评估、演化过程未知的评估

大型网站架构演化实例

第一阶段:单体架构
第二阶段:垂直架构(应用、数据分离)
第三阶段:缓存改善网站性能
第四阶段:使用服务集群改善网站并发处理能力
第五阶段:数据库读写分离
第六阶段:使用反向代理和CDN加速网站响应
第七阶段:使用分布式文件系统和分布式数据库系统
第八阶段:使用NoSQL和搜索引擎
第九阶段:业务拆分
第十阶段:分布式服务

软件架构维护

软件架构维护与演化密不可分,维护需要对软件架构的演化过程进行追踪和控制,以保障软件架构的演化过程能够满足需求,软件架构维护过程设计架构知识管理、架构修改管理、架构版本管理等


上面的过于理论,我们还需要脚踏实地 ,作者其他要推荐的文章,欢迎来学习:
基于Spring Boot 3.1.0 系列文章

  1. Spring Boot 源码阅读初始化环境搭建
  2. Spring Boot 框架整体启动流程详解
  3. Spring Boot 系统初始化器详解
  4. Spring Boot 监听器详解
  5. Spring Boot banner详解
  6. Spring Boot 属性配置解析
  7. Spring Boot 属性加载原理解析
  8. Spring Boot 异常报告器解析
  9. 使用GraalVM 构建 Spring Boot 3.0 原生可执行文件
  10. Spring Boot 3.x微服务升级经历

Prometheus 系列文章

  1. Prometheus 的介绍和安装
  2. 直观感受PromQL及其数据类型
  3. PromQL之选择器和运算符
  4. PromQL之函数
  5. Prometheus 告警机制介绍及命令解读
  6. Prometheus 告警模块配置深度解析
  7. Prometheus 配置身份认证
  8. Prometheus 动态拉取监控服务
  9. Prometheus 监控云Mysql和自建Mysql

Grafana 系列文章,版本:OOS v9.3.1

  1. Grafana 的介绍和安装
  2. Grafana监控大屏配置参数介绍(一)
  3. Grafana监控大屏配置参数介绍(二)
  4. Grafana监控大屏可视化图表
  5. Grafana 查询数据和转换数据
  6. Grafana 告警模块介绍
  7. Grafana 告警接入飞书通知

http://www.niftyadmin.cn/n/1854604.html

相关文章

python 编写脚本请求图片保存本地_python利用pytesseract 实现本地识别图片文字

#!/usr/bin/env python3# -*- coding: utf-8 -*-import globfrom os import pathimport osimport pytesseractfrom PIL import Imagefrom queue import Queueimport threadingimport datetimeimport cv2def convertimg(picfile, outdir):调整图片大小,对于过大的图片…

【例4-5】双分支 if-else 语句

/* (二)双分支 if-else 语句 if-else 语句的一般格式: if(表达式) //if语句后不可以加";"!!!!!! {语句组1;} //语句组为独立语句时,大括号可以省略。 …

python redis 集群_Python操作redis集群

strictRedis对象方法用于连接redis指定主机地址,port与服务器连接,默认db是0,redis默认数据库有16个,在配置文件中指定database 16上代码1、对redis的单实例进行连接操作根据不同的实例方法,与redis的命令对应python32…

bootstrap:解决导航栏之间的距离

//这里面的,margin-left值都可以随意改变,其中container可以撑起来div框 media screen and (min-width:769px) and (max-width:869px) { .navbar-default .navbar-collapse .navbar-nav li { margin-left: 3%; }}media screen and (min-width:870px) and (max-…

【例4-6】双分支 if-else 语句练习

//判断三边分别为a、b、c的三角形是否为等腰三角形。 #include<stdio.h> int main() {int a, b, c;printf("请输入三角形的三边&#xff1a;");scanf_s("%d,%d,%d", &a, &b, &c);if (a b || b c || c a)printf("该三角形是等腰三…

python黑客库文件_python黑客代码的搜索结果-阿里云开发者社区

【网络编程5】Java与Python套接字Socket通信的例子今天看一本Python黑客相关的书的第一章部分&#xff0c;边看边在Linux Ubuntu Kylin 32位系统的终端打Python代码&#xff0c;就基本会用Python语言了&#xff0c;包括socket内容。刚好我之前学习Java Socket通信&#xff0c;今…

泊松过程(一)

泊松分布描述的是给定的某段时间内&#xff0c;事件发生的概率 1.Poisson Process 1.1 Counting process independent increment 注&#xff1a;增量是独立并且稳定的&#xff0c;同样服从泊松分布&#xff01;&#xff01;&#xff01;&#xff01;这个实际上是无记忆性&#…

【例4-7】1.双分支 if-else 语句嵌套

/* 嵌套&#xff1a;对于双分支语句 if-else 来说&#xff0c;其 if 分支或者 else 分支都可以嵌套上一个 if 语句 或者 if-else 语句。 else与if的匹配规则&#xff1a;else总是和前面离它最近的未配对if相匹配。可以通过"{}"来强制 if 和 else 的配对关系。 */ …