首页 理论教育 零编程开发系统的动态模拟与演化

零编程开发系统的动态模拟与演化

时间:2023-06-28 理论教育 版权反馈
【摘要】:基于层次消息总线的智能控件化虚拟仪器零编程开发系统支持用户和系统的动态交互,完成系统的动态模拟运行和动态演化。图10-13给出了零编程开发系统的动态模拟运行和演化的结构图,仪器拼搭场负责接收用户的命令,并显示执行结果。通过以上四种处理流程的组合应用,可以实现系统对增加删除控件和改变消息响应登记的动态演化。

零编程开发系统的动态模拟与演化

基于层次消息总线的智能控件化虚拟仪器零编程开发系统支持用户和系统的动态交互,完成系统的动态模拟运行和动态演化。图10-13给出了零编程开发系统的动态模拟运行和演化的结构图,仪器拼搭场负责接收用户的命令,并显示执行结果。系统接收到“Run”运行命令后,执行系统初始化。然后,根据接收到的命令类型,分别由动态模拟运行和动态演化模块处理,再依次交由相应的下层模块处理。

978-7-111-33186-5-Part01-407.jpg

图10-13 零编程开发系统动态模拟运行与演化的结构图

1.系统动态模拟运行

基于层次消息总线的零编程开发系统可以动态模拟运行,通过记录系统对环境消息的响应情况,特别是控件的交互序列,即控件的顺序图,可以验证设计是否满足用户需求,也可通过动态运行供用户评价和反馈。系统的动态模拟运行流程如图10-14所示。

对上述流程图中的初始化系统、分派消息、响应消息和执行方法作进一步说明如下。

1)初始化系统:把系统中的所包含的各个控件的状态置为初始状态,并完成控件的登记工作,把相关信息填入控件—消息响应登记表和消息过滤表中。

2)分派消息:消息总线根据控件—消息响应登记表把该消息分派到系统中对该消息感兴趣的控件,消息分派流程如图10-15所示。

978-7-111-33186-5-Part01-408.jpg

图10-14 动态模拟运行流程

3)响应消息和执行方法:控件在接收到消息后,根据当前所处的状态,对消息进行响应,激活相应的方法。随消息发送的参数被传给方法的实参,把该方法压入运行栈,方法的运行环境包括控件局部变量和方法实参。逐条执行方法中的语句,在方法的执行过程中,可能需要系统中其他控件的协作,因此发出相应的消息,该消息首先在控件直接挂接的消息总线中进行广播,如果有同层控件进行响应,则执行相应的方法;否则,该消息则向上传递,在上一层的总线中进行广播,直到某一层控件对其进行响应,或者直到最上一层,于是该消息被发送到系统的外部,外部对该消息进行响应。处理结果沿着相反的路径传递给发出请求的控件。方法执行结束后,相应的控件状态发生变迁,并把结果数据返回消息发出者。因此在消息的传递过程中,消息发出者的标识是作为消息的隐式参数进行传递的,用于确定结果返回的目标。消息发出者的方法从调用断点处继续执行。

978-7-111-33186-5-Part01-409.jpg

图10-15 消息分派流程(www.xing528.com)

2.系统的动态演化

零编程开发系统的演化分为静态演化(即编译时刻的演化)和动态演化(即运行时刻的演化)两种,静态演化意味着对现有系统进行修改,重新编译和配置,然后继续投入运行;动态演化要求在系统运行的过程中,对系统的功能进行扩展和裁剪。动态演化的困难在于系统如何适应修改所带来的变化,其中涉及了如何维护控件之间的关系、功能的分派,以及这一修改对系统产生的其他影响等。支持演化的构架模式、定义良好的构架描述语言,以及有效的支持工具是解决系统动态演化的途径。系统的动态演化体现为改变控件的实现、增加删除控件、增加删除消息响应登记、改变消息过滤规则和改变控件的实现。

(1)关于改变控件实现的处理 如果不改变控件的接口,只改变控件的实现,在这种情况下,由于系统中与该控件相关的其他控件只关心控件的接口,并不关心控件是如何实现的,因此可以通过直接替换该控件的实现,就可以完成系统的动态演化。

(2)关于改变消息过滤的处理 由于消息过滤的改变,并不影响系统中的控件及其连接,因此可通过在相应的消息总线上改变消息过滤规则,实现系统动态演化。

(3)关于增加删除控件和改变消息响应登记的处理 增加删除控件和改变消息响应登记涉及控件接口的改变,甚至有可能影响到该控件的所有A3控件的接口。例如,假设复合控件C接收和发送的消息集合分别是{R1、R2}和{S1、S2},它被两个子控件C1和C2所细化,C1接收和发送的消息集合分别是{R1,M}和{S1},C2接收和发送的消息集合分别是{R2}和{S2,M}。现在需要在控件C的局部总线上增加一个控件C3,它接收和发送的消息集合分别是{R3}和{S3},但控件C1和C2都不会对S3消息响应,因此必须在控件C的发送消息集合中增加S3。

因为增加删除控件就是增加和删除相应控件发送和接收的消息集合,因此可以规约为四种不同的组合方式:增加发送消息类型、删除发送消息类型、增加接收消息类型和删除接收消息类型。相应的处理流程如下:

1)增加发送消息类型。如果有同层的其他控件对此消息响应,处理流程结束;否则向上传递,在父辈控件的接口增加相应的发送消息类型,并考察父辈控件的同层控件能否对此消息响应。逐层向上传递,直到某一层的控件对此消息响应,或到了系统的最高层,这时系统应增加对外发送的消息类型。

2)删除发送消息类型。如果有同层的其他控件发送同样的消息,处理流程结束;否则向上传递,在父辈控件的接口删除相应的发送消息类型,并考察父辈控件的同层控件是否发送同样的消息。逐层向上传递,直到某一层的控件发送相应的消息,或到了系统的最高层,这时系统应减少对外发送的消息类型。

3)增加接收消息类型。如果有同层的其他控件也接收同样的消息,处理流程结束;否则向上传递,在父辈控件的接口增加相应的接收消息类型,并考察父辈控件的同层控件是否也接收同样的消息。逐层向上传递,直到某一层的控件也接收同样的消息,或到了系统的最高层,这时系统应增加相应的接收消息类型。

4)删除接收消息类型。如果有同层的其他控件也接收同样的消息,处理流程结束;否则向上传递,在父辈控件的接口删除相应的接收消息类型,并考察父辈控件的同层控件是否也接收同样的消息。逐层向上传递,直到某一层的控件也接收同样的消息,或到了系统的最高层,这时系统应删除相应的接收消息类型。

通过以上四种处理流程的组合应用,可以实现系统对增加删除控件和改变消息响应登记的动态演化。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