系统架构设计师备考第43天——软件架构演化和定义

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

1. 演化的重要性
  • 目的 :适应需求变化(用户需求、业务环境、运行环境等),维持软件架构的有用性
  • 本质:软件整体结构的动态调整,贯穿架构全生命周期(需求获取、建模、实现、维护)。
  • 核心价值
    • 保障系统质量属性:性能、可靠性、安全性、可维护性等依赖架构的持续优化。
    • 降低演化成本:架构的可视化与形式化描述便于修改,减少波及效应。
    • 控制复杂性:通过架构蓝图宏观管理系统的变化性与一致性。
  • 关键原因
    1. 形式化架构描述提升可构造性;
    2. 架构设计预判未来演化场景;
    3. 组件耦合设计支持动态调整。
2. 演化和定义的关系
  • 架构定义多样性 :存在近百种架构定义(如 5A={组件, 连接件, 约束}),演化需结合具体定义。
  • 演化操作分类
    • 组件演化:增删改计算单元(如模块),波及交互消息变化。
    • 连接件演化:调整组件间交互关系(消息增删改),常伴随组件演化。
    • 约束演化:修改拓扑配置或参数(如知识库数据变更),影响架构合规性。
  • 波及效应 :变更分为直接影响元素 (主动修改部分)和间接影响元素(受牵连部分)。

二、 面向对象软件架构演化过程(基于UML顺序图)

1. 对象演化
  • 操作类型
    • AddObject (AO):新增对象(需新功能或功能独立化)。
    • DeleteObject (DO):删除对象(移除功能或合并对象降复杂度)。
  • 关键规则 :对象演化需伴随消息演化(否则无实际意义),否则不影响架构动态行为。
2. 消息演化
  • 核心作用:消息是顺序图核心,直接影响架构正确性和时态属性。

  • 演化类型

    操作 场景 影响
    AddMessage (AM) 新增交互行为 多数情况不违背约束
    DeleteMessage (DM) 移除交互行为 可能违背依赖该消息的约束
    SwapMessageOrder (SMO) 交换两条消息时序 可能改变控制流
    OverturnMessage (OM) 反转消息发送/接收对象 修改交互行为本身
    ChangeMessageModule (CMM) 改变消息的发送/接收对象 可能违背"消息源/目标"约束
  • 验证要求:需检查演化后是否违背约束(如LTL描述的时态属性)。

3. 复合片段演化
  • 定位:控制流描述(如分支、循环),属连接件范畴。
  • 演化类型
    • AddFragment (AF) :新增控制流(如refpar片段)。
    • DeleteFragment (DF):移除控制流(AF的逆向操作)。
    • FragmentTypeChange (FTC) :改变片段类型(如altopt)。
    • FragmentConditionChange (FCC):修改执行条件(影响转移触发事件)。
  • 影响:可能改变消息执行流程,需验证是否引发意外错误。
4. 约束演化
  • 操作类型
    • AddConstraint (AC):新增约束(需验证当前设计是否满足)。
    • DeleteConstraint (DC):删除约束(通常设计天然满足)。
  • 特点:约束以文本形式存储(如LTL公式),无可视化自动机描述。修改约束视为"删除+新增"。

三、考点总结与常见题型

高频考点
  1. 架构演化重要性:结合质量属性(性能、可靠性)说明演化必要性。

    • 考题示例 :为什么说软件架构是"演化来的"而非"设计来的"?
      :架构需持续适应环境变化,通过迭代修改维持有用性(生命周期特性)。
  2. 演化与定义的关系 :以5A={组件,连接件,约束}为例分析演化操作。

    • 考题示例 :删除一个组件会导致哪些连锁变化?
      :组件删除 → 关联连接件(消息)删除 → 依赖约束可能失效。
  3. 消息演化分类:区分5种消息操作(AM/DM/SMO/OM/CMM)的场景及影响。

    • 考题示例SwapMessageOrder是否必然导致架构错误?
      :不一定,需检查是否违反时序约束(如"A必须在B前执行")。
  4. 复合片段演化 :识别AF/DF/FTC/FCC对应的UML操作。

    • 考题示例 :将顺序图中的alt片段改为par属于哪种演化?
      FragmentTypeChange (FTC)
  5. 约束演化特点 :为何约束修改需拆分为"删除+新增"?
    :约束缺乏可视化描述,直接修改无法映射到自动机模型。

答题技巧
  • 波及效应分析:任何演化需考虑"直接修改元素 + 间接影响元素"。
  • 动态行为验证:消息与复合片段演化后需重新校验架构时态属性(如死锁风险)。

学习建议:结合UML顺序图工具模拟对象、消息、片段演化操作,直观理解波及效应。重点关注演化操作与架构定义的关联性(如5A模型),此为案例分析题高频命题点。

相关推荐
helloworddm6 小时前
Orleans Stream SubscriptionId 生成机制详解
java·系统架构·c#
庸了个白8 小时前
一种面向 AIoT 定制化场景的服务架构设计方案
mqtt·设计模式·系统架构·aiot·物联网平台·动态配置·解耦设计
武子康16 小时前
AI-调查研究-106-具身智能 机器人学习数据采集工具和手段:传感器、API、遥操作、仿真与真人示教全流程
人工智能·深度学习·机器学习·ai·系统架构·机器人·具身智能
武子康17 小时前
AI-调查研究-107-具身智能 强化学习与机器人训练数据格式解析:从状态-动作对到多模态轨迹标准
人工智能·深度学习·机器学习·ai·系统架构·机器人·具身智能
MZZDX1 天前
系统设计相关知识总结
系统架构
学无止境w1 天前
高并发系统架构设计原则:无状态、水平扩展、异步化、缓存优先
缓存·系统架构
qqxhb1 天前
系统架构设计师备考第45天——软件架构演化评估方法和维护
分布式·缓存·系统架构·集群·cdn·单体·已知未知评估
东南门吹雪2 天前
架构相关要素Extensibility 和Scalability的翻译区分
系统架构
chenchihwen2 天前
RAG 问题处理系统架构解析:企业级智能问答QuestionsProcessor.py的工程实现
系统架构