今
日
一
码
一、软件架构演化和定义
软件架构演化是对架构 修改和完善 的过程,为了适应环境变化 纠错性修改和完善的修改 等,不断迭代的过程。
演化过程涵盖 软件架构的全生命周期,包括 软件架构需求的获取、软件架构建模、软件架构文档、软件架构实现以及软件架构维护等阶段。
软件架构的演化可以 降低软件演化的成本。
软件架构定义包含 组件、连接件和约束三大要素,软件架构演化 主要关注 这三者之间添加、修改和删除等。
二、面向对象软件架构演化
对象演化:在顺序图中,组件的实体是对象,包含AddObject和DeleteObject,AO和DO两种。
消息演化:除了AO和DO外,还有
SwapMessageOrder(SMO)、OvertrueMessage(OM)、ChangeMessageModule(CMM)有五种。
SMO则是交换两条消息时间顺序。
OM则是反转发送消息和接受消息的对象。
CMM则是改变接受消息和发送消息对象。
复合片段演化:
复合片段是 对象交互关系的控制流描述,属于连接件范畴。
AddFragment(AF)、DeleteFragment(DF)、FragmentTypeChange(FTC)和
FragmentConditionChange(FCC)
AF:新增复合片段,
DF:删除复合片段。
FTC:改变复合片段类型。
FCC:改变复合片段内部执行条件。
约束演化:
直接对约束演化进行新增和删除,ADD Constraint,Delete Constraint。
演化过程是否处于系统自动运行,可以分为静态演化和动态演化。
软件架构演化时期:设计时演化、运行前演化、有限制运行时演化、和运行时演化。
静态演化五个步骤:软件理解、需求变更分析、演化计划、系统重构和系统测试。
架构演化的 可维护性 基于组件图(构件图)表示软件架构。
可靠性演化 基于用例图、部署图和顺序图。
动态演化只要四个方面:
属性改名:在运行时候,用户对属性重新定义。
行为改变:用户需求变化或系统自身服务质量调节都会引发软件行为变化。
拓扑结构变化:构件新增和删除,改变组件关联。
风格变化:正常演化后架构风格应该保持不变,就算演化也是两层C/S改成三层C/S。
动态软件架构DSA:允许运行过程中对框架结构动态演化对架构修改。
DR动态重配置:允许运行过程中增加删除组件,修改连接关系等。(比如服务降级,比如nacos动态配置文件读取)
动态重配置模式:主从模式、中央控制模式、客户端/服务器模式和分布式控制模式。
三、软件架构演化评估
评估过程分为:演化过程已知评估 和 演化过程未知的评估。
已知则知道每个版本的变化,每个版本变化的距离。
未知的话,通过演化前后的架构进行度量,比较两个度量之后的结果。
具体包括:架构修改影响分析、监控演化过程、分析关键演化过程。