摘要:面向Agent软件工程是近年来软件工程领域出现的一个重要的前沿研究方向,受到了学术界和工业界的高度关注和重视,研究活跃,发展迅速。
本文从应用需求和技术发展两个方面阐述了面向Asent软件工程的产生和发展背景;AK技术、开发和工具3个视点综述了现阶段面向Agent软件工程的研究内容;分析了面向Agent软件工程的研究现状;最后讨论了它的应用前景和面临的挑战以指导进一步研究。
正文:“软件工程”这个名字是在1969年的NATO大会上讨论软件开发问题是提出来的。
所讨论的开发问题是,大型软件系统总是延期,不能交付用户期待的功能,成本超出预期,软件不可靠。
当今,软件工程的进展是不同凡响的。
社会如果没有大型专业软件系统就根本不能运转。
对于构建业务系统,这里有一串技术习语,J2EE,.NET,SaaS,SAP,BPEL4WS,SOAP,CBSE等,它们支持大型企业应用的开发和部署。
国家公用事业和基础设施(能源,通信以及运输)都依赖于复杂而可靠的计算机系统。
软件能够探索空间,创建万维网这个人类历史上最强大的信息系统。
人类正面临着新的生活和生存挑战,需要新技术来帮助解决这些问题,而且可以肯定,软件工程将在这些技术中扮演核心角色。
因此从面向Agent软件工程简单描述一下:1研究背景和现状面向对象的软件工程方法作为当前一种主流的技术,现在已经形成一套成熟的系统开发方法:面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的程序设计(OOP)。
然而随着当前计算机网络的迅速发展和各种分布式应用软件的需求不断涌现,使得当今的网络和应运软件呈现出分布式、动态、开放、异质等复杂的特征。
这些特征对当前主流的面向对象的软件开发方法提出了新的挑战,从而面向Agent的软件工程方法应用而生,并对以上复杂的特征提出了很好的解决方法。
但是面向Agent的软件方法并不是对面向对象的软件工程的否定,两者有许多相似和联系之处,吸收和借鉴面向对象方法的成功经验和成熟技术对于面向Agent的软件方法的研究十分有益。
Agent特别是多Agent技术在计算机领域的研究和应用源于20世纪70年代的美国麻省理工学院研究人员开展的一系列关于分布式人工智能的研究。
当时研究人员发现,通过协作将一些简单的信息系统组成一个大的系统可以显著提高系统处理复杂问题的能力,并且通过定义合理的协作机制可以提高整体系统的智能水平。
由此产生了具有一定智能、能被动地响应信息处理的需求,除了完成事先指定的任务外,还能够主动地预测、适用乃至积极的寻找途径以支持用户完成任务的软件Agent的概念和方法。
国际上有关Agent以及面向Agent的软件方法的研究主要可以分为以下两个时期:(1)1977—1990年,主要集中于智能Agent的研究(smartAgent)。
1995年Wooldridge¨1总结了慎思gent(deliberative—Agent):具仃明确的可描述形式化模型且决策借助于形式化推理决定的Agent。
此阶段主要集中于Agent之间的交互和通信,任务的分解和分析,协调和协同,通过谈判解决冲突等焦点问题。
目标是确定、分析、设计和综合多个协作Agent组成的系统。
典型的系统有Actor模型、MACE、DVMT、MICE等(共有约20个系统)。
当然,除了一些典型的焦点问题外,还有理论、构建和语言问题上的研究和发展。
这些在文献[2—3]中进行了很好的总结。
(2)1990年以来,随着Agent 理论和技术研究的不断深入以及应用的不断扩大,人们迫切地希望能够从Agent技术和特殊的成功案例中抽取出一般性的、具有普遍意义的思想、原理、原则、方法、过程和模型等,从而提供一种系统的手段以指导软件系统的工程化开发。
在此背景下,许多学者将Agent 的概念、理论和技术引入到软件工程领域,并与软件工程的思想、原理和原则相结合,产生了面向Agent软件工程(AOSE)这一新颖的研究方向H1,在这一时期出现了一系列达到实用的系统。
如Sycara”3在CMU中的旅游接待系统,任务Agent和信息Agent相互协作产生每一个旅游者的日程安排表。
为了达到这个目的,首先Agent通过在线信息源得到旅游者的兴趣、姓名和组织,还要得到旅游者的工作和他在组织中的地位等更多的信息;第二,借助于得到的信息,通过查询个人数据库来决定合适的接待(如接待人员等);第三,旅游者接待Agent选择一些最初的接待人员,通过接触和总结日程安排Agent信息,询问他们在何时会见旅游者,如果某一人员没有日程安排Agent,一封E—mail被发出;第四,核对所有的回应;第五,旅游接待者Agent为每一个旅游者生成~个包含不同种类的预定房间和接待人员名单;最后系统与组织者联系和验证确认或拒绝、建议等。
2.1Agent系统的定义Agent是一个快速发展的领域。
它是分布式人工智能和现代计算机,通信技术发展的必然结果。
关于Agent概念有很多争议,在软件工程领域较为人们所接受的Agent的定义是:Agent是一个处于特定环境中.能感知并灵活、自主适应环境,可以代理设计者或使用者实现一定任务的具有较高自治能力的计算机实体。
Agent作为自主的个体在一定目标驱动下并具有某种对其自身行为和内部状态的自我控制能力.能够不受人或其他Agent的直接干预,并尽可能准确地理解用户的真实意图.包括帮助用户方便,准确地描述和表达任务意图.采取各种由目标驱动的,积极主动的行为,如社交、学习:推理、合作等,感知、适应并运行于复杂的和不断变化的动态环境,有效地利用环境中各种可以利用的数据、知识、信息和计算资源,为用户提供迅捷、准确和满意的服务。
对于A—gent而言,它具有以下一些特征:(1)自主性。
这是Agent最基本的属性,是区别于其他抽象概念,如过程、对象的~个重要特征。
Agent运行时不直接接受他人的控制,对自己的行为与内部状态有一定的控制力。
Agent 对环境做出的反应是以目标为导向(goal—directed)的主动行为,即行为是为了实现其目标。
在某些情况下,Agent能够主动地产生目标,继而采取主动的行为。
如可以假定Agent至少要有向环境声称自己存在的目标和维护自己可提供的服务的可靠性等目标№1。
(2)反应性。
Agent能够感知环境的存在,并对环境中相关的事件和参数做出反应等。
(3)社会性。
Agem 可能处于由多个Agem构成的社会环境中,通过某些交互途径与他人交换信息,协同完成自身问题求解或者帮助其他Agent完成相关活动。
Agent间通过某种通信语言相互交换各种信息,是Agent协同和学习的基础。
(4)移动性。
Agent应具有在不同的网络环境中自主移动的能力,且自身状态保持不变。
Agent的移动性以及在电子商务方面的应用也是当前研究的热点之一。
除了上述4个主要特性以外,Agent还具有适应性、协同性、学习性、可靠性等特征。
Agent的概念的上述特征使得它表现出类似人的特征和行为,而这为计算机科学与人工智能所面临的复杂问题的求解提供了新的途径。
需要说明的是尽管Agent可能具有多种属性,但是研究和开发人员没必要构建一个包括上述所有的特性的Agent或多Agent系统,而应该从实际需要出发,开发包含以上某几部分特征的Agent系统。
2.2 Agent与对象面向对象技术是90年代开发技术的主流,在解决软件的可重用性、可维护性、可靠性有着独特的优势。
但是随着互联网和分布式技术的发展,软件开发特别是大型复杂的软件呈现出分布式、动态、可移植、环境的异质等特性,对软件工程提出了新的挑战。
而考虑Agent 的特点,面向Agent的软件工程方法能够很好地应对以上的新挑战。
对象被定义为一个计算实体,封装了一些状态,可以在这些状态下执行某些动作和方法,并且可以通过消息进行通信。
尽管有相似性,但是Agent和对象还是有明显的区别的。
第一个区别是Agent和对象的自治程度不同。
在面向对象的程序设计语言中,可以把实例公有化。
即可以从程序的任何地方访问它们,对于方法来说也必须这样做,它们可以被其它对象调用。
但是对象不能表现出对自己行为的控制。
也就是说如果一个方法提供给其它对象调用。
则这些对象可以在任何希望的时候调用这个方法——当一个方法是公有的,则这个对象不能控制该方法是否执行。
但是在多Agent系统中,当一个Agenti请求另外一个Agentj 执行一个动作(方法)A时,j未必就要这样做.因为A未必是j此刻愿意做的。
因此不能认为Agent是互相调用的方法而是请求要执行的动作。
如果i请求j执行动作A,则J可以执行这个动作也可以不去执行这个动作。
因此,在面向对象的系统中,决定权在调用方法的对象;而在Agent系统中,决定权在接受请求的A-gento对象和Agent系统的第二个重要区别是关于灵活性的(反应的、预动的、社会的)自治行为的见解。
而标准的面向对象模型根本没有说明如何把这些行为集成进所构造的系统中。
第三个重要区别是每个Agent都有自己独立的控制线程——在标准对象模型中系统只有一个控制线程。
当然,像在Java语言中也提供了多线程的并发技术,但是这些语言没有抓住Agent作为自治实体的本质,也许面向对象领域中最接近Agent的是主动Agent的思想。
主动Agent对象拥有自己的控制线程对象。
主动对象一般是自治的,它们显示出的行为不是由其它对象操作产生的。
另一方面,只有被动对象明显的操作时其状态才发生变化。
2.3面向Agent的开发工具面向Agent的软件工程方法远没有成熟。
如今Agent项目的开发基本都是依据一些基本的软件工程实践的经验从头做起。
许多开发Agent系统的公司通过将Agent系统中底层的服务部分抽取出来,抽象形成可重用的应用编程接口,以简化开发类似Agent系统的工作。
在此基础上形成了Agent系统开发工具。
比较典型的有IBM的Aglets、微软的MicrosoftA.gent、CMU的RETSINA等。
3 结束语本文讨论了在企业级的、跨服务器的或者跨系统的环境下,分布式工作流系统间的协同通信问题。
在WfMC工作流参考模型的基础上,提出了一种基于XML及SOAP的混合模式的消息传递机制。
该系统以XML作为数据(消息)交互标准,依托HTIP请求/响应模型捆绑SOAP消息进行通信。
参考文献:[1] 陶华婷软件工程初级教程[M].北京:清华大学出版社.2011[2] 程成译软件工程机械工业出版社2011.5[3] 梁志荣面向Agent软件工程综述计算机与现代化2009年第5期。