知识卡片
逻辑架构与物理架构的定义与设计任务
内容
在所有架构视图中,逻辑架构和物理架构是最常用的一对,两者的区分可以用一个直观类比理解:办公室局域网从物理角度看,所有计算机”毫无区别”地连接到路由器上;从逻辑角度看,一台计算机充当文件服务器、其他计算机是访问服务器的客户机——同一套硬件连接,物理视角看到的是连接拓扑,逻辑视角看到的是角色分工。逻辑架构规定了软件系统由哪些逻辑元素组成、以及这些逻辑元素之间的关系,逻辑元素可以是逻辑层(Layer)、功能子系统、模块;设计逻辑架构的核心任务是”模块+接口”——比较全面地识别模块、规划模块接口、明确模块之间的使用关系和使用机制。物理架构规定了组成软件系统的物理元素、这些元素之间的关系,以及它们部署到硬件上的策略;物理架构反映软件系统动态运行时的组织情况,其”物理元素”指进程、线程、作为类运行时实例的对象,进程调度、线程同步、进程间通信则进一步刻画物理架构的动态行为——随着分布式系统流行,”物理层(Tier)”这个概念让人能把整体系统划分到不同物理层、部署在不同位置的多台计算机上,为远程访问和负载均衡提供手段;物理架构还常用于说明数据如何产生、存储、共享、复制,覆盖内容比逻辑架构涉及的范围更宽泛(这也是为什么设计大型系统时会引入超过两个视图,比如包含逻辑、开发、运行、数据、物理五个视图的”5视图法”)。两者对详细设计和编程实现的指导也不同:逻辑架构中的职责划分决策,体现为层/子系统/模块的划分决定,为静态结构提供指导,同时规定了不同逻辑单元间的交互接口和交互机制(如方法调用、RMI远程调用、消息发送),编程工作必须实现这些接口和机制;物理架构规定软件系统运行期如何使用进程和线程完成并发处理,进程线程等主动单元会调用哪些被动单元、用什么交互机制,为并发实现提供指导。
参考来源
- 位置:《软件架构设计:程序员向架构师转型必备》第3章《理解架构设计视图》"3.3.1 逻辑架构"及"3.3.2 物理架构"节(源文件:_epub-src/OEBPS/text00006.html)
- 结论依据:原文说明"设计逻辑架构的核心任务,是比较全面地识别模块、规划接口,并基于此进一步明确模块之间的使用关系和使用机制",以及"软件的物理架构规定了组成软件系统的物理元素,这些物理元素之间的关系,以及它们部署到硬件上的策略",并用办公室局域网例子区分物理视角与逻辑视角,直接支撑本卡片结论。
- 原始内容:从物理角度看,所有计算机"毫无区别"地连接到路由器上;而从逻辑角度看呢,一台计算机充当文件服务器,而其他计算机是可以访问服务器的客户机。