知识卡片

软件架构五大风格分类

普通读书笔记卡

内容

架构风格(也称架构模式)是针对某类经常出现的问题给出的一般性可重用方案,反映了同领域众多系统所共有的结构和语义特性,指导如何把模块和子系统有效组织成完整系统——它的价值在于把”经过实践证实的解决方案”沉淀下来供后来者复用,而不是每次都从零设计。Garlan和Shaw把广泛接受的架构风格归纳为五大类:数据流风格(批处理序列、管道-过滤器,强调数据依次流经一系列处理阶段);调用/返回风格(主程序/子程序、面向对象、层次化结构,强调通过显式调用与返回控制流程);独立组件风格(进程通信、事件系统,强调组件间没有直接调用关系、靠消息或事件解耦);虚拟机风格(解释器、基于规则的系统,强调用一层可编程的中间层来解释执行);仓库风格(数据库系统、超文本系统、黑板系统,强调多个组件围绕一个中心化的共享数据存储进行交互)。后续又出现了C2风格、GenVoca风格、REST风格等扩充,以及针对分布式系统、交互式系统、适应性系统等特定系统类型的专属风格。理解这个分类体系的关键不是记住五个类名,而是抓住每一类风格背后回答的核心问题不同:数据流风格回答”数据怎么依次被加工”,调用/返回风格回答”控制权怎么在模块间转移”,独立组件风格回答”模块间怎么在互不感知的情况下协作”,虚拟机风格回答”怎么用一层间接性换取灵活性”,仓库风格回答”多个组件怎么共享同一份状态”——现代大型软件很少采用单一架构风格,往往是混合多种风格,理解”纯”风格的边界正是为了在混合设计时能做出清醒的取舍。

参考来源

- 位置:《软件架构理论与实践》第1章《软件架构概述》"1.4.1 软件架构理论和方法研究"节之"(5)软件架构风格与模式"(源文件:_epub-src/OEBPS/text00009.html) - 结论依据:原文明确列出Garlan和Shaw总结的五种主要架构风格类型及各自包含的具体风格,并说明"之后仍有扩充,如出现了C2风格、GenVoca风格、REST风格等",直接支撑本卡片对分类体系的描述。 - 原始内容:David Garlan和Mary Shaw等人总结出若干被广泛接受的架构风格,并将其分成五种主要的类型:1)数据流风格:批处理序列;管道-过滤器。2)调用/返回风格:主程序/子程序;面向对象;层次化结构。3)独立组件风格:进程通信;事件系统。4)虚拟机风格:解释器;基于规则的系统。5)仓库风格:数据库系统;超文本系统;黑板系统。