系统架构设计师备考第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(动态软件架构),因其支持运行时增删组件(结构动态性),保障系统高可用。

相关推荐
sniper_fandc4 小时前
XXL-JOB从入门到进阶——系统架构、核心原理
系统架构·xxl-job
qqxhb4 小时前
系统架构设计师备考第43天——软件架构演化和定义
系统架构·架构演化·架构定义·对象演化·消息演化·复合片段·约束演化
helloworddm6 小时前
Orleans Stream SubscriptionId 生成机制详解
java·系统架构·c#
庸了个白8 小时前
一种面向 AIoT 定制化场景的服务架构设计方案
mqtt·设计模式·系统架构·aiot·物联网平台·动态配置·解耦设计
武子康16 小时前
AI-调查研究-106-具身智能 机器人学习数据采集工具和手段:传感器、API、遥操作、仿真与真人示教全流程
人工智能·深度学习·机器学习·ai·系统架构·机器人·具身智能
武子康17 小时前
AI-调查研究-107-具身智能 强化学习与机器人训练数据格式解析:从状态-动作对到多模态轨迹标准
人工智能·深度学习·机器学习·ai·系统架构·机器人·具身智能
MZZDX1 天前
系统设计相关知识总结
系统架构
学无止境w1 天前
高并发系统架构设计原则:无状态、水平扩展、异步化、缓存优先
缓存·系统架构
qqxhb1 天前
系统架构设计师备考第45天——软件架构演化评估方法和维护
分布式·缓存·系统架构·集群·cdn·单体·已知未知评估