知识卡片

软件动态性的三个层次

结构图卡

内容

Carlos E. Cuesta把软件的动态性分为三个层级,层级越高、允许改变的架构范围越大、实现难度也越高。交互动态性是最基础的层级,要求数据在固定的结构下动态交互——即架构本身(组件、连接件的种类和拓扑)保持不动,只是运行时数据在这个固定骨架里流动变化,这是软件最常见的功能形态。结构动态性允许对结构本身进行修改,通常表现为组件和连接件实例的添加和删除(例如服务器根据负载动态创建或销毁工作进程)——这是当前动态架构研究和应用的主流。架构动态性是最高层级,允许软件架构的基本构造发生变动,即结构本身可以被重新定义,例如动态定义出全新的组件类型——目前的动态演化研究大多只支持交互动态性和结构动态性这两个层级,对架构动态性的支持很少,但Cuesta坚持认为只有达到架构动态性这一级,才算得上真正意义上的”动态架构”。这个三级划分揭示了一个常被混淆的问题:很多系统号称自己”支持动态架构”,实际上做到的往往只是结构动态性(增删组件连接件实例),而不是真正能在运行时重新定义架构基本构造类型的架构动态性——理解这个区别,能帮助人们在评估一个系统的”动态能力”时不被表面的宣传误导,准确判断它究竟站在这三个层级中的哪一级。

结构图

flowchart TD
    A["级别1 交互动态性<br/>结构固定,数据动态交互<br/>软件最常见的功能"] --> B["级别2 结构动态性<br/>组件/连接件实例的增删<br/>当前研究应用主流"]
    B --> C["级别3 架构动态性<br/>架构基本构造可被重新定义<br/>如新组件类型的动态定义,支持甚少"]

参考来源

- 位置:《软件架构理论与实践》第9章《软件架构的演化和维护》"9.2.2 软件架构动态演化"节之"(1)软件动态性的类型"(源文件:_epub-src/OEBPS/text00073.html) - 结论依据:原文说明"Carlos E.Cuesta等人将软件的动态性分为三个级别:①交互动态性(interactive dynamism)……②结构动态性(structural dynamism)……③架构动态性(architectural dynamism)……但是Cuesta坚持认为只有级别3的架构才是真正的动态架构",直接支撑本卡片的结构图与内容解释。 - 原始内容:①交互动态性(interactive dynamism),要求数据在固定的结构下动态交互;②结构动态性(structural dynamism),允许对结构进行修改,通常的形式是组件和连接件实例的添加和删除,这种动态性是研究和应用的主流;③架构动态性(architectural dynamism),允许软件架构的基本构造的变动。