面向Agent

2024-10-21

面向Agent(精选4篇)

面向Agent 篇1

一、现状分析

1. 基本概念

软件工程是将系统化的, 规范的、可度量的方法应用于软件开发、运行和维护的过程, 并对方法进行研究。

软件工程理论随着程序设计技术的发展和自身概念性的积淀而日趋完善, 并为分析、设计和实现复杂的关键系统提供了一个崭新的途径, 因此被认定为是克服当前软件危机的重要突破口。

2. 面向Agent与面向对象的比较

面向Agent的方法是面向对象方法的继承和发展, 因此二者有一定的相似性。Agent可以被看做活动的对象, 即具有精神状态的对象。两种方法都利用消息传递的方式来进行通信, 并均具有继承和聚集的能力。从面向对象到面向Agent的过渡是软件技术发展的趋势。尽管面向对象和面向Agent的方法存在一定的相似性, 但它们仍存在相当大的差异。具体表现如下:

(1) Agent自治程度高于对象, 能完全封装行为;对象不能完全封装行为, 其公共行为可被其他对象直接调用。

(2) Agent具备主动性, 每个Agent有独立的控制线程;对象是被动的, 单个对象没有自己的控制线程。

(3) Agent具有精神和心智状态属性, 对象没有这些属性。

3. 面向Agent的软件工程思想

面向Agent的系统特点是用一些Agent理论来解释一些应用从而产生Agent模型。面向Agent的构造层有三层:Agent理论用来模拟应用程序的特殊操作;ACL知道基本Agent交互作用的形式;内部语言反映了基本数据的交换和功能。他们对系统开发者有指导作用, 并且提供对Agent并发行为的间接控制尺度。

4. 面向Agent软件方法解决复杂系统的优势

一般来说决定系统的复杂度至少需要三个因素:

A:系统所处环境的特点:系统环境是动态的还是静态的;是可访问的还是不可访问的;是确定的还是不确定的, 这些因素将影响软件开发的复杂度。

B:系统与其环境交互的特点:系统与环境最简单的交互形式是系统从环境接收输入产生输出, 然后终止;而复杂类型的交互可能是系统需要和环境保持一个进行中的、无休止的持续关系, 显然这样的交互式造成了开发复杂系统的困难。

C:系统复杂的结构:这个因素是系统本身所具有的特点, 复杂的结构使在软件开发中的抽象建模变得十分困难, 性能把复杂系统分解为相对容易、相互联系的、较小的子系统。处理这种复杂系统可以使用的基本的常用方法包括分解、抽象和组织。

5. 现代AOSE。

近年来, 面向Agent的软件工程的研究非常活跃并取得了一系列进展, 具体表现在:

(1) 来自学术界河工业界的研究人员对面向Agent的软件工程进行了广泛和深入的研究, 取得了许多研究成果。

(2) 人们利用这些研究成果成功开发了一些应用, 取得了一些重要的实践经验。

(3) 技术标准化工作已经启动, 将为面向Agent的软件工程在工业界大规模应用奠定基础。

技术方面由于软件Agent的资质性及其构造模块的高度封装性和独立性, 面向Agent软件重用的研究和应用引起了人们的关注。当今学术界河工业界已经推出了几十种面向Agent的CASE工具盒环境以对面向Agent软件工程开发的不同阶段提供工具支撑。目前, 技术标准化工作已经启动, 这将为面向Agent的软件工程在工业界大规模应用奠定基础。

二、AOSE所面临的问题

Agent理论研究在20世纪90年代曾经非常活跃, 并取得了许多研究成果, 但这些Agent理论研究成果通常是从人工智能和分布式人工智能的角度来研究Agent的计算机理论, 缺乏有效工作的支撑, 对开发人员的要求较高, 只能针对受限领域和规模的应用系统进行开发, 在工程实践上缺乏实用性, 因而在实际的基于Agent系统开发中应用并不多见。

