逻辑架构中关于职责划分的决策,体现为层、子系统、模块等的划分决定,从静态视角为详细设计和编程实现提供切实的指导;有了分解就必然产生协作,逻辑架构还规定了不同逻辑单元之间的交互接口和交互机制,而编程工作必须实现这些接口和机制。 所谓交互机制,是指不同软件单元之间交互的手段。交互机制的例子有:方法调用、基于RMI的远程方法调用、发送消息等。 至于物理架构,它关注的是软件系统在计算机中运行期间的情况。物理架构设计方案中规定了软件系统如何使用进程和线程完成期望的并发处理、进程线程这些主动对象(Active Object)会调用哪些被动对象(Passive Object)参与处理、交互机制(如消息)为何等等问题,从而为详细设计和编程实现提供了工作目标的动态视图。 设备调试系统案例简介 下面通过一个实际案例的分析,来帮助领会逻辑架构和物理架构这两种架构视图对架构设计的指导作用。 该案例是某型号设备调试系统。设备调试员通过使用该系统,可以察看设备状态(设备的状态信息由专用的数据采集器实时采集)、发送调试命令。该系统的用例图如图5所示。
图5 设备调试系统的用例图
逻辑架构设计
首先根据功能需求进行初步设计,进行大粒度的职责划分。如图6所示。
图6 设备调试系统的逻辑架构
之后,还有很多与逻辑架构设计相关的工作要做。例如,图7所示的CRC卡描述了上面的三层架构每一层的职责与协作者:
应用层负责设备状态的显示,并提供模拟控制台供用户发送调试命令。 应用层使用通讯层和设备控制层进行交互,但应用层不知道通讯的细节。 通讯层负责在RS232协议之上实现一套专用的“应用协议”。
当应用层发送来包含调试指令的协议包,由通讯层负责按RS232协议将之传递给设备控制层。 当设备控制层发送来原始数据,由通讯层将之解释成应用协议包发送给应用层。 设备控制层负责对调试设备的具体控制,以及高频度地从数据采集器读取设备状态数据。
设备控制指令的物理规格被封装在设备控制层内部,读取数采器的具体细节也被封装在设备控制层内部。
图7 用CRC卡描述每层的职责和协作者
物理架构设计
软件最终要驻留、安装或部署到硬件才能运行。软件的物理架构关注“目标程序及其依赖的运行库和系统软件”最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩
性等要求。
多个逻辑层(Layer)可以映射到一个物理层(Tier),这是很多从事分布式开发的读者都了解的。在进行设备调试系统的物理架构设计之时,也体现了这一点。如图8所示,设备调试系统共包含2个物理层:桌面部分和嵌入部分。作为逻辑层的应用层和通讯层最终将成为桌面部分,而设备控制层最终成为嵌入部
分。

