系统架构设计师备考第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模型),此为案例分析题高频命题点。

相关推荐
武子康1 天前
Java-166 Neo4j 安装与最小闭环 | 10 分钟跑通 + 远程访问 Docker neo4j.conf
java·数据库·sql·docker·系统架构·nosql·neo4j
Ashlee_code2 天前
经纪柜台系统解析:从今日国际金融动荡看证券交易核心引擎的变革
python·架构·系统架构·区块链·vim·柜台·香港券商
qqxhb3 天前
系统架构设计师备考第66天——系统安全架构
系统架构·安全架构·技术/组织/管理·wpdrrc·osi安全·多点防御·支撑设施
qqxhb3 天前
系统架构设计师备考第63天——通信系统架构
5g·系统架构·局域网·通信系统·sdn·广域网·存储网络san/nas
qqxhb3 天前
系统架构设计师备考第67天——数据库系统的安全&系统架构的脆弱性
数据库·安全·系统架构·访问控制·完整性·脆弱性·身份鉴别
小鱼儿LY3 天前
系统架构设计师论文-论软件体系结构的演化
系统架构·软件体系结构·架构设计师·体系结构演化
qqxhb3 天前
系统架构设计师备考第64天——网络构建关键技术
网络·系统架构·mtbf·mttr·冗余硬件·软件热备·快速检测
爱好读书3 天前
一键生成系统架构图
系统架构·毕业设计·课程设计
zhmhbest4 天前
Qt 全球峰会 2025:中国站速递 —— 技术中立,拥抱更大生态
开发语言·qt·系统架构
qqxhb4 天前
系统架构设计师备考第65天——安全架构和模型
系统架构·状态机·安全架构·安全模型·物理/信息/网络/系统·blp/biba·chinese wall