标准化是一项技术走向工业化和大规模应用的重要标志。缺乏统一的技术标准是目前阻碍面向Agent的软件工程走向成熟的一个主要因素。

三、AOSE的未来

不同于其他软件工程技术, 面向Agent的软件工程的研究借鉴和集成了其他学科的知识和研究成果, 从而为复杂系统的开发提供了自然和抽象的技术手段, 包括社会学、组织学和认知科学等。今年来的研究趋势表明, 面向Agent的软件工程将与其他计算机技术之间具有越来越密切的关系, 如面向服务的计算、语义web和对等计算等。

虽然软件工业的发展已有了很大进步, 但相对于计算机硬件的发展, 软件开发方法仍是计算机软件技术发展的瓶颈。截至目前, 尽管Agent管理和技术仍处于初级阶段, 但我们从中可以看到重要的萌芽, 那就是这种理论对软件工程所能带来的革命性的推动作用。面向Agent的软件工程技术将是一种分析、涉及和构造软件系统的得力手段。

参考文献

[1]FemandoAlongo.SoniaFrutos et al.SONIA:A Methodology for Natural Agent Development[C].In:international Work-shop Engineering Societies in the Agents Worl (dESAW’04) , Toulouse, France, 2004

[2]Marie-Pierre Gervais.ODAC:An Agent-Oriented Methodology Basedon ODP[J].Journal of Autonomous Agents and Multi-Agent Systems, Kluwer:New Yor (kNY) 2004

[3]程显毅.面向Agent变成-变成技术的一次飞跃.计算机科学, 2010, 2 (77)

面向Agent软件工程技术研究 篇2

1对Agent软件加顾性分析研究

对软件工程的回顾性探讨时, 不难发现促使科学技术得以发展的主要动力是应用需求。一方面, 由于软件系统的复杂性对软件工程技术提出了更高的挑战, 并且促进了软件工程技术的发展;另一方面, 软件技术新型技术理论可以将计算机技术推进更高的应用范畴中, 进而加宽了计算机的应用领域, 使软件的形态特征发生了更深一层的变化。

当前网络伴随着计算机技术的发展进步, 以软件密集型为特点的系统也在发生着更为深刻的变化, 具体体现在:

环境:像internet以及一些物理基础设施、操作现场环境等都是处于一种较为开放的动态环境中, 对于环境的各种变化完全不受制于系统的控制中, 不过, 同时又影响了系统的运行, 造成系统和环境之间的不清楚、不精确。

系统:系统中规模非常大, 其中包括了:各种架构、组织、系统的动态性、发散以及跨区域;基于环境中各种不确定因素和软件的无常变化性以及未知性, 许多的设计过程中所决定的事情现在都在软件的运行过程中进行完成, 所以要求软件系统一定要具有主动性;环境的复杂性使得软件系统必须要有对各种突变情况的适应性、自我管理性等。要采用长久持续性的软件系统才可以保证系统运行过程中的持续化, 以及各种新型技术的有效融合。

交互:在系统的各个组成部分之间是处于一种多元化、长久化、复杂化的交互环境, 比如说, CPS与物联网之间。基于系统中各种组成部分的不确定性以及自主性等, 使整个交互过程中的结果不确定, 不可控制。由于系统运行过程中各种因素的复杂性使得软件系统在运行过程中进行大量的交互, 实行自主完成, 也就是通过软件系统对谁和谁之间进行交互以及交互的方式进行确定。

显而易见, 文中上述的各种复杂性远超过软件系统的想象力, 这种系统的复杂性是促进软件工程发生根本改变的主要动力来源。近年来人们提出了一种新型的软件工程, 比如说, internetware, 软件Agent等等, 向上述的复杂性提出了挑战, 其中最为受到人们重视即是面向Agent软件工程。

Agent的概念起源于AI范畴中, 指的是留守在特定的环境中可以进行动作的自由支配活动以此来达到设计目标的实体。

