逻辑架构和物理架构在架构设计中的应用
当观察和描述事物大局的时候,逻辑架构和物理架构是最常用的角度。比如,以我们办公室里的局域网为例:从物理角度看,所有计算机“毫无区别”地连接到路由器上;而从逻辑角度看呢,就发现这些计算机是有区别的――一台计算机充当文件服务器,而其它计算机是可以访问服务器的客户机。如图1所示。 字串1
字串9
图1 区分
字串9
同样,在软件架构设计过程中,也可以通过区分软件的逻辑架构和物理架构,分别从不同的角度设计和描述软件架构。
字串3
所谓软件架构视图,是指设计和看待整个软件系统的特定视角。每个软件架构视图关注系统架构的不同方面,针对不同的
逻辑架构
字串6
软件的逻辑
软件的逻辑元素一般指某种级别的功能模块,大到我们熟悉的逻辑层(Layer),以及子系统、模块,小到一个个的类。至于具体要分解到何种大小的功能模块才可结束软件架构
值得说明的是,功能模块有时容易识别,有时却比较隐含。而比较全面地识别功能块、
字串3
图2展示了一个网络
识别功能块
规划功能块的接口
明确功能块之间的使用关系和使用机制
字串6
图2 软件逻辑架构设计的核心任务 字串9
软件的逻辑架构是架构
物理架构 字串1
软件的物理架构规定了组成软件系统的物理元素、这些物理元素之间的关系、以及它们部署到硬件上的策略。
物理架构可以反映出软件系统动态运行时的组织情况。此时,上述物理架构定义中所提及的“物理元素”就是进程、线程、以及作为类的运行时实例的对象等,而进程调度、线程同步、进程或线程通信等则进一步反映物理架构的动态行为。 字串6
随着分布式系统的
物理架构的应用很广泛。例如,架构设计中可能需要专门说明数据是如何产生、存储、共享和复制的,这时可以利于物理架构,展示软件系统在运行期间数据是由哪些运行时单元如何产生的,数据又如何被使用、如何被存储,哪些数据需要跨网络复制和共享等方面的设计决策。 字串1
由于人们对组成软件系统的“物理元素”存在不同看法(如图3所示),所以在
字串3

字串2
图3 对“物理元素”的不同看法
字串3
从逻辑架构和物理架构到设计实现 字串7
逻辑架构和物理架构是软件架构设计的重要方面。逻辑架构致力于将软件系统分解成不同的逻辑单元,并规定这些逻辑单元之间的交互接口和交互机制。物理
在后续的详细设计和编程实现中,将贯彻和利用逻辑架构和物理架构设计中制定的架构决策,如图4所示。 字串4
图4 逻辑架构和物理架构对后续

逻辑架构中关于职责划分的决策,体现为层、子系统、模块等的划分决定,从静态视角为详细设计和编程实现提供切实的指导;有了分解就必然产生协作,逻辑架构还规定了不同逻辑单元之间的交互接口和交互机制,而编程工作必须实现这些接口和机制。 字串1
所谓交互机制,是指不同软件单元之间交互的手段。交互机制的例子有:方法调用、基于RMI的远程方法调用、发送消息等。
至于物理架构,它关注的是软件系统在计算机中运行期间的情况。物理架构
字串8
设备调试系统案例简介
下面通过一个实际案例的分析,来帮助领会逻辑架构和物理架构这两种架构视图对架构设计的指导作用。
该案例是某型号设备调试系统。设备调试员通过使用该系统,可以察看设备状态(设备的状态信息由专用的数据采集器实时采集)、发送调试命令。该系统的用例图如图5所示。
字串5

图5 设备调试系统的用例图 字串6
逻辑架构设计 字串8
首先根据功能需求进行初步设计,进行大粒度的
字串2
字串1
图6 设备调试系统的逻辑架构 字串9
之后,还有很多与逻辑架构设计相关的工作要做。例如,图7所示的CRC卡描述了上面的三层架构每一层的职责与协作者:
应用层负责设备状态的显示,并提供
应用层使用通讯层和设备控制层进行交互,但应用层不知道通讯的细节。
通讯层负责在RS232协议之上实现一套专用的“应用协议”。
当应用层发送来包含调试指令的协议包,由通讯层负责按RS232协议将之传递给设备控制层。
当设备控制层发送来原始数据,由通讯层将之解释成应用协议包发送给应用层。
设备控制层负责对调试设备的具体控制,以及高频度地从数据采集器读取设备状态数据。
设备控制指令的
字串5
图7 用CRC卡描述每层的
物理架构设计
软件最终要驻留、安装或部署到硬件才能运行。软件的物理架构关注“目标程序及其依赖的运行库和系统软件”最终如何安装或部署到物理
多个逻辑层(Layer)可以映射到一个物理层(Tier),这是很多从事分布式
字串2
图8 逻辑层(Layer)到物理层(Tier)的映射
物理层作为组成软件系统的物理单元,最终又要映射到具体的硬件,这也是物理架构

图9 设备调试系统架构的物理架构 字串1
我们还可能根据具体情况的需要,通过物理架构视图更明确地表达具体

图10 设备调试系统的物理架构
字串2
总结
字串6
从简单系统到复杂系统的变化,对架构
软件架构视图的概念和软件架构基本概念是完全相容的,后者针对软件系统的整体目标,而前者针对特定目标子集,这样一来,重点突出了,问题明确了,软件架构师的经验也就
逻辑架构和物理架构相分离的设计方法在软件实践中比较常用。逻辑架构和物理架构是软件架构设计的重要方面。逻辑架构致力于将软件系统分解成不同的逻辑单元,并规定这些逻辑单元之间的交互接口和交互机制。物理架构则更重视软件系统运行时的动态结构,以及组成软件系统的
关于作者
字串1
温昱。资深咨询师,CSAI特聘高级顾问,《软件架构设计》作者,松耦合空间(www.ou-he.com)网站创办人。十年系统规划、架构设计和研发管理经验,软件架构思想的传播者和积极推动者。
Tags:
责任编辑:您的评论
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
精彩推荐
最新资讯


您的位置: