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

系统架构设计师备考第45天——软件架构演化评估方法和维护

一、 软件架构演化评估方法

1 演化过程已知的评估

目标:通过度量架构演化过程,分析内部结构差异与外部质量属性变化的关系。
评估流程

  1. 拆分原子操作
    • 将演化过程分解为原子操作序列(如添加/删除组件),生成中间版本架构序列 (A_0, A_1, \ldots, A_n)。
  2. 度量中间版本
    • 对每个中间版本 (A_i) 计算质量属性度量值 (Q_i),形成序列 (Q_0, Q_1, \ldots, Q_n)。
    • 关键质量属性
      • 可维护性:六元组度量(圈复杂度、扇入扇出度、耦合度、响应值、紧/松内聚度)。
      • 可靠性:单一实数值(潜在风险率)。
  3. 计算质量属性距离
    • 可维护性距离:归一化笛卡尔距离(公式):
      [
      D_m(A, B) = \sqrt{\sum_{k=1}^{6} \left( \frac{a_k - b_k}{a_k + b_k} \right)^2}
      ]
      (值越大,可维护性差异越大)
    • 可靠性距离:简化笛卡尔距离(公式):
      [
      D_r(A, B) = |a - b|
      ]
      (值越大,可靠性差异越大)
  4. 评估应用
    • 修改影响分析:关联原子操作与质量属性变化(如删除组件→耦合度降低)。
    • 演化监控:绘制质量属性变化曲线,识别突变点(如可靠性骤降)。
    • 关键过程定位:通过 (D[i-1,i]) 定位高风险演化步骤。

考点提示

  • 区分可维护性(多维指标)与可靠性(单值)的距离计算差异。
  • 质量属性距离不可累加((D[0,n] \neq \sum D[i-1,i]))。

2 演化过程未知的评估

适用场景:无法追踪演化步骤,仅能获取演化前后架构版本。
评估流程

  1. 逆向推测
    • 对比演化前后版本的度量结果(如可维护性六元组、可靠性值)。
    • 通过差异推测可能的原子操作(如组件替换、连接件删除)。
  2. 驱动原因分析
    • 关联演化操作与高层目标(如修复错误、性能优化)。
  3. 验证演化有效性
    • 若质量属性变化符合预期(如重构后圈复杂度降低),则演化成功;否则需进一步优化。

考点提示

  • 重点掌握“差异分析→操作推测→目标验证”的逻辑链条。

二、网站系统架构演化实例

目标:通过十阶段演进展示架构如何应对用户增长、高并发与海量数据挑战。
关键阶段及技术方案

阶段问题解决方案架构图特征
1低流量单体架构(应用+数据库+文件同一服务器)单服务器
2性能与存储瓶颈应用/文件/数据库分离三台独立服务器
3数据库读压力大引入缓存(本地缓存+远程分布式缓存)增加缓存层
4单应用服务器瓶颈应用服务器集群+负载均衡多应用服务器+调度器
5数据库写压力大数据库读写分离(主从同步)主数据库写,从数据库读
6跨区域访问延迟CDN加速+反向代理缓存边缘节点+中心代理
7海量数据存储分布式文件系统+分布式数据库分库分表
8复杂查询需求引入NoSQL与搜索引擎(如Elasticsearch)多数据源+统一访问模块
9业务复杂度高业务拆分(独立应用部署)分产品线独立部署
10系统耦合度高分布式服务(微服务化)共用业务服务层+应用界面调用

核心逻辑

  • 分而治之:通过分离、拆分、分布式化逐步解耦。
  • 渐进增强:每阶段解决当前瓶颈,保留扩展能力。

三、 软件架构维护

1. 知识管理
  • 记录架构决策、约束与演化历史,形成可追溯的知识库。
2. 修改管理
  • 隔离区域(Region of Quiescence)
    • 限定修改影响范围(如局部替换组件),避免波及无关模块。
  • 修改类型:组件/连接件/约束的增删改,需评估波及效应。
