系统架构设计师备考第43天——软件架构演化和定义
一、软件架构演化和定义的关系
1. 演化的重要性
- 目的:适应需求变化(用户需求、业务环境、运行环境等),维持软件架构的有用性。
- 本质:软件整体结构的动态调整,贯穿架构全生命周期(需求获取、建模、实现、维护)。
- 核心价值:
- 保障系统质量属性:性能、可靠性、安全性、可维护性等依赖架构的持续优化。
- 降低演化成本:架构的可视化与形式化描述便于修改,减少波及效应。
- 控制复杂性:通过架构蓝图宏观管理系统的变化性与一致性。
- 关键原因:
- 形式化架构描述提升可构造性;
- 架构设计预判未来演化场景;
- 组件耦合设计支持动态调整。
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):修改执行条件(影响转移触发事件)。
- AddFragment (AF):新增控制流(如
- 影响:可能改变消息执行流程,需验证是否引发意外错误。
4. 约束演化
- 操作类型:
- AddConstraint (AC):新增约束(需验证当前设计是否满足)。
- DeleteConstraint (DC):删除约束(通常设计天然满足)。
- 特点:约束以文本形式存储(如LTL公式),无可视化自动机描述。修改约束视为“删除+新增”。
三、考点总结与常见题型
高频考点
-
架构演化重要性:结合质量属性(性能、可靠性)说明演化必要性。
- 考题示例:为什么说软件架构是“演化来的”而非“设计来的”?
答:架构需持续适应环境变化,通过迭代修改维持有用性(生命周期特性)。
- 考题示例:为什么说软件架构是“演化来的”而非“设计来的”?
-
演化与定义的关系:以
5A={组件,连接件,约束}
为例分析演化操作。- 考题示例:删除一个组件会导致哪些连锁变化?
答:组件删除 → 关联连接件(消息)删除 → 依赖约束可能失效。
- 考题示例:删除一个组件会导致哪些连锁变化?
-
消息演化分类:区分5种消息操作(AM/DM/SMO/OM/CMM)的场景及影响。
- 考题示例:
SwapMessageOrder
是否必然导致架构错误?
答:不一定,需检查是否违反时序约束(如“A必须在B前执行”)。
- 考题示例:
-
复合片段演化:识别
AF/DF/FTC/FCC
对应的UML操作。- 考题示例:将顺序图中的
alt
片段改为par
属于哪种演化?
答:FragmentTypeChange (FTC)
。
- 考题示例:将顺序图中的
-
约束演化特点:为何约束修改需拆分为“删除+新增”?
答:约束缺乏可视化描述,直接修改无法映射到自动机模型。
答题技巧
- 波及效应分析:任何演化需考虑“直接修改元素 + 间接影响元素”。
- 动态行为验证:消息与复合片段演化后需重新校验架构时态属性(如死锁风险)。
学习建议:结合UML顺序图工具模拟对象、消息、片段演化操作,直观理解波及效应。重点关注演化操作与架构定义的关联性(如5A模型),此为案例分析题高频命题点。