1 引言
随着计算机技术和现代测试技术的快速发展,利用传统的集成测试方法已经难以满足复杂测试任务的需求。虚拟仪器以开放性好、智能化程度高、界面友好等优势显示了其强大的生命力,研究内容已经涉及到工程的诸多领域[1]。
现有的虚拟仪器技术在研究和实现上已取得了一定成就,但随着测量内容的日益复杂、测量数据和指标的不断增加,对虚拟仪器的应用也提出了越来越高的要求,一些问题逐渐显现出来。比如现有仪器系统的开发依赖于经验的积累,一般由用户根据自身需求开发小功能集的虚拟仪器系统;仪器的平台独立性和扩展性差,仪器系统的设计和执行效率低下,适应性不够强[2]。因此,如何提高虚拟仪器系统的执行效率,降低设计难度,是虚拟仪器系统研究中一个需要解决的重要问题。
移动agent是一种独立的可确认的计算机程序,它可以自主地在异构网络上按照一定规程移动,寻找和利用适合的计算资源、信息资源和软件资源,代表用户完成特定任务[3]。它具有主机间动态迁移性、智能性、平台无关性、分布灵活性、多agent合作性等六方面的特点。
因此,在本文中考虑将移动agent技术运用到虚拟仪器系统体系结构的构建中,用以改善现有虚拟仪器系统中出现的一些问题。
2 基于移动agent的虚拟仪器体系结构设计
根据虚拟仪器系统的设计和移动agent系统的特点,在体系结构设计中选用了综合分层和网状体系结构最佳特征的混合模型,如图1所示。
图1 MAVIS的系统体系结构
图1中的双箭头——上层到下层表示控制流方向,下层到上层表示数据流方向。由于采用了网状体系结构,整体上又保留了分层结构的特点,因此组件间可以不按照严格的分层结构进行通信。这样在对虚拟仪器系统中的agent进行管理时,只需更改该agent的信息,不会影响其他agent的工作。例如当需要执行一个新的数据采集或处理分析任务时,只需派遣一个新的agent去执行任务即可,不需停止或重启已执行处理分析任务的agent。
在该体系结构中,最下层的数据采集叶节点负责测试数据的采集,包括采样位置、信号类型等信息,并在将其传递到上层处理分析节点前进行数据过滤,以减轻上层节点的工作压力,有利于处理分析节点专注于虚拟仪器系统的功能实现。
上层的处理分析节点主要负责处理数据,如对其进行时频域分析,统计分析等,提取影响测量结果的参数指标并最终在本地机上形成测试结论显示出来。处理分析agent的生成可以通过顶层的控制管理节点动态控制。为了保证处理分析agent能够高效地运行相关测试,在系统运行开始就根据所需测试的基本类型构造处理分析agent集合。在运行过程中,当添加的处理分析agent和其他agent互相协作成功完成一次任务时,系统就生成新的agent并添加到该虚拟仪器系统的处理分析agent集合中。一旦需要删除处理分析agent时,就必须从虚拟仪器系统的处理分析agent集合中删除与该处理分析agent相关的所有agent。顶层的控制管理节点主要负责节点的分派和召回。
该体系结构由分布在各受控主机上的移动agent组成,各相邻agent的关系平等,连结松散,可彼此独立进行操作,这样设计的虚拟仪器系统更具容错性和重构性。移动agent的引入使数据采集节点、处理分析节点和控制管理节点并不总驻留在一台物理主机上,即移动agent可以作为处理分析节点移动到最合适的物理位置。
3 基于移动agent的虚拟仪器系统的实现
通过比较,由IBM东京Waston研究中心开发的Aglets以其自身包容易安装、稳定性好、安全性高、跨平台、直接提供适合Java的移动agent技术、示例简单等优势,成为MAIVS系统研究设计的平台。Aglets用纯Java语言编写,具有较好的健壮性和移动性。作为最早基于Java的商业化系统,它提供了一套简单而全面的移动agent编程模型和详细且易用的安全机制,并为agent间提供了动态、有效的通信机制。在实现过程中,设计关注具有检测功能的处理分析agent的实现,而不需考虑整个系统的通信机制和行为协调模式。
对于向用户提供可执行程序这一问题,当前的应用程序虽然可以访问资源,但是它不具有普适性,也不能进行实用的计算。事实上,一旦用户想要执行一个应用程序,他不得不:(1)请求环境资源;(2)分配任务;(3)触发和控制执行;(4)得到结果;(5)释放资源[4]。