夜雨聆风学习资料网

ARTICLE · 1015850

软考 系统架构设计师 第十章 软件架构的演化和维护(一)- 软件架构演化和定义的关系

软考 系统架构设计师 第十章 软件架构的演化和维护(一)- 软件架构演化和定义的关系

:::tips
Hi,新朋友吗?点击上方“关注”,我们就是朋友啦!每天5分钟,为你解读[软考架构]那些事儿。

:::

画板

一、演化与维护是什么

软件架构的生命周期通常经历四个阶段,修改完善阶段实质上就是架构的演化与维护过程。

生命周期阶段
含义
初始设计
架构最初被设计出来
实际使用
系统上线运行
修改完善(=演化与维护)
为适应变化做纠错性修改和完善性修改
退化弃用
架构逐步失效被淘汰
  • • 目的:使软件能适应环境变化,满足用户需求。
  • • 性质:一个不断迭代的过程,架构在此过程中逐步完善。
  • • 本章范围:基本概念、演化类型、维护手段,以及实用的架构演化原则。

二、演化的重要性

核心观点

  • • 演化目的:维持架构自身的有用性,适应新需求、业务环境与运行环境的变化。
  • • 本质:软件整体结构的演化,涵盖架构全生命周期——需求获取、建模、文档、实现、维护。
  • • 关键论断:"软件架构是演化来的,而不是设计来的。"

为什么演化如此重要(三个层面)

1. 架构是系统的骨架

  • • 架构支撑整个软件系统,是保障性能、可靠性、安全性、易维护性等功能与质量属性的关键。
  • • 这些属性决定系统是否被用户接受、是否有市场竞争力、能否升级改造、是否有长生命周期。
  • • 架构演化正是保障这些属性向预期方向发展的措施。

2. 架构是宏观管控复杂性的蓝图

  • • 为管控系统整体复杂性与变化性提供有效途径。
  • • 基于架构进行检测和修改,成本相对较低。
  • • 因此从架构演化出发去刻画复杂演化、观察和控制影响效应,更加合理。

3. 保证演化的一致性、正确性,并降低成本、提升便捷性
具体有 3 个原因:

  1. 1. 架构的形式化、可视化表示 → 提高可构造性 → 便于演化;
  2. 2. 设计方案涵盖的整体结构、配置、约束信息 → 帮助开发人员预判未来可能的演化问题、情形与环境;
  3. 3. 架构设计时对组件间耦合的描述 → 有助于系统动态调整。

三、 演化与定义的关系

基本关系

  • • 软件架构定义众多(不完全统计近百种),不同定义确定了不同的组成方式与组成规则。
  • • 各定义间存在大量共性描述,因此架构演化既体现相同面,也体现不同面。
  • • 结论:理解架构演化,必须结合具体的架构定义。

以经典定义 SA = {Components, Connectors, Constraints} 为例

该定义下,演化主要关注组件、连接件、约束的添加、修改与删除。

要素
是什么
演化体现(增/删/改)
波及效应
组件 (Components)
基本要素与结构单元,表示主要计算元素、数据存储、重要模块
模块的增加、删除、修改
增模块→新增交互消息;删模块→删除已有交互;改模块→改变已有交互
连接件 (Connectors)
组件之间的交互关系
交互消息的增加、删除、改变
①伴随模块改变而改变;②系统内部结构调整导致人与系统交互流程改变
约束 (Constraints)
组件与连接件间的拓扑关系和配置,提供额外数据支撑(约束数据或参数)
知识库中仿真数据的增加、删除、改变
—

演化的波及效应分类

  • • 受变更直接影响的 组件 / 连接件 / 约束;
  • • 受变更波及的 组件 / 连接件 / 约束;
  • • 上述两类 + 未受影响的元素 = 演化后的软件架构。

要点:组件演化几乎总牵涉连接件演化;任何一类元素的变更都可能引发连锁的波及效应,最终所有元素共同构成演化后的新架构。


:::tips
听说给本文点“赞”的人,下半年都会好运爆棚!❤️

写文不易,您的关注就是对我最大的支持。我会持续产出更多优质内容,感谢相遇!

关注我,可查看更多往期内容!🎉

:::

相关学习资料