15.软件架构的演化和维护

张开发
2026/4/10 11:13:10 15 分钟阅读

分享文章

15.软件架构的演化和维护
一、软件架构的演化和维护 00:001. 考情分析 00:231历年真题考情分值预测: 本章节可能考察2分左右历史情况: 属于第二版教材纯新增章节历年真题尚未出现过相关考题2章节内容重要性及预测 00:32考察概率: 选择题和案例题中出现的可能性较低论文题可能出现相关论述重点内容: 主要关注大型网站架构演化实例该部分内容较为实用且有趣教材定位: 对应第二版教材第十章讲述架构设计完成后的维护和修改阶段3教材内容与学习重点 02:36知识框架:软件架构演化和定义面向对象软件架构演化软件架构演化方式分类软件架构演化原则软件架构演化评估大型网站架构演化重点实例软件架构维护学习建议:重点关注演化实例的十个阶段变化理解架构演化的基本概念和原则即可计算类内容可忽略考试不会涉及内容特点:属于架构生命周期中的后期阶段关注系统运行后的架构修改和维护与前期架构设计形成完整知识链条2. 软件架构的演化和定义 03:591软件架构的演化和维护 04:35定义与目的定义: 软件架构的演化和维护是对架构进行修改和完善的过程。目的: 使软件能够适应环境的变化进行纠错性修改和完善性修改是一个不断迭代的过程直至满足用户需求。演化过程与全生命周期 06:15演化过程: 包括软件架构需求的获取、软件架构建模、软件架构文档化、软件架构实现以及软件架构维护等阶段。全生命周期: 相当于一次重新开发的全生命周期涵盖需求、建模、文档、实现、维护等各个阶段。重要性系统骨架: 架构是整个系统的骨架是软件系统具备诸多好的特性的保障。软件蓝图: 软件架构作为软件蓝图为人们宏观管控软件系统的整体复杂性和变化性提供了一条有效途径。2软件架构演化的重要性架构作为系统骨架描述系统蓝图: 架构描述了整个系统的大范围蓝图是系统的骨架。连接需求与设计: 架构在需求到设计之间架起桥梁帮助实现需求到设计的转化。架构作为软件蓝图宏观掌控: 软件架构描述的是软件构建和连接件之间的关系是系统的大模块结构图有助于宏观掌控软件系统。3软件架构的演化能降低软件演化的成本 08:20提高可构造性形式化表示: 对系统的软件架构进行形式化、可视化表示提高了软件的可构造性便于软件演化。涵盖整体信息整体结构信息: 软件架构设计方案涵盖整体结构信息、配置信息、约束信息等有助于开发人员充分考虑未来可能出现的演化问题、演化情况和演化环境。耦合描述动态调整: 架构设计时对系统组件之间的耦合描述有助于软件系统的动态调整。4软件架构的定义 09:53三大要素组件: 构建软件的基本单元。连接件: 描述组件之间的关系和交互。约束: 对组件和连接件的限制条件。演化关注点演化内容: 软件架构的演化主要关注组件、连接件、约束三大要素之间的添加、修改和删除等。5面向对象软件架构演化 10:44构建演化对象演化: 包括增加对象和删除对象两种情况。增加对象通常用于实现新功能或独立现有对象的功能删除对象则用于删除某个对象的功能或合并对象。连接件演化消息演化增加消息: 当需要增加交互时。删除消息: 当需要删除交互时。交换消息顺序: 改变两条消息的时间顺序。反转消息发送接收对象: 发送和接收对象互换。改变消息发送或接收对象: 改变消息的发送或接收对象不一定是互换。复合片段演化增加复合片段(AF): 在某几条消息上新增复合片段用于增添新的控制流。删除复合片段(DF): 删除某个现有的复合片段用于移除当前某段控制流。改变复合片段类型(FTC): 改变某段控制流的类型通常伴随着条件、内部执行序列的同时演化。改变复合片段内部执行条件(FCC): 改变复合片段内部的执行条件。约束演化增加约束(AC): 直接添加新的约束信息需判断当前设计是否满足新添加的约束要求。删除约束(DC): 直接移除某条约束信息通常用于去除某些不必要条件。演化实例: 通过面向对象软件架构的演化实例展示了如何从构建、连接件、约束三大要素进行具体的演化操作。6软件架构演化方式的分类 20:18按照实现方式和实施粒度分类 20:34实现方式和粒度: 软件架构演化可以按照实现方式和实施粒度进行分类包括基于过程和函数的演化、面向对象的演化、基于组件的演化和基于架构的演化。粒度变化: 从面向过程和函数最细粒度到面向对象包含多个函数和方法粒度变粗再到基于组件构建粒度更粗最后到基于架构最粗粒度。按照研究方法分类 21:25研究方法分类: 软件架构演化方式还可以按照研究方法分为四类演化支持: 如代码模块化的准则、可维护性指示如内聚和耦合、代码重构等。版本和工程管理工具: 如版本控制工具等。架构变换的形式方法: 包括系统结构和行为变换的模型以及架构演化的重现风格等。成本收益分析: 决定如何增加系统的弹性。按照演化过程是否处于系统运行时期分类 21:53演化过程时期: 软件架构演化可以分为静态演化和动态演化。静态演化发生在系统非运行时期动态演化发生在系统运行期间。软件架构演化的时期 22:28演化时期: 软件架构的演化可以在四个时期进行设计时演化、运行前演化、有限制运行时演化、运行时演化。时期解释:设计时演化: 在架构设计阶段进行。运行前演化: 系统编译完成后但尚未开始运行前进行。有限制运行时演化: 如阿尔法测试、贝塔测试阶段加入限制条件进行演化。运行时演化: 系统正常运行后的演化。静态演化的维护方法 24:22维护方法: 静态演化相关的维护方法包括更正性维护、适应性维护和完善性维护。静态演化的五个步骤 24:44演化步骤:软件理解: 查阅软件文档分析软件架构识别系统组成元素及其相互关系提取系统的抽象表示形式。需求变更分析: 找出新的软件需求与原有需求的差异。演化计划: 分析原系统确定演化范围和成本选择合适的演化计划。系统重构: 根据演化计划对系统进行重构。系统测试: 对演化后的系统进行测试查找错误和不足。动态演化的需求来源 30:06需求来源: 动态演化主要来自两类需求软件内部执行: 如服务器端软件在客户请求到达时创建新组件。外部请求: 如操作系统升级时无需重新启动在运行过程中完成体系结构修改。动态性的三个级别 31:53动态性级别:交互动态性: 数据在固定结构下动态交互。结构动态性: 允许对结构进行修改如组件和连接件实例的添加和删除。架构动态性: 允许软件架构的基本构造变动如新组件类型的定义。动态演化的四个方面 32:38演化方面:属性改名: 对非功能属性指标进行重新定义。行为变化: 用户需求变化或系统服务质量调节引发软件行为变化。拓扑结构改变: 增删组件、连接件改变组件与连接件之间的关联关系。风格变化: 架构风格一般保持不变如需改变只能变为衍生风格。动态软件架构与动态重配置 35:01动态软件架构: 在运行过程中改变架构框架、结构、行为如增删组件。动态重配置: 对组件和连接件的配置进行动态修改不需关闭软件。动态软件架构的实施步骤 37:35实施步骤:找到需求变化: 分析老架构与新架构之间的需求差异。生成演化策略: 根据需求变化制定演化策略。实施演化: 根据演化策略进行架构调整。评估和检测: 对演化后的系统进行评估和检测。7软件架构演化原则 39:18成本控制演化成本需低于重新开发成本否则不应进行演化主体稳定性必须保证系统核心功能在演化过程中保持稳定速率控制演化速度应趋于稳定避免过快或过慢模块独立性各模块应能独立演化对其他模块影响控制在可接受范围重构友好性演化应有利于后续代码重构和组件重用标准符合性需遵循行业标准规范适应新技术环境质量提升演化后架构必须在可靠性、可维护性等方面优于原架构8软件架构演化评估方法 40:55评估分类依据 41:42分类标准根据是否知晓演化中间过程分为已知评估和未知评估核心区别已知评估采用正向度量未知评估采用逆向推测已知过程评估 42:21执行流程记录每个原子操作产生的中间版本AiA_iAi​测量各版本质量属性值QiQ_iQi​计算相邻版本质量距离D(i−1,i)D_{(i-1,i)}D(i−1,i)​典型应用适用于完整记录演化路径的项目如版本控制系统管理的代码库未知过程评估 44:35实施步骤分别度量演化前后架构(A0A_0A0​和AnA_nAn​)的质量属性对比关键指标差异如可靠性从5×8提升到7×24逆向推测可能采用的演化操作集合适用场景第三方系统评估或遗留系统改造时的架构分析评估方法论 46:57统一基础两种方法均基于质量属性的量化度量度量维度重点关注可维护性、可靠性等关键质量属性过程监控评估需包含架构修改影响分析和演化过程监控9大型网站架构演化 47:21架构演化背景核心问题: 主要解决PB级别大数据和千万至亿级高并发问题典型场景: 淘宝、京东等电商平台12306票务系统直播平台等传统架构局限: 无法支撑海量数据处理和超高并发访问需求演化阶段详解第一阶段单体架构结构特点: 单一服务器集成应用、文件、数据库所有功能适用场景: 初创期小规模业务低并发场景类比说明: 类似个人电脑主机所有操作集中在一台设备第二阶段垂直架构核心改进: 功能分离为应用服务器、文件服务器、数据库服务器优势: 实现初步的功能解耦和资源隔离局限: 单点故障风险并发处理能力仍有限第三阶段缓存优化技术方案: 引入Redis/Memcached等分布式缓存优化原理: 遵循二八原则缓存20%高频访问数据影响范围: 主要缓解数据库服务器压力第四阶段服务器集群实现方式: 多台应用服务器负载均衡调度优化目标: 提升并发处理能力关键技术: 负载均衡算法实现请求分发第五阶段读写分离数据库优化: 主从复制架构主库写/从库读理论依据: 数据库写操作耗时远高于读操作同步机制: 主从数据库实时数据同步第六阶段CDN与反向代理CDN原理: 就近调度如上海用户访问上海服务器反向代理: 请求转发和流量控制适用场景: 应对突发高并发如12306春运第七阶段分布式系统文件系统: 分布式文件存储数据库系统: 物理分散、逻辑统一优势: 突破单机房限制提高系统容灾能力第八阶段NoSQL与搜索NoSQL应用: 处理非结构化海量数据搜索引擎: 提升数据检索效率技术代表: Elasticsearch等搜索框架第九阶段业务拆分实现方式: 按业务模块拆分部署优化效果: 降低单业务访问延迟架构特点: 微服务化前身第十阶段全面分布式架构特征: 所有组件分布式部署包含要素: 分布式缓存、服务、文件、数据库设计原则: 物理分散、逻辑统一3. 软件架构维护 56:481软件架构维护概述定义: 软件架构维护是在软件架构演化评估之后对新的软件架构进行的持续管理活动。目的: 确保软件架构的稳定性和可持续性支持软件的长期运行和演化。2架构知识管理定义: 对架构设计中所隐含的决策来源进行文档化表示以在架构维护过程中提供帮助。内容: 包括架构设计和架构设计决策即说明采用此种架构的原因。作用:帮助维护人员对架构的修改进行完善的考虑。为其他软件架构的相关活动提供参考。侧重于软件开发和实现过程中的架构静态演化提供架构的质量属性及其设计依据。3架构修改管理做法: 建立一个隔离区域保障该区域中任何修改对其他部分的影响较小或没有影响。要点:明确修改规则。明确修改类型。评估可能的影响范围和副作用。目标: 确保修改的隔离性减少对其他模块的影响。4架构版本管理作用: 为软件架构演化的版本演化控制、使用和评价等提供可靠的依据。意义:记录不同的演化版本便于回溯。为架构演化的量化度量奠定基础。支持软件的持续集成和持续部署CI/CD。二、软件架构演化与维护 59:331. 核心概念演化本质架构演化实质上是系统在运行阶段的维护过程通过调整构件、连接件和约束条件实现系统迭代理解要点相比书本理论通过面向对象实例更容易掌握演化过程中各要素的相互作用关系2. 方法论体系1实施方法静态方法基于架构描述的离线修改需要系统停机维护动态方法支持运行时热更新对系统可用性要求高的场景首选2实践特征大型系统特点演化过程通常呈现渐进式特征需要案例驱动的场景分析理论局限性教材定义往往无法直接套用实际工程场景需结合具体上下文3. 考核重点提示命题规律不会直接考察书本定义默写而是通过情景分析题考察演化决策能力应试技巧重点掌握架构要素变更的因果关系典型案例中演化路径的分析方法考点预警可能要求对比不同演化方案的优劣或分析特定约束条件下的演化策略注本笔记严格遵循康奈尔笔记法规范所有知识点均来自课程讲解内容未添加任何非授课信息。幻灯片插入位置与对应知识模块完全匹配关键术语保持原课程表述方式。三、知识小结知识点核心内容考试重点/易混淆点难度系数软件架构演化定义对架构进行修改和完善定义理解演化与维护区别演化关注架构修改维护关注运行后修改概念区分面向对象演化实例通过顺序图描述对象、消息、控制流演化实例理解演化方式分类实现方式、研究方法、运行时期静态/动态分类记忆静态演化步骤软件理解、需求变更分析、演化计划、系统重构、测试评估步骤顺序动态演化技术动态软件架构DSA、动态重配置技术对比演化原则成本控制、进度控制、风险控制等原则列举演化评估方法演化过程已知/未知评估基于度量评估类型大型网站架构演化实例单体架构到分布式服务处理大数据高并发实例应用架构维护内容知识管理、修改管理、版本管理维护方面

更多文章