论文部分内容阅读
Internet正在由最初的内容服务的提供者开始逐渐发展成为以提供计算能力为核心的高层次应用服务的提供者。越来越多的计算资源以服务的形式加入到Internet中,通过某种方式实现互联、互通、协作、建立联盟,以松耦合的方式构建出整个软件系统,我们将这样一种新的软件形态称为网构软件(Internetware)。与集中封闭环境下发展起来的传统软件形态不同,网构软件的构成成分具有自主性、协同性、反应性等新的基本特征。传统的构件技术已经不足以对网构软件的构成成分进行有效刻画,需要产生一种新的构件技术。自主构件的提出正是基于这个目的。
构件独立开发、部署和运行在不同的节点上。构件的独立自主性不仅给软件的开发和建构带来了新的问题和挑战,也对构件间的协作提出了问题和挑战,所以需要对自主构件之间的协作进行探讨。
自主构件间的协作不同于传统构件的组装,自主构件的自主性使得传统的基于被动方法调用的组装不再合适。自主构件间的协作应该是一种非被动调用的、分布的、非硬编码的形式。另外,自主构件间的协作也不同于软件Agent,完全通过自主构件以自底向上的方式自发构建软件系统也是不现实的。为了完成特定任务,全局的自上而下的规约仍然需要预先制定。
本文在前人自主构件的基础上,探讨了一种环境制导的自主构件协作框架。为了保证正确性,预先制定的自上而下的规约以全局方式给出,然后由算法自动转换为单个自主构件的协作规范。这些协作规范和其它一些相关信息由环境在协作开始前灌注到自主构件内部,使自主构件获得协作的“知识”。开始协作后,自主构件将只在自身协作规范的指导下参与协作过程。从宏观上看,所有单个自主构件的协作行为有机组成了全体自主构件的协作过程。协作完成后,自主构件将清空协作“知识”,以便加入其它新一轮的协作。