00 ■_ j一? l l”鼍 毒- 。 “。 一l l’ _ - 00 0 ? 尊 _>> 藏错釜汹j 逻辑与物理架构 在架构设计中的应用 ◎文/温昱 在 不件同架构的架视构图设种计类方很法多中,本出现文的介软绍 最常用的两种架构视图——逻辑架构视 逻辑元素之间的关系。 值得说明的是,功能模块有时容易 识别,有时却比较隐含。而比较全面地 识别功能块、规划功能块的接口、明确 软件的逻辑元素一般指某种级别的 功能模块,大到我们熟悉的逻辑层 图和物理架构视图,并通过具体案例的 分析说明如何运用它们进行架构设计。 当观察和描述事物大局的时候,逻 (Layer),以及子系统、模块,小到一个 个的类。至于具体要分解到何种大小的 功能模块才可结束软件架构设计,并不 功能块之间的使用关系和使用机制,正 是软件逻辑架构设计的核心任务所在。 对此,Ivar Jaeobson曾有过极为形象的 说法,“软件系统的架构涵盖了整个系 辑架构和物理架构是最常用的角度。比 如,以我们办公室里的局域网为例:从 物理角度看,所有计算机“毫无区别”地 存在一个“一刀切”的标准——只要足够 明确简单,能够分头开发就可以了。于 是,在实践中我们往往将关键机制相关 的架构设计部分明确到类,而一般功能 则到模块甚至子系统的接IZl定义即可。、 统,尽管架构的有些部分可能只有‘一 寸潦 。 连接到路由器上,而从逻辑角度看呢,就 发现这些计算机是有区别的一一台计 算机充当文件服务器,而其它计算 机是可以访问服务器的客户机。如 图1所示。 图2展示了一个网络设备管理系统 逻辑架构设计的一部分,我们借此来举 例说明软件逻辑架构设计的3大核 心任务: ●识别功能块 同样,在软件架构设计过程中, 也可以通过区分软件的逻辑架构和 ●规划功能块的接口 ●明确功能块之间的使用关系 和使用机制 计算机 针lt ̄1 .窖户机 眷户 物理架构,分别从不同的角度设计 和描述软件架构。 所谓软件架构视图,是指设计 圈1:区分物理视角与逻辑视角 软件的逻辑架构是架构设计 思维的重要方法。在用例技术已经 成为捕获功能需求的事实标准的今 天,逻辑架构的设计往往是从用例 和看待整个软件系统的特定视角。 每个软件架构视图关注系统架构的 不同方面,针对不同的目标和用途。 也就是说,架构要涵盖的内容和决 分析开始的。基于用例的分析方法 使逻辑架构的设计变得比较有序一 一策太多了,超过了人脑“一蹴而就” 的能力范围,因此采用“分而治之” 通过对每个关键用例的分析,从 逻辑上将用例实现为一组功能块的 特定组合,最后综合这些用例分析 成果,将一个个独立的协作归纳合 的办法从不同视角分别设计l同时, 也为软件架构的理解.交流和归档 提供了方便。 并成整个软件系统的逻辑架构。而 在用例分析方法产生之前,功能模 什么是软件的逻辑架构? 软件的逻辑架构规定了软件系 块的确定多多少少带有些“硬”想出 来的味道,特别是并不直接承载业 图2:软件逻辑架构设计的核心任务 统由哪些逻辑元素组成、以及这些 务功能的模块有时比较容易遗漏, 维普资讯 http://www.cqvip.com
直到大规模编程实现阶段才发现。 如何部署到硬件上 在后续的详细设计和编程实现中, 什么是软件的物理架构? , 将贯彻和利用逻辑架构和物理架构设计 中制定的架构决策,如图4所示。 逻辑架构中关于职责划分的决策, 软件的物理架构规定了组成软件系 统的物理元素、这些物理元素之间的关 系、以及它们部署到硬件上的策略。 体现为层、子系统、模块等的划分决定, 物理架构可以反映出软件系统动态 运行时的组织情况。此时,上述物理架 构定义中所提及的“物理元素”就是进 程、线程、以及作为类的运行时实例的 对象等,而进程调度、线程同步、进程 图3:对“物理元素”的不同看法 从静态视角为详细设计和编程实现提供 切实的指导,有了分解就必然产生协作, 逻辑架构还规定了不同逻辑单元之间的 交互接口和交互机制,而编程工作必须 实现这些接口和机制。 所谓交互机制,是指不同软件单元 之间交互的手段。交互机制的例子有:方 或线程通信等则进一步反映物理架构的 动态行为。 随着分布式系统的流行,“物理层 法调用、基于RMI的远程方法调用、发 围4:逻辑架构和物理架构对后续开发的作用 (Tier)”的概念大家早已耳熟能详。物理 层和分布有关,通过将一个整体的软件 系统划分为不同的物理层,可以把它部 送消息等。 至于物理架构,它关注的是软件系 统在计算机中运行期间的情况。物理架 构设计方案中规定了软件系统如何使用 进程和线程完成期望的并发处理、进程 署到分布在不同位置的多台计算机上, 从而为远程访问和负载均衡等问题提供 了手段。当然,物理层是大粒度的物理单 元,它最终是由粒度更小的组件、模块、 线程这些主动对象(Active Object)会调 用哪些被动对象(Passive Object)参与处 理、交互机制(如消息)为何等等问题, 从而为详细设计和编程实现提供了工作 目标的动态视图。 图5:设备调试系统的用例田 进程等单元组成的。 物理架构的应用很广泛 例如,架构 设计中可能需要专门说明数据是如何产 生、存储、共享和复制的,这时可以利用 物理架构,展示软件系统在运行期间数据 是在哪些运行时如何产生的,数据又如何 被使用、如何被存储,哪些数据需要踌网 设备调试系统案例简介 下面通过一个实际案例的分析,来 帮助领会逻辑架构和物理架构这两种架 构视图对架构设计的指导作用。 络复制和共享等方面的设计决策。 由于人们对组成软件系统的“物理元 素”存在不同看法(如图3所示),所以在 实践中物理架构的用法比较宽泛,不同的 人认为的物理架构也可能不尽相同。因 该案例是某型号设备调试系统。设 备调试员通过使用该系统,可以察看设 备状态(设备的状态信息由专用的数据 采集器实时采集)、发送调试命令。该系 统的用例图如图5所示。 此,我们在交流和实践的过程中,应注意 区分物理架构所指为何。(也正是因为这 个原因,实践中所采用的基于多视图的架 构设计方法往往包含更多的视图,从而使 每个架构视图的职责更加明确。) 逻辑架构设计 首先根据功能需求进行初步设计, 进行大粒度的职责划分。如图6所示。 之后,还有很多与逻辑架构设计相 关的工作要做。例如,图7所示的CRC卡 从逻辑与物理架构到设计实现 逻辑架构和物理架构是软件架构设 计的重要方面。逻辑架构致力于将软件 系统分解成不同的逻辑单元,并规定这 圈6:设备调试系统的逻辑架构 描述了上面的三层架构每一层的职责与 协作者: 物理架构则更重视软件系统运行时的动 ●应用层负责设备状态的显示,并 提供模拟控制台供用户发送调试命令。 些逻辑单元之间的交互接口和交互机制。 态结构,以及组成软件系统的目标程序 88-程序员- 维普资讯 http://www.cqvip.com
0 ●应用层使用通讯层和设备控制层 进行交互,但应用层不知道通讯的细节。 ●通讯层负责在RS232协议之上实 现一套专用的“应用协议”。 ●当应用层发送来包含调试指令的 总结 从简单系统到复杂系 0 _ 。拉用 - 穰壹 翻磕暑;8‰t ●协作者 讯■ 统的变化,对架构设计的 冲击决不仅仅是量变的问 题。通过引入了软件架构 ~ . ■t.. =;}措一伸" 协作者 ●■●■■■ 设鲁控制廛 协作者 ●畦●撞■■ 协议包。由通讯层负责按RS232协议将之 传递给设备控制层。 ●当设备控制层发送来原始数据, 由通讯层将之解释成应用协议包发送给 应用层。 视图的概念。有助于软件 黼瞄 架构师控制架构设计的复 杂性。 软件架构视图的概念 和软件架构基本概念是完 全相容的,后者针对软件 系统的整体目标,而前者 …. ●血-职责 哪巩鲢监●蚺^体垃■ ●■一寰●- ■■摹●—t取坶● 瞳—雕蕊瓣蕊蕊 驻 … 一 黝瞄幽鳓 嬲 嘲嘲r。 _一 ● ●埘■ 牲■垃■柑●的●¨ 柚 t- 图7:用CRC卡描述每层的职责和协作者 ●设备控制层负责对调试设备的具 体控制,以及高频度地从数据采集器读 取设备状态数据。 ●设备控制指令的物理规格被封装 在设备控制层内部,读取数采器的具体 细节也被封装在设备控制层内部。 针对特定目标子集。这样 一来。重点突出了,问题 明确了,软件架构师的经 验也就活跃了起来。 逻辑架构和物理架构 物理架构设计 软件最终要驻留、安装或部暑到硬 相分离的设计方法在软件 图8:逻辑层(Layer)到物理层(Tier)的映射 件才能运行。软件的物理架构关注“目标 程序及其依赖的运行库和系统软件”最 终如何安装或部署到物理机器,以及如 何部署机器和网络来配合软件系统的可 靠性、可伸缩性等要求。 多个逻辑层(Layer)可以映射到一 个物理层(Tier),这是很多从事分布式 开发的读者都了解的。在进行设备调试 系统的物理架构设计之时,也体现了这 一圈9:设备调试系统槊构的物理架构 点。如圈8所示,设备调试系统共包 含2个物理层:桌面部分和嵌入部分。作 为逻辑层的应用层和通讯层最终将成为 ◆l 串 l| C “…‘置捌 ————( 一…一 邕 一——] — 。1 0 l 桌面部分,而设备控制层最终成为嵌入 部分。 物理层作为组成软件系统的物理单 E]…一 锄 元,最终又要映射到具体的硬件,这也是 物理架构设计要考虑的。对于分布式软 件系统的设计而言尤其不可或缺。图9展 = / . _I 一 匕 …… \ 示了这一点。可以看出,设备控制部分驻 留在调试机中(调试机是专用单板机), 圈10:设备调试系统的物理槊构 而桌面部分以常见的“Windows可执行程 序”的形式运用于PC机之上。 实践中比较常用。逻辑架构和物理架构是 软件架构设计的重要方面。逻辑架构致力 机制。物理架构则更重视软件系统运行时 的动态结构,以及组成软件系统的目标程 我们还可能根据具体情况的需要, 通过物理架构视图更明确地表达具体目 标模块及其通讯结构,如图10所示。 于将软件系统分解成不同的逻辑单元,并 规定这 翌辑单元之间的交互接口和交互 序如何部署到硬件上。■ ■责任编辑;霍泰稳(htw@csdn net)
因篇幅问题不能全部显示,请点此查看更多更全内容