2 现状分析

面向Agent与面向对象之间的比较分析

面向Agent的方法是延续了面对对象方法的发展, 两者之间存在一定的相象性。Agent是具有精神的、活动的对象。进行通信时都是以消息的模式进行传送的, 而且都有着延续继承的能力以及集合一起的能力。虽然两者之间具有相象性, 但同时也存有一定的差别性。具体体现如下: (1) Agent中对行为可以进行完全性的封装, 而对象不能, 其行为有可能被其它对象调走。 (2) Agent控制线路都是独立性的, 但是在对象中却是被动性的, 每单独的一个对象没有自己进行控制的线路。 (3) Agent中的状态属性呈现的精神性以及心智性, 而在对象中却没有这些。

面向Agent的软件工程思想

在Agent中是通过理论的方法将一些应用系统解释出来, 进而产生Agent模型。面向Agent系统中可以分成三个架构层:在Agent中的应用程序的模拟是通过Agent理论得以实现操作的;ACL清楚Agent交互方式;使用系统内部语言将数据信息的交换得以体现出来。引导了系统的开发功能, 与此同时向Agent提供了同发行为中的间接性的控制。

面向Agent软件工程所取得的研究进展

相关学术界以及各种工业界进行面向Agent软件工程进行的一系列的研究, 而且还取得了相应性的研究成果。

人们在此研究成果中, 进行了更深层次的开发和利用, 而且还取得了一系列的实践性经验。

各种技术性的标准产业已经开始具体工作内容的启动, 将会进行大规模的面向Agent软件工程在工业界的应用领域奠定了扎实的基础。由于软件Agent的特质, 构造的封装性以及独立性, 进行了重用面向Agent软件的各种研究以及应用, 同时也得到了人们极度的重视。当今学术界对于Agent软件工程应用于不同领域的研究已推出了几十种。

AOSE面临的问题分析

虽然agent理论的研究工作在九十年代的时候非常活跃, 并且还取得了一定的研究成果, 但是由于agent的研究成果是通过人工智能的角度进行研究基于agent计算机理论的, 缺少实践工作的支持, 而且对于开发人员的专业要求相对比较高, 针对性较强, 只可以在限制领域内进行系统的开发以及研究, 没有实践工作的经验, 所以基于agent系统的各种开发并不是很常见。

技术的标准化代表着这项技术从此踏入了大规模应用和工业化的范畴中。而面向agent软件工程中就缺少了统一性, 严重阻碍了agent软件工程走向成熟的道路。

3 对未来研究的展望

上文中所叙述面向agent软件工程的研究过程中还有许多的问题需要去解决和处理, 要想使面向agent软件工程在复杂型的系统中可以发挥更大的效用, 而且取得一定的规模应用, 就需要在一些关键环节中进行全面的研究。

(1) 程序设计的理论基础、设计方法以及各种工具

当前阻碍面向Agent软件工程发展的主要是面向Agent程序设计, 设计成果与否直接影响着Agent软件工程的技术发展, 也必定影响了Agent软件工程向大规模范围内发展。面向Agent程序设计时需要遵循以下几方面:

面向Agent程序设计的理论:需要从各方面进行研究可以支撑面向Agent程序设计的理论基础, 进而对系统中的语言设计以及方式方法提供了基础保障, 其中包括了, 各种交互理论以及语言基础等。

面向Agent程序设计的方法:需要指定的设计方法进行研究, 进而对面向Agent程序设计提高相关方法进行引导。比如说, 怎样达到重用, 怎样进行模块的组织等等。

面向Agent程序设计的语言设计:要将各种语法以及语义、语言采用设计的方法进行分与衔接, 将各种语言能力的表达得以解决。因此面向组织和目标的设计方法非常值得我们重视。

进行程序设计时的各种支撑工具以及支撑环境, 一定要开发和提供一些与之相同的集成面向Agent程序的各种支撑工具以及环境。

