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

系统架构设计师备考第44天——软件架构演化方式的分类和原则

一、 软件架构演化方式的分类

1 软件架构演化时期

根据演化发生的时机,分为四类:

  1. 设计时演化

    • 定义:发生在架构模型设计阶段,代码编译之前。
    • 特点:无需考虑运行状态,但需调整架构模型以保障实现一致性。
    • 典型场景:开发过程中需求变更或设计优化。
  2. 运行前演化

    • 定义:发生在编译后、系统运行前。
    • 特点:应用程序未执行,修改无需考虑状态,但需支持组件增删机制。
    • 典型场景:软件发布后因环境变化(如操作系统升级)需调整架构。
  3. 有限制运行时演化

    • 定义:系统运行时在特定约束下(如“安全模式”)触发的演化。
    • 特点:仅允许预定义的演化操作(如组件替换),需满足预设条件。
    • 典型场景:金融或航天系统需避免停机的高风险场景。
  4. 运行时演化

    • 定义:系统运行中动态调整架构(如增删组件、改变拓扑)。
    • 特点:难度最高,需保证演化原子性(失败则回滚)。
    • 典型场景:服务器根据请求动态创建组件,或在线升级系统。

2 软件架构静态演化

定义:系统停止运行时进行的架构修改(如修复、升级)。
分类

  1. 设计时演化需求:开发阶段调整架构以保障实现一致性。
  2. 运行前演化需求:发布后因环境变化修改架构(如适配新硬件)。

静态演化过程(5步骤):

  1. 软件理解:分析现有架构及组件关系。
  2. 需求变更分析:识别新旧需求差异。
  3. 演化计划:确定范围、成本及策略。
  4. 系统重构:执行组件增删、模块拆分/聚合等操作。
  5. 系统测试:验证演化后架构的正确性。

静态演化实例:正交软件架构

  • 核心思想:功能分层与线索化,同一层组件无交互。
  • 演化步骤
    ① 需求归类至对应线索;
    ② 制定演化计划;
    ③ 增/删/改组件;
    ④ 更新组件交互;
    ⑤ 生成新架构设计方案。

原子演化操作(与质量属性相关):

  • 可维护性操作:增删模块依赖(AMD/RMD)、增删接口(AMI/RMI)、模块拆分/聚合(SM/AGM)。
  • 可靠性操作:增删消息(AMS/RMS)、增删交互对象(AO/RO)、修改消息片段(CF)。

3 软件架构动态演化

定义:系统运行时动态调整架构,无需停机。
动态性等级(Carlos E. Cuesta分类):

  1. 交互动态性:数据在固定结构下动态交互(如请求响应)。
  2. 结构动态性:支持组件/连接件增删(主流应用)。
  3. 架构动态性:允许重定义架构基本构造(如新组件类型)。

动态演化内容

  • 属性重定义(如响应时间)、行为变化(如更换加密算法)、拓扑改变(增删组件)、风格变化(如C/S转B/S)。

实现技术

  1. 动态软件架构(DSA)

    • 运行时显式表示架构状态,支持动态修改。
    • 实施步骤
      ① 捕捉需求变化;
      ② 生成演化策略;
      ③ 执行演化;
      ④ 评估效果。
    • 描述语言
      • π-ADL:基于进程代数,描述移动系统动态行为。
      • Pilar:基于反射理论,分层描述元模型与基系统。
      • LIME:分离计算与协调,支持分布式系统动态交互。
  2. 动态重配置(DR)

    • 运行时修改组件/连接件配置(如增删连接关系)。

二、 软件架构演化原则

18条核心原则及度量方案:

1. 成本与进度控制
  • 演化成本控制(ECC):CoE(演化成本)≪ CoRD(重新开发成本)。
  • 进度可控:实际耗时(Ttask)与预期(T’task)差值越小越好。
2. 风险与影响控制
  • 风险可控:时间、经济、技术等风险需可量化管理。
  • 影响可控:模块修改的影响范围需可预测(如计算影响矩阵)。
3. 结构优化与独立性
  • 主体维持:主体规模变更量/主体规模(AIG)需平稳。
  • 模块独立演化:修改局部化,降低耦合(内聚度↑,耦合度↓)。
  • 系统总体结构优化:通过可靠性、性能指标评估整体结构合理性。
4. 质量与适应性提升
  • 质量向好(QI):演化后质量(EQI)>原质量(SQ)。
  • 适应新技术(TI):TI=1-(依赖技术/总技术),值越高越好。
  • 适应新需求(NRA):适应需求数(ANR)/实际需求数(NR)趋近1。
5. 规范与重构支持
  • 标准依从性:符合国际/行业标准(需人工判定)。
  • 有利于重构:降低系统复杂度(CC<阈值)。
  • 有利于重用:模块高内聚、低耦合。

考点总结与典型考题

核心考点
  1. 演化时期分类:区分设计时、运行前、运行时演化的触发条件及特点。
  2. 静态 vs 动态演化:正交架构的应用场景 vs DSA的三级动态性。
  3. 演化原则:重点掌握ECC、模块独立演化、质量向好的度量公式。
典型考题
  1. 选择题

    有限制运行时演化的特点是( )。
    A. 允许任意组件修改
    B. 需在安全模式下触发
    C. 无需预设条件
    答案:B

  2. 简答题

    简述正交软件架构的演化步骤。
    :①需求归类至线索;②制定计划;③修改组件;④更新交互;⑤生成新架构。

  3. 案例分析

    某电商系统需支持动态扩容,应选择何种演化技术?说明原因。
    :采用DSA(动态软件架构),因其支持运行时增删组件(结构动态性),保障系统高可用。

http://www.dtcms.com/a/494990.html

相关文章:

  • 郑州网站建设公司排行超级工程网站建设上海中心大厦
  • 睢县做网站酒店怎样做网站好评
  • Azure OpenAI 压测和配额规划完整指南
  • Lua C API 中的 lua_rawseti 与 lua_rawgeti 介绍
  • 基于单片机的便携式温湿度检测烘干机设计
  • lua对象池管理工具剖析
  • 网站建设选择什么系统好福建省建设工程执业注册管理中心网站
  • 桐庐建设局网站域名解析入口
  • 数据库flask访问
  • 每日Reddit AI信息汇总 10.17
  • 高可用、高性能、高扩展集群核心区别详解以及高可用介绍
  • 【Linux网络】初识网络,网络的基础概念
  • 手机端网站动效类怎么做seo搜索优化 指数
  • 递归与迭代——力扣101.对称二叉树
  • 中扬立库 × 宁波卡帝亚:小家电之乡的仓储革命,破解制造仓储瓶颈
  • Linux《网络基础》
  • 网络层(IP)
  • 近红外相机在半导体制造领域的应用
  • 网站制作 深圳信科网络公司对比网站
  • 百度旗下所有app列表温州seo排名优化
  • 怎样做让百度收录网站域名设计方案翻译
  • 【whistle】whistle的安装和代理配置
  • 智能油脂润滑系统:降低维护成本与提升生产效率的双赢之道
  • CC17-加油站
  • 【办公类-120-01】20251016 UIBOT下载小说做成docx
  • RestTemplate发送Post请求报错:414 URI Too Long
  • 热力图:从逸出数据到宏观模式识别
  • 解决 gf / gau 与 Oh-My-Zsh 别名冲突的两种办法
  • 开源链动2+1模式、AI智能名片与S2B2C商城小程序:社群经济的数字化重构路径
  • 【详解vtkVoxelContoursToSurfaceFilter】:从有序XY平面轮廓生成三维表面