【新版系统架构】第十章-软件架构的演化和维护

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

架构演化的重要性:

  1. 软件架构作为软件系统的骨架支撑着整个系统,是软件系统具备诸多好的特性的重要保障
  2. 软件架构作为软件蓝图为人们宏观管控软件系统的整体复杂性和变化性提供了一条有效途径,而且基于软件架构进行的软件检测和修改成本相对较低

软件架构的演化可以更好地保证软件演化的一致性和正确性,明显降低软件演化成本,使得软件系统演化更加便捷,有3方面原因:

  1. 对系统的软件架构进行的形式化、可视化表示提高了软件的可构造性,便于软件演化
  2. 软件架构设计方案涵盖的整体结构信息、配置信息、约束信息等有助于开发人员充分考虑未来可能出现的演化问题、演化情况和演化环境
  3. 架构设计时对系统组件之间的耦合描述有助于软件系统的动态调整

面向对象软件架构演化过程

对象演化、消息演化、复合片段演化、约束演化

软件架构演化方式的分类

3种典型的分类方法:

  1. 按照软件架构的实现方式和实施粒度分类:基于过程和函数的演化、面向对象的演化、基于组件的演化和基于架构的演化
  2. 按照研究方法分类:第一类对演化的支持,第二类版本和工程的管理工具,第三类架构变换的形式方法,第四类架构演化的成本收益分析
  3. 按照软件架构的演化过程是否处于系统运行时期分:静态演化和动态演化

软件架构演化时期:设计时演化、运行前演化、有限制运行时演化、运行时演化

软件架构演化原则

演化成本控制原则、进度可控原则、风险可控原则、主体维持原则、系统总体结构优化原则、平滑演化原则、目标一致原则、模块独立演化原则、影响可控原则、复杂性可控原则、有利于重构原则、有利于重用原则、设计原则遵从性原则、适应新技术原则、环境适应性原则、标准依从性原则、质量向好原则、适应新需求原则

软件架构演化评估方法

根据演化过程是否已知可将评估过程分为:演化过程已知的评估、演化过程未知的评估

大型网站架构演化实例

第一阶段:单体架构 第二阶段:垂直架构(应用、数据分离) 第三阶段:缓存改善网站性能 第四阶段:使用服务集群改善网站并发处理能力 第五阶段:数据库读写分离 第六阶段:使用反向代理和CDN加速网站响应 第七阶段:使用分布式文件系统和分布式数据库系统 第八阶段:使用NoSQL和搜索引擎 第九阶段:业务拆分 第十阶段:分布式服务

软件架构维护

软件架构维护与演化密不可分,维护需要对软件架构的演化过程进行追踪和控制,以保障软件架构的演化过程能够满足需求,软件架构维护过程设计架构知识管理、架构修改管理、架构版本管理等