(2) 验证和确认

当前面向Agent软件工程中最弱势的一个环节就是质量保证, 面向Agent软件工程中需要对系统中的验证以及技术进行加强性研究, 使系统的研究质量有所保证。

面向Agent软件的测试过程中, 需要将系统环境的开放性以及自主性以及系统的适应性采用各种测试软件进行测试, 为今后的面向Agent软件开发提供全面的支持。

面向Agent的模型进行检测, 在基于面向Agent程序技术的特质进行模型检验技术的研究。

(3) 技术标准化

未来面向Agent软件工程的研究在技术标准化的方面仍然需要进行大量的研究, 其中包括了面向Agent软件工程的体系架构、各种建模语言以及程序设计的语言应用等等。

(4) 形式化技术

未来面向Agent软件工程的研究过程中需要将各种逻辑工具等其他数学工具, 进行软件的分析与设计等一系列软件的开发问题, 将面向Agent软件开发技术的形式化技术的研究提供更为严格的技术以及各种工具的支持。

(5) 集成和借鉴

面向Agent软件工程想要发挥更大的实践性作用以及进行大规模的工业应用, 就一定需要进行集成以及借鉴软件工程成功的各种经验、技术和方法。所以在未来面向Agent软件工程的研究需要将重点转向:面向Agent软件的重视性、面向Agent软件软件的设计方式以及面向Agent软件工程的设计风格和面向Agent软件工程模型转变等等。

4 结束语

面向Agent 篇3

Agent的理论研究已经取得了很大的进展,但应用研究还存在着相当大的滞后。目前,面向Agent的语言还不成熟,因此大部分面向Agent的应用仍然是使用面向对象语言开发的,而其中大部分又是基于Java的。本文将探讨使用C++进行Agent编程的具体方法,并给出一个简单的Agent例子。

1 面向Agent编程的基本概念

文献[1]将Agent定义为一种“基于某种场景,并具有灵活、自主的行为能力,以满足设计目标的计算机系统”。

一个为理论界所接受的Agent需要具有如下若干特征:

自主性(Autonomy)。Agent的运行无需人类或其它Agent的直接干预,并能对其自身行为及内部状态进行某种控制。

社会性(Social Ability)。能通过某种Agent通信语言与其它Agent(也可能是人类)进行交互。交互主要有三种类型:协作(Cooperation)、协调(Coordination)和协商(Negotiation)。

反应性(Reactivity)。能感知它们的环境,并能对环境的变化及时做出反应。

主动性(Pro-activeness)。Agent不但能对环境做出反应,而且它们能够积极主动地做出使其目标得以实现的行为。

2 C++实现面向Agent编程

2.1 面向对象和面向Agent编程的异同

对象和Agent都是对现实世界事物的抽象,面向Agent技术是为了解决复杂的、分布的现实世界问题,可看作是对面向对象方法的继承、进化和发展。从面向对象发展到面向Agent,使得计算机求解问题的方式与人类认识世界的思维方式更接近

具体来说,面向Agent的编程于面向对象的编程有以下不同:

1)自治程度。对象可以控制自己的内部状态但不能控制自己的行为.也就是说对象不能控制它的方法是否执行。Agent可主动运行,有自己的目标和行为,可由外部激励或内部状态丽启动,执行动作的决定权在接受请求的Agent。

2)对于灵活性的见解。Agent具有灵活的(反应的、预动的、社会的)行为能力,标准的对象模型根本没有这种行为能力。

3)多Agent系统本质上是多线程的,其中每个Agent至少假设有一个控制线程。虽然现在有的面向对象的程序设计语言具有一定的并发能力,但只是从计算效率的角度强调多线程,而在面向Agent编程中,多个Agent的并行处理是这种编程范式的内在要求。

2.2 面向Agent编程的几个关键问题

