基于构件的动态体系结构模型(CBDA)1、CBDA模型介绍:基于构件的动态体系结构模型CBDA(ComponentBasedDynamicsystemArchitecturemodel)支持运行系统的动态更新,它分为三层:应用层、中间层和体系结构层。应用层处于最底层,包括构件连接、构件接口和执行。构件连接定义了连接件如何与构件相连接;构件接口说明了构件提供的服务,例如消息、操作和变量等等。在这一层,可以添加新的构件、删除或更新己存在的构件。中间层包括连接件配置、构件配置、构件描述及执行。连接件配置主要是连接件及接口的通信配置;构件配置管理构件的所有行为;构件描述对构件的内部结构、行为、功能和版本等信息加以描述。在这一层,可以添加版本控制机制和不同的构件装载方法。体系结构层位于最上层,控制和管理整个体系结构,包括体系结构配置器、体系结构描述和执行。其中,体系结构描述主要是描述构件以及它们相联系的连接件的数据;体系结构配置控制整个分布式系统的执行,并且管理配置层;体系结构描述主要是对体系结构层的行为进行描述。在这一层,可以更改和扩展更新限制,更改系统的拓扑结构,更改构件到处理元素之间的映射。在每一层都有一个执行部分,主要是对相应层的操作进行执行。在更新时,必要情况下将会临时孤立所涉及的构件。在更新执行之前,要确保:(1)所涉及的构件停止发送新的请求;(2)在更新开始之前,连接件的请求队列中的请求全部己被执行。而且,模型封装了连接件的所有通信,这样可以很好的解决动态更新时产生的不一致性问题。2、更新请求描述:更新可以由用户提出,也可以由系统自身发出请求。一般来说,一个更新描述包括以下几个部分:(l)更新类型(updatetype):更新类型包括添加、删除和更新一个新的构件;(2)更新对象列表(listofupdatedobjects):需要更新的对象类的ID号;(3)对象的新版本说明(newversionsoftheobjects):对象的新版本执行情况;(4)对象更新方法(updatemethod):更替、动态及静态;(5)更新函数(updatefunction):用来更新一个执行对象进程的状态转换函数;(6)更新限制(updateconstraints):描述更新(包括子更新)和它们之间的关系的序列,例如只有对象A的版本〉=2.0时,对象A才能被更新。update_deseriptoradd_objto=“server01//compl”objectname=“C”implementation…//object/addremove_objfrom=“server01//compl”objectname=“D”/object/removeupdate_objin=“server01//compl”objectname=“A”method=“replaee”old_version1.0/new_version1.1/implementation…//objeet/updateupdate_objin=“server01//eompl“objectname=“B”method=“dynamie”old_version1.1/new_version1.2/update_function.../implementation…//object/update/update_descriptor3、更新执行步骤:3.1、按照CBDA模型的结构,对系统进行更新,一般来说,有以下几个步骤:(l)检测更新的范围。在更新执行之前,首先要判断是局部更新还是全局更新,局部更新作用于需更新构件的内部而不影响系统的其他部分,全局更新影响系统的其他部分,全局更新需要发送请求到更高的抽象层。(2)更新准备工作。如果更新发生在应用层,构件配置器等待参与的进程(或线程)发出信号,以表明它们己处于可安全执行更新的状态;如果更新发生在配置层,就需要等待连接件中断通信和其他构件配置器已完成它们的更新;如果更新发生在体系结构层,就直接执行。(3)执行更新。执行更新,并告知更新发起者更新的结果。(4)存储更新。将构件或体系结构所作的更新存储到构件或体系结构描述中。3.2、局部更新和全局更新:(l)局部更新:局部更新由于只作用于需要更新的构件内部,不影响系统的其他部分,因此比全局更新要简单。(2)全局更新:以一个Cliect/Server系统动态更新实例来说明CBDA模型在全局更新中的应用,在本例中,要求更新某一Server构件。按照CBDA模型,用UML的时序图来描述动态更新过程,如图所示:步骤如下:1)Server构件配置器接收到更新发起者提出的更新请求后,向体系结构配置器提交更新请求;2)体系结构配置器对更新请求的类型进行分析,判断是否在更新限制(属于全局更新还是局部更新)范围内,不在更新限制范围内的更新不予执行;如果更新在限制范围内,体系结构配置器对更新所涉及的连接件和构件(本例中为Client构件和连接件)发出消息,要求它们做好更新准备工作;3)准备工作完成后,Client构件配置器和连接件向体系结构配置器返回就绪信息;4)一切准备就绪后,体系结构配置器通知Server构件执行更新;5)更新执行完毕后,向Server构件配置器、体系结构配置器和更新发起者通知更新执行完毕并返回更新结果;同时,体系结构配置器通知Client构件和连接件更新结束,可继续正常的运行。这样,在没有影响系统的运行情况下,按照更新发起者的要求对系统进行了更新,并且维护了系统的一致性。