知识卡片

动态软件架构DSA与动态重配置DR的原理

普通读书笔记卡

内容

实现架构动态演化的两种主要技术是动态软件架构(DSA)和动态重配置(DR),书中把DSA归结为对应架构动态性、把DR归结为对应[[软件动态性的三个层次]]中的结构动态性。DSA指那些在软件运行时刻会发生变化的体系结构,Bradbury等人的定义是:DSA可以修改自身的架构,并在系统执行期间进行修改。DR则从组件和连接件的配置入手,允许在运行过程中增删组件、增删连接件、修改连接关系等操作,主要用于系统部署之后对配置信息的修改(如动态升级时的配置调整)。DSA实现动态演化的基本原理是:让体系结构作为一类有状态、有行为、可操作的实体,在可运行应用系统中显式表示出来,并被整个运行环境共享,作为整个系统运行的依据——也就是说,运行时刻体系结构相关信息的改变能触发、驱动系统自身的动态调整,反过来系统自身所做的动态调整结果也能反映在体系结构这个抽象层面上。通过引入这样一个运行时体系结构对象,相关协同逻辑可以从计算组件中分离出来(符合关注点分离原则),同时也解除了系统组件之间的直接耦合,这两点都有助于系统的动态调整。要真正落地,系统必须提供:保存当前架构信息(拓扑结构、组件状态和数目等)的能力;一个监控管理机制,用来监视需求变化、判断能否实施演化以及何时演化、演化范围,并生成演化策略;演化操作的原子性保证——若一批操作中有任何一个失败,整个操作集必须能被撤销,避免系统陷入不稳定状态(这与数据库事务的原子性要求同源)。DSA实施动态演化大体遵循四步:捕捉分析需求变化→获取或生成体系结构演化策略→选择适当演化策略并实施→演化后的评估与检测。DSA的价值主要在于降低系统更新的费用和风险——对于航空航天、生命维持、金融、交通等需要长期运行且具有特殊使命的系统,停止运行来更新维护会带来高额费用和巨大风险,而静态体系结构本身缺乏表示动态更新的机制,很难用来分析、描述、指导这类系统的动态演化。

参考来源

- 位置:《软件架构理论与实践》第9章《软件架构的演化和维护》"9.2.2 软件架构动态演化"节之"3.动态软件架构"(源文件:_epub-src/OEBPS/text00073.html) - 结论依据:原文说明"实现软件架构动态演化的基本原理是使DSA在可运行应用系统中以一类有状态、有行为、可操作的实体显式地表示出来,并且被整个运行环境共享,作为整个系统运行的依据",并列出保存架构信息、监控管理机制、演化操作原子性三项落地要求,直接支撑本卡片结论。 - 原始内容:Bradbury等人为DSA做了如下定义:动态软件架构(DSA)可以修改自身的架构,并在系统执行期间进行修改……还应保证演化操作原子性,即在动态变化过程中,如果其中之一的操作失败了,整个操作集都要被撤销,从而避免系统出现不稳定的状态。