C++是一种面向对象的语言,在面向对象的编程中,类变量、类方法等都是对象的概念,但刻画Agent仅仅靠这些还是不够的。从软件设计角度看,面向Agent的编程还需要解决以下几个问题,

1)Agent对外部世界的感知以及事件处理的能力。Agent作为一种拟人的智能体,必须在自身的线程循环中,,不断地感知世界并做出响应。

2)Agent是多线程并行计算的。在多Agent系统中,各个Agent的地位可能有差别,但它们的存在和运行却是并行的。因此,具体实现过程中,应把Agent类设计成一个多线程类。

3)Agent的智能化。Agent处理事件,做出决策的基础是自己的规则库。在面向Agent的编程中,根据解决问题的不同,所采取的人工智能方法也是情况迥异。编程时应该根据不同的问题,给出相应的解决框架。本文暂不考虑这个问题。

4)Agent之间的通信。Agent不是孤立的,Agent之间通信的语言标准是KQML(知识查询与操纵语言,Knowledge Query and Manipulation Language),在编程实现时,为了使用KQML,就应该有一个类对KQML进行解析,使用Socket或类似手段传递KQML。

2.3 C++多线程类库的设计

从面向对象的角度理解面向Agent,可以认为Agent就是绑定了Thread的Object。基于这种理解,可以设计一个多线程的BaseAgent类,作为其它Agent的基类。

BaseAgent类的主要代码如下:

上述代码中,start()方法通过调用_beginthread()函数来启动Agent线程;agent()方法是_beginthread的参数,用来执行run()方法;run()方法内可以放置Agent的主要执行代码,例如Agent的消息事件循环等。

这个Agent基类仅仅是一个多线程的、展示C++面向Agent编程方法的框架。Agent更重要的功能在于它的“智能”特性,这需要结合特定领域的知识去实现。C++不是为面向Agent编程设计的,另外,面向对象与面向Agent方法在分析问题、解决问题的方式上有比较大的差异,这些在实践中应当注意。

2.4 一个简单的Agent例程

基于上文提出的BaseAgent类,可以实现下述的例程。本例程从BaseAgent类派生了一个DerivedAgent类,这个派生出的Agen只是打印出一句问候,通过重载run()可以达到这个目的。

在测试文件的主函数main()中,新建一个DerivedAgent对象,调用它的start()方法,则会新建这个DerivedAgent对象的线程,进而执行这个DerivedAgent对象的run()方法。

代码如下:

如果新建多个DerivedAgent对象,那么就可以建立一个多Agent应用程序;如果从BaseAgent派生出不同的子类,就可以控制Agent的不同行为。

3 结论和展望

本文分析了面向Agent编程与面向对象编程的主要差异,然后通过设计一个Agent基类,结合一个简单的例程,展示了C++实现面向Agent编程的方法。

需要指出的是,Agent的编程理念强调分布式、并行式计算,近年来伴随这一理念出现了一些优秀的函数库,例如微软公司VS2010中的异步代理库(Asynchronous Agents Library),利用这些库进行Agent的开发,将会大大地提高开发效率,降低开发难度。

参考文献

[1]Jennings N R,Sycara K,Wooldridge M.A Roadmap of Agent Research and Development[J].Autonomous Agent and Multi-Agent Systems,1998(1):275-306.

[2]Bigus J P,Bigus J.Constructing Intelligent Agents With Java[M].New York:John Wiley&Sons Inc,1997.

[3]异步代理库[EB/OL].http://msdn.microsoft.com/zh-cn/library/dd492627.aspx.

[4]程显毅,聂文惠,谢军.面向agent开发环境JACK的实践[M].北京:科学出版社,2009.

[5]姚政,高文.面向Agent的程序设计[J].软件学报,1997(11):824-831.

面向Agent 篇4

1.1 模型驱动体系结构(Agent)与面向服务体系结构(SOA)

