系统架构设计师备考第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) :新增控制流(如ref、par片段)。
    • DeleteFragment (DF):移除控制流(AF的逆向操作)。
    • FragmentTypeChange (FTC) :改变片段类型(如alt→opt)。
    • 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模型),此为案例分析题高频命题点。

相关推荐
吴建旭 智宅焕9 小时前
智能家居B端客户路径诊断的系统架构设计与实现:背景采集、经验分层与交付确定性
系统架构·智能家居
长不大的杨瑞杰3 天前
ChatGPT 广告技术栈架构拆解:多轮意图、LLM 工具编排、ANN 召回与拍卖闭环
人工智能·chatgpt·系统架构·推荐系统·广告
艺杯羹4 天前
Windows原生软件锁设计:从暴力杀进程丢数据到零轮询事件驱动架构
windows·系统架构·开源·开源软件·内存管理·开源协议
jktantan4 天前
注解式脱敏:用 Jackson 的 ContextualSerializer 做字段级策略(一)
spring boot·后端·算法·spring cloud·系统架构
艺杯羹6 天前
MCP本地服务集成避坑:从Stdio管道僵死到双向JSON-RPC稳健通信
人工智能·python·ai·系统架构·大语言模型·ai编程·mcp
奇树谦6 天前
Qt Quick 图片加载与 GPU 纹理机制详解:QImage、QQuickTextureFactory、QSGTexture 与异步加载
开发语言·qt·系统架构
无心水7 天前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
拆房老料8 天前
DeepSeek Super-agent 架构解析:从单任务 Agent 到持续运行的任务系统
人工智能·设计模式·系统架构
Jmyd01238 天前
文物3D数字化的技术选型指南:从WW/T 0115标准到落地工程,一次讲透采集、建档、管理与展示
3d·系统架构·博物馆·数字展厅·博物馆数字化
薛定谔的猫-菜鸟程序员9 天前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师