3. 版本管理
  • 量化波及效应
    • 静态演化:通过邻接矩阵分析组件依赖(如王映辉模型)。
    • 动态演化:基于语义网络模型追踪变更路径。
4. 可维护性度量实践
  • 度量指标:针对组件图计算六项子指标:
    圈复杂度 (CCN) = (总边数 - 总节点数) + 2 × 组件图数量  
    扇入扇出度 (FFC) = CCN × (出边数 + 提供接口数) × (入边数 + 使用接口数)²  
    耦合度 (CBO) = (出边数 + 入边数 + 提供接口数 + 使用接口数) / 总节点数  
    响应值 (RFC) = 子组件数 + 出边数 + 使用接口数  
    紧内聚度 (TCC) = 直接连接子组件对数 / 最大可能连接对数  
    
  • 案例:Web系统组件度量(详见表10-3, 10-4),需区分有无子组件的内聚度计算。

考点提示

  • 可维护性度量需区分“组件级指标”与“架构级平均值”(除CCN外)。
  • 无子组件时内聚度记为“not applied”。

本章核心考点总结

  1. 演化评估方法
    • 已知过程:原子操作→中间版本度量→质量距离计算→影响分析。
    • 未知过程:逆向推测操作→验证目标一致性。
  2. 网站架构演化
    • 十阶段演进逻辑(核心:分离→缓存→集群→分布式→微服务)。
  3. 架构维护
    • 修改隔离、版本波及效应分析、可维护性六指标计算。
  4. 公式应用
    • 可维护性距离 (D_m)、可靠性距离 (D_r)、圈复杂度(CCN)计算。
http://www.dtcms.com/a/495310.html

相关文章:

  • 基于SpringBoot+Vue的社区诊所管理系统(AI问答、webSocket实时聊天、Echarts图形化分析)
  • 【MySQL】第二章 基本的SELECT语句
  • Linux中软中断tasklet任务队列初始化
  • 网站制作的重要流程世界优秀摄影作品网站
  • 技术剖析:智能体工作流与RPA流程自动化的架构差异与融合实现
  • 深圳比斯特自动化|圆柱电池测试设备核心功能与技术发展解析
  • 【软考备考】系统架构设计需要考虑的因素 性能 、安全、成本、可维护性详解知识点五
  • 面试反馈 Spring Cloud 的25连环炮
  • 第八篇: `lsmod`, `modinfo`, `modprobe` - 深入内核模块
  • aspx网站服务器失去响应天工网工程新希望官网
  • 网站服务器要多少钱【邯郸网络推广公司|邯郸网络营销公司】
  • 做网站用什么域名比较好找公司开发网站
  • 【Python】求解GPS未知及高斯噪声
  • Linux 教程:如何查找服务器中的大文件
  • 计算机网络基础篇——应用层
  • 2025年主流外贸管理软件深度测评和选型策略咨询报告
  • 玩Android Harmony next版,通过项目了解harmony项目快速搭建开发
  • 公司免费网站域名申请免费网址
  • 华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南 CMP(类 Cloudera CDP 7.3)
  • Chromedriver放项目里就行!Selenium 3 和 4 指定路径方法对比 + 兼容写法
  • Spring Boot 项目, idea 控制台日志设置彩色
  • wap网站建设好不好百度小程序官方收费标准
  • Go语言数据竞争Data Race 问题怎么检测?怎么解决?
  • 作为项目经理,如何做好项目复盘?
  • 网站建设百度不通过杭州建站模板系统
  • A函数里调用B函数 ,且往B函数里传了个二级指针,并在B返回后,释放该指针
  • 茶社网站开发与设计的开题报告自适应网站好建们
  • 做拍福利爱福利视频网站网站建设与维护实训
  • LangGraph学习笔记(一):langgraph安装
  • DFS算法原理及其模板