模型驱动体系结构是软件开发方法上的革新,它源于解决重用和需求变化的问题。比较成熟的重用有二进制代码级(这里将Java字节码及.NET的中间代码都认为是二进制代码一级),源代码级两种层次,其中二进制代码级含主要是系统函数库和应用函数库[1]。随着应用的发展,又出现了粒度较大的类库以及粒度更大的组件库。二进制代码的重用粒度不断变大的趋势实际上反映了IT技术不断向应用需求靠拢的趋势。从源代码级来说,开源软件的发展使其有了更强的生命力。但是,从实践中看来,开源软件的源代码级重用比二进制级的重用需要耗费更大的工作量。此时,重用并没有摆脱物理形式的束缚,从逻辑上将更有价值的设计面重用起来,而设计往往才是高层次软件重用的关键。

设计层的重用一直以来受到限制的原因之一是没有通用的设计表达方式,各种软件设计采用不同的表达符号体系是导致重用困难的原因之一。正是因为没有统一的符号体系,所以也很难发展出通用的辅助设计工具。自从UML出现以后,这个问题在很大程度上得到了缓解。模型的表达有了广为接受的方式,大部分的常用设计元素都可以用UML的元素来表达,这是UML最为成功之处。随着UML推广,各种自动化工具也相应产生,其中最为著名的是IBM的RationalRose,它实现了UML图形表示到多种语言的自动映射功能。

但是UML也面临特定领域的优化和扩展问题,比如用于嵌入式实时领域的实时U侧比,就需要扩展更多的关键元素。为了解决设计重用的问题,也为了解决中间件之间的互联互通问题,OMG提出了一个元层解决方案,即模型驱动体系结构。MDA的核心在于其“元”层的思想,有了元层,整个体系就具有了无限可扩展性,这是MDA不同于其它技术的地方。基于MDA的软件开发生命周期如图1所示,其中把平台独立模型PIM转换成一个或多个平台相关模型PSM是MDA开发过程中最复杂的一步。

MDA是模型驱动体系结构,而SOA是面向服务体系结构,那么,两者之间的联系究竟是什么,为了解决这个问题,SLN.公司从企业计算的角度作了一个从应用出发的专题研究[2]。而从开放系统中间件的角度来看,SOA是为了解决更大粒度的重用所提出的概念,只不过,所采用的技术变为服务,而结构采用了三方模型而已。

传统的组件和对象级重用较为强调重用粒度和互通互操作性,而作为企业计算来说,更加强调敏捷性和跨企业互通性。这就需要更大粒度的重用。此时,组件己经不能满足需要,服务作为更大粒度的组件被提了出来,而且其使用方式上十分强调三方模型。

所以,MDA和SOA都是为了解决重用问题而出现的,而MDA强调模型重用和自动开发过程,SOA强调大粒度重用和跨域协作。它们都反映了敏捷性,敏捷性实际上与IBM按需计算是一个思想。即软件可以按照需求的不同而快速变化重组[3]。从而避免需求的变化导致软件的大规模重写。总结一句,可以将重用、动态、敏捷、模型的关系概括如下:动态必须有重用的支持,而敏捷则必须以动态为基础,模型则是设计层的重用。

1.2 服务组合中的模型方法

服务组合作为服务计算中的重要元素,其有效运行是服务计算动态性和敏捷性得以实现的保证。对服务组合建立模型是学术界和工业界一直共同努力的方向。其中有借鉴原有成果如UML为组件建模的,或者新辟描述语言如WSBPEL和WSCDL的,还有结合UML与WSBpEUWseDL的,都取得了一定的成果。

但是,服务组合必须用严格的形式化方法加以验证,才能保证服务组合的正确性和可验证性。

模型有形式化模型和非形式化模型以及半形式化模型的区别,如:U L就是一种半形式化模型,它定义了符号系统,但是没有定义推理规则;而诸如进程代数和Petri网等就是典型的形式化系统。

2 基于Pi演算的驱动服务组合设计框架

