知识卡片
静态、动态、运行态三种架构验证的区分
内容
软件架构包含静态软件架构(SSA)、动态软件架构(DSA)和运行态软件架构(RSA)三种情况——书中特别强调这是一个存在分歧的问题:部分学者和业界人士认为DSA就是RSA,但作者明确表示两者并不相同。静态软件架构从全局视角描述系统的组件组成、组件间相互关系和连接方式形成的拓扑结构,以及遵循的模式和受到的约束——这是一张”蓝图”式的描述。动态软件架构是指在生命周期中不时发生变化(或演化)的软件架构——强调的是”架构本身会改变”这个跨越较长时间尺度的属性。运行态软件架构则是指系统在每个运行时刻(runtime)所展现的软件架构——强调的是”某一个瞬间正在跑的架构实例”这个短时间尺度的状态。这三者的区别可以用一个类比理解:静态架构是设计图纸本身,动态架构是”图纸会随时间被修改”这件事,运行态架构是”某一时刻工地上实际立起来的建筑”——DSA关心的是架构定义随时间演变的轨迹,RSA关心的是某个具体运行瞬间架构呈现出的具体样貌,两者时间尺度和关注对象都不一样,混为一谈会导致验证目标错位。相应地,架构验证需要考虑三种情形:静态软件架构验证关注用户期望的质量属性和行为属性是否得到满足(针对设计阶段的一次性检查);动态软件架构验证关注架构演化如何影响某些质量属性和行为属性——因为演化会导致很多属性变得”有时满足、有时不满足”,这正是DSA验证独有的挑战(静态验证只需回答”是否满足”,动态验证还要回答”从哪个版本开始不再满足、为什么”);运行态软件架构验证关注系统运行过程中架构的某些质量属性和行为属性是如何随运行状态发生变化的。
参考来源
- 位置:《软件架构理论与实践》第14章《软件架构形式化验证》"14.3 软件架构验证"节(源文件:_epub-src/OEBPS/text00114.html)
- 结论依据:原文说明"部分学者和工业界朋友认为DSA就是RSA……笔者认为DSA和RSA是不同的。静态软件架构从全局的视角描述了系统的组件组成……动态软件架构是指在其生命周期中不时地发生变化(或演化)的软件架构。运行态软件架构是指那些在每个运行时刻(runtime)所展现的软件架构",直接支撑本卡片结论。
- 原始内容:软件架构演化会导致软件架构的很多属性是动态变化的,存在着某个属性有时满足有时不满足的情况,所以动态软件架构验证关注的是软件架构演化是如何影响某些质量属性和行为属性的……运行态软件架构验证关注的是在系统运行过程中,软件架构的某些质量属性和行为属性是如何发生变化的。