根据前面的分析,对图8-13进行改造后得到图8-14所示的DR-HMB模式的图形描述,其中包含原子构件、复合构件,并且整个系统还可作为一个更高层次的复合构件。
DR-HMB模式与HMB模式一样,支持智能控件化虚拟仪器系统自顶向下的层次化分解,复合智能虚拟控件是由比较简单的子智能虚拟控件组装而成的,子智能虚拟控件通过复合智能虚拟控件内部的消息总线连接,各个层次的消息总线在逻辑功能上是一致的,负责相应控件或系统范围内消息的登记、分派、传递和过滤。如果子智能虚拟控件仍然比较复杂,可以进一步分解,不同的消息总线分别属于智能控件化虚拟仪器系统和各层次的复合智能虚拟控件,消息总线之间没有直接的连接,如图8-14所示。DR-HMB模式中的这种总线称为层次消息总线。另外,整个智能控件化虚拟仪器也可以作为一个智能虚拟控件,集成到智能控件化虚拟仪器系统中。因为各个层次的智能虚拟控件以及整个智能控件化虚拟仪器系统采取了统一的定义,所以定义一个智能控件化虚拟仪器的同时,也就定义了一组“智能控件化虚拟仪器”,每个智能虚拟控件都可看做一个独立的子虚拟仪器。
图8-14 DR-HMB模式的图形描述
在整个智能控件化虚拟仪器系统范围内,每个智能虚拟控件都有唯一的标识,这种标识同智能虚拟控件当前所处的具体物理位置无关。采用类似UNIX文件系统标识特定文件的方法,按照智能控件化虚拟仪器系统的层次结构对每个智能虚拟控件进行命名。一个智能虚拟控件的标识就是从系统分解的树状结构的根部出发,到该智能虚拟控件为止的路径上的所有结点的名字,中间用冒号“:”分隔,即是该智能虚拟控件的标识。系统最高层命名为sys-tem,最高层的系统名称在智能虚拟控件标识中可以被省略,组成系统和复合智能虚拟控件的各个子智能虚拟控件都必须命名,但在同一复合智能虚拟控件内部的子智能虚拟控件不能重名。
复合智能虚拟控件的引入,使得DR-HMB模式的智能控件化虚拟仪器系统和智能虚拟控件在概念上保持一致,并支持系统开发时自顶向下的层次化分解。在进行分解时,分解后的下层控件组成的子系统应保持其输入和输出消息同上层控件的一致性,否则这种分解就是不平衡的。
同时,从图8-14可以看出,系统中不存在重复智能虚拟控件,当不同的复合智能虚拟控件需要调用同一个原子智能虚拟控件时,则将该原子智能虚拟控件登记到相应的消息总线上,如原子智能虚拟控件C3同时被复合智能虚拟控件CC1,CC2以及它们的上一层复合控件调用,于是C3与相应的三条消息总线建立连接;原子智能虚拟控件C4同时被CC1和CC2调用,于是C4与CC1和CC2中的局部消息总线建立连接。在这些连接中,其中实线表示原子智能虚拟控件被实际创建,即该原子智能虚拟控件的实体实际被创建在所在的复合控件内,而虚线则表示原子控件只与该复合控件上的局部消息总线有连接。“实线连接”与“虚线连接”的采用原则为“先来后到”,最早申请调用的复合控件与原子控件的连接为“实线连接”,即原子控件被创建在最早申请调用的复合控件内;而其后申请调用的复合控件与原子控件的连接则均为“虚线连接”,即原子控件只被登记到该复合控件的消息总线上。当一个原子控件不存在任何“连线”时,则从系统中删除。
这样一来,DR-HMB呈现出一种网状结构,于是,消息的传递、响应采用一种类似于网络路由的结构实现,而控件与消息总线的连接实际上就是“路由表”上表项,所谓原子控件不存在“连线”,即在所有的“路由表”中没有与它对应的表项,从而从系统中删除。从上面的分析描述看出,DR-HMB模式解决了HMB中所存在的问题。下面对DR-HMB进行形式化描述。
一种模式定义了可以共享的属性集合。这些属性可以包含一个公用的词汇和约束集。在Wright中,通过声明一系列构件和连接件的类型,引入公共的词汇集,并且使用声明的类型进行实例化说明。表8-2是对DR-HMB接口类型的声明。
表8-2 接口类型的声明
(www.xing528.com)
SendMessage接口发送消息,或者清除控件与消息总线的连接;ReceiveMessage接口接收消息,或者清除控件与消息总线的连接。
接口类型形式化描述如表8-3所示。
表8-3 接口类型形式化描述
SendMessage接口与两个事件send和clear通信,这两个事件都由智能虚拟控件激发,如果控件选择send,它将提供一个消息(用!x表示),然后再进行决策(再次执行SendMes-sage);如果控件选择clear事件,它将终止与相应消息总线的连接,而不再选择send事件。
ReceiveMessage接口与两个事件和通信,在这两者之间进行内部选择。如果激发事件,它将接收一个消息(用?x表示),然后再执行决策(再次执行Re-ceiveMessage)。当控件在观测到clear事件之后,激发事件,从而终止与该消息总线的连接。如果控件选择事件,它也将终止与相应消息总线的连接,而不再激发事件。
上面仅描述接口,控件部分将进行更深入的描述。
同时,应保证控件至少连接到一条消息总线上,否则将被清除;任意一条消息总线上至少要有一个控件,否则被清除。于是得到如表8-4所示的DR-HMB模式形式化描述,其中连接件MessageBus的形式化表述将在后续部分给出。
表8-4 DR-HMB模式形式化描述
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。