2.1 UESTC-PLATFORM:一个服务计算可视化平台

UESTC-PLATFORM是一个可视化的服务计算平台,它支持服务设计、服务组合、服务仿真、服务部署等功能。其系统体系结构如图2所示。

平台提供了一套良好的访问和管理系统的组件,以便用户程序可以采用B/S方式和C/S两种方式调用系统平台。系统平台采用了SOA架构进行设计,支持BPEL4WS1.1规范,从而保证系统能够向企业级应用提供良好的松散藕合性,满足企业业务的决速变化,并且支持在应用平台中居于主流地位的国际规范。

UESTC-PLATFORM系统将服务划分为两大类:内部服务和外部服务。内部服务指的是与应用程序运行在同一个虚拟机下并被WSDL包装成服务的JAVA组件;而外部服务即Web services,它和应用程序运行在不同的虚拟机,不同的进程、甚至是不同的网络环境下。内部服务适用于企业内同构环境下的组件调用,外部服务适用于企业间异构环境下的组件调用。为了提高服务的调用效率,对内部服务的调用方式是直接解析服务并调用相应组件。

图2中虚线框部分是属于UESTC-PLATFORM的部分。其中具有可移植性、高效率、高性能的内核管理组件是系统的核心部分(点划线虚框所示),它对外提供了监视系统资源和运行状态的接口,对内管理系统的各个组件和服务。此外,内核组件还具有一定的灵活性,可插拔、替换(采用foci技术)其他的实现技术。在本系统平台中,采用基于IOC的技术来实现具体组件,并用Megaserver管理系统内的组件模块,其下挂接了5个系统组成模块:

BPEL工作流引擎:它是平台的重要组成部分,符合业界BPEL4WSvl.1标准。使得基于本平台的企业级应用能够全面实现SOA架构和企业商业、办公过程自动化。

内部服务:实现企业内部业务组件服务化。

规则引擎:按照业界标准实现业务规则的随需应变。

相关资源:包括了排队队列、流程连接池、工作队列、系统平台参量、服务参数等。各种组件:指构成本系统的组件,包括服务管(Serviceman age)、日志、事务、持久化等。

2.2 基于Pi演算的形式化框架PIFF

1)PIFF:一个基于Pi演算的形式化框架

PIFF是一个基于Pi演算的形式化框架。它包括三个部分:第一个部分表明了WSCDL-WSBPEL的关键元素和Pi演算之间的关系;第二部分表示了如何将高级结构——进程模式——建模为Pi演算的agent表达式;第三部分是一些指导和辅助验证的工具。PIFF的结构如图3所示。

2)WSCDL,WSBPEL和Pi演算元素的对应关系

Pi演算可以描述各种数据结构和控制结构。无论WSCDL还是WSBPEL,其组合描述都可以分为两个逻辑部分,一是静态信息描述;二是流控描述。映射关系描述在表1中。

3)将高级结构映射到Pi演算

WS将高级结构映射到pi演算

CDL的核心信息交换部分包括在"Interaction"、"exchange"子元素,"exchange"有"send"和"receive"元素中。子元素。iteration有因为WSCDL描述服务之间的交互规则,交互模式可以总结为三种模式之一:单向(one-way),同步发送/接收和异步发送/接收。这些模式可以映射为相应的Pi演算,如表2所示。

WSBPEL交互模式比起WSCDL来说更加复杂一些,因为它可以用来描述组织内的业务流程。根据Alisati:Barros和Frar Puhimann的研究工作,Pi演算可以表达任何的工作流模式。通过分析和比较,该文选择出一些核心模式,作为PIFF支持的内容。表3展示了这些模式。

4)PIFF框架的验证方法

如前所述,PIFF不仅提供了用Pi演算表示WSCDL和WSBPEL的方法,也涉及如何验证关键属性的方法。在服务组合的过程中开发者必须保证服务组合的结果能满足系统用户的需求。系统设计者从全局观点设计系统,但是开发者从本地的内部流程视角来看待服务组合[4]。因此,必须保证每个参与者产生与全局协议一致的交互方式。作为一种编排语言,WSCDL指定了交互行为的全局特征,也表示了全部参与者必须满足的交互规则。怎样形式化地验证wscDL与WSBPEL的一致性是一个重要的问题。在PIFF的辅助下,可以保证这种一致性[5]。

当系统设计者提出一个WSCDL的服务组合描述时,全局设计可以映射为Pi演算表达式,此时,表达式就描述了系统需求,该表达式被称为服务组合需求模型serum(service。composition irementmodel)。为了达到Serum的目标,一些本地流程必须创建出来,本地流程可表达为WSBPEL,设有N个本地服务被创建出来完成组合。

3 使用PIFF框架的实例

在此组合中,有五个参与者。Client Proxy是客户代理。TravelAgentis负责联系宾馆、接受客户请求。Balk负责支付服务。Elmer是Hotel的内部通道,检查是否有空余房间。

1)根据PIFF,一个SCRM可以构建如下:

(缩写:CP-Client Proxy,TA-Travel Agent,BK-Bank,HT-Hotel,CK-HT内对外不可见的内部动作)

SCRM=CPTA.TAHT.(HTTA.TACP+HTBK).BKCP.CPBK.BKHT.HTTA.TACP).SCRM

每个发送操作都有相应的接收动作。SCRM可以解释为:

CP发送请求(req)到TA;

TA接收到req,并且发送预定请求到HT;

HT检查空余房间(通过发送que到CK,通过内部通道Inner进行)。如果CK的回答是有(ok),HT发送支付请求(Pay)给BK,否则(nok)HT发送拒绝信息(rer)给TA,然后TA发送拒绝信息(dec)给CP;如果HT发送pay,BK发送请求给要求cP支付,CP支付(fee);BK发送已支付信息(pok)给HT,HT再发送预定成功信息(suc给TA,TA则发送确认信息(efhi)给CP。

2)根据PIFF,一个essC RM模型可以创建如下:

3)根据PIFF,为了检查是否escort与scrim一致,每个cascara中的服务都必须验证其一致性。在该例中,把Travel Agent作为样例来说明如何验证单个服务一致性。

4 结论

该文的研究工作实现了初步的融合,即可以通过UESTC PLATFORM调用MWP平台工具。这里实现了两个工作,一是将Pi演算描述的流程映射为WS-BPEL的框架;二是将WSBPEL的流程描述逆向转出(建模)为Pi演算的流程描述。这个研究工作仍在进行中,现在所定义的两个映射器(正向映射和逆向映射)是进一步改进的重要基础,也是以后实现对WSCDL支持的重要参考。

摘要:论文从服务计算试图用自动分解需求,全网搜索小粒度服务,组装出符合需求的应用逻辑的方式来完成以前的软件开发任务。在这个框架中,研究的基本点是如何描述服务、如何发现服务、如何组装服务、如何测试和验证服务。具有形式化模型的服务组合能够更好地保证组合正确性以及其它的相关特性。

关键词:Agent,SOA,引擎设计方法,PI-演算,Web服务

参考文献

[1]徐伟,金蓓弘,李京,等.一种基于移动Agent的复合认服务容错模型[J].计算机学报,2005,28(4):558-567.

[2]吴建,吴朝晖,李莹,等.基于本体论和词汇语义相似度的Web服务发现[J].计算机学报,2005,28(4):595-602.

[3]李曼,王珊.基于领域本体的Web服务动态组合[J].计算机学报,2005,28(4):644-650.

[4]刘必欣,王玉峰,贾焰,吴泉源.一种基于角色的分布式动态服务组合方法[J].软件学报,2005,16(11):1859-1867.

上一篇:学生阅读创新能力培养下一篇:桥式固定