面向Agent的软件工程论文

时间:2022-09-12 08:13:43

面向Agent的软件工程论文

自20世纪80年代以来,在人工智能、分布计算、计算机辅助协同工作等领域,有关Agent理论和技术的研究引起了人们的极大兴趣。人们试图通过这一理论和技术来开发出具有更高智能特征、高度灵活并能更为友好地与人类进行交互的计算机系统。到了20世纪90年代末期,随着Agent理论和技术研究的不断深入以及应用的不断扩大,人们迫切地希望能够从一些具体的Agent技术和特殊的成功案例中抽取出一般性的、具有普遍意义的思想、原理、原则、方法、过程和模型等,从而提供一种系统的手段以指导软件系统的工程化开发。在此背景下,许多学者将Agent的概念、理论和技术引入到软件工程领域,并与软件工程的思想、原理和原则相结合,产生了面向Agent软件工程(Agent-OrientedSoftwareEngineering,AOSE)这一新颖的研究方向。

1面向Agent与面向对象

面向对象的技术已经成熟,开发人员已经很了解,但对Agent技术还比较陌生,我们将面向对象和面向Agent的特点加以比较,阐述了Agent所具有的优点。

1.1Agent的定义

在软件工程领域较为人们所接受的Agent的定义是[1]:Agent是一个处于特定环境中,能感知并灵活、自主适应环境,可以设计者或使用者实现一定任务的具有较高自治能力的计算机实体;其根本目标是接受另外一个实体(可以是人、Agent、系统等)的委托或请求并为之提供帮助和服务,能够在该目标的驱动下主动采取包括社交、学习等手段在内的各种必要的行为,以感知、适应并对动态环境的变化进行适当反应。

1.2面向Agent与面向对象的比较

从某一角度来看,客观世界是由客观世界中的实体及其相互关系构成的,我们把客观世界中的实体抽象成问题空间的对象,于是我们得到了面向对象程序设计方法(OOP)。社会是人和人与人之间关系的复杂组合体,我们用Agent来模拟人的思想和行为,进而用多Agent系统来模拟社会,于是我们得到了面向Agent的程序设计方法(AOP)。对于面向Agent方法,我们可以用如下语言简单描述:面向Agent方法是希望通过对人解决应用问题的智能行为进行模拟,在软件解空间中建立一种嵌入在不断变化及不确定世界中,能进行感知并能自主采取行动的计算实体。Agent是含有心智成分,如信念、愿望、能力、职责、承诺等的实体。尽管面向对象和面向Agent的方法存在一定的相似性,但是Agent毕竟不是简单的对象,它们仍然有着相当大的差异。Agent所具有的很多特性,决定了面向Agent的方法和面向对象的方法有很大区别。具体地说,两者之间的差异表现在以下几个方面[2]:(1)自主性,Agent是位于某一环境中的一个计算实体,它具有对象所不具备的一些“智能”,如“意图、情感、愿望、信念”等。它有能力在复杂的环境中自主地采取行动,即在没有人直接干预下能够采取行动,并能控制自己的行为和内部状态。(2)反应性,Agent能够感知它们周围环境的变化,如客观世界、用户、其他Agent等,接受外部刺激,并以实时方式响应环境中发生的变化或刺激。(3)学习能力,Agent在运行过程中,通过学习以往的经验不断改善自己对同一问题的求解能力,而对象的方法却是一成不变的。(4)社会性,Agent之间互相通讯,分工合作,协同解题,并行计算。各Agent能够在履行其自身职能的同时,还能够根据其求解状态和技能,在合适的时候与其他Agent交互,以提高自己的问题求解能力或帮助其他Agent的问题求解活动。这就是Agent的社会性。除了上述主要特性外,Agent还有移动性、理智性、顺从性和诚实性等特点[1]。

2基于Agent的软件体系结构

2.1Agent的内部实现结构

一般Agent的实现结构可以分为:信息黑板、行为控制、知识库和接口4个部分[3]。其中,信息黑板代表Agent的心理状态;知识库为其信念与知识的积累:行为控制则是控制Agent表现动作的模块;接口是Agent与外界交互的界面。

2.2Agent组件与Agent连接件

Agent组件是基于Agent的软件体系结构(AgentBasedSoftwareArchitecture,ABSA)的基本组成单元,是对系统处理的高度抽象,具有高度灵活和智能特色的软件实体,对系统需求是不敏感的,其能力可以通过修改其义务与选择知识集合动态地变更,而自身形态保持不变。Agent连接件是一种复合型组件连接,该连接能够提供通信、协调、转换、接通等服务,可以通过参数在组件间传递数据,通过服务请求、过程调用传递控制流,可以对传递的数据类型、格式进行转换或包装,以增强数据的互操作性,消除体系结构的不匹配,通过提供统一的接口增强组件生存环境的稳定性,可以通过交互控制连接关系的调整。

3面向Agent的软件开发方法

面向Agent的软件开发方法的基础是Agent元概念模型,其核心思想是:系统由一组Agent组成,Agent之间通过社会性的行为来实现系统的整体功能和目标。Agent间的社会不同于对象技术中的消息传递,而是基于某种Agent通讯语言的Agent交互以及在此基础上的复杂协同与合作。因此,开发Agent系统不仅需要涉及Agent体系结构、通信语言、合作模型、本体论、程序设计语言等具体的技术、模型和实现工具,更需要系统方法学以对Agent系统进行工程化的软件开发。研究人员已经提出了一些专用和通用的面向Agent的软件开发方法。目前,面向Agent的软件方法可以分为工程化方法和形式化方法两大类,而工程化方法对Agent和基于Agent系统构成的理解各有不同。由此出发,这些方法所依赖的理论基础与技术背景也有差异。基于此,我们将现有面向Agent的软件工程化开发方法正交地分为以下几个类别:(1)基于知识工程:该类方法应用知识工程的理论与技术对Agent系统进行建模,代表性工作包括MAS-CommonKADS、Commas等。其基本思想是,Agent是一个具有知识处理能力的实体。(2)基于对象技术:该类方法以面向对象软件开发方法学的理论和技术为基础,将Agent视为具有并发和自主特征的特殊对象,通过对已有面向对象软件开发方法的扩充来支持对基于Agent系统的建模。代表性工作包括AUML(AgentUML,简称Auml)和MaSE(MultiAgentSystemEngineeringMethodology,简称MaSE)方法。(3)基于角色模型等:该类方法借助于社会学和组织学等学科的理论,通过角色或组织概念来理解系统中的行为,将Agent视为系统中承担某个或某些角色的自主行为实体。角色限定了实体的行为规则、交互方式。实体的行为能力通过其承担的角色访问。这方面的代表性工作是Gaia方法。

4应用前景

基于Agent技术的技术优势,面向Agent的软件工程具有以下应用前景:(1)电子商务[4]:移动Agent可以以用户的身份在诸如采购、销售、股票报价等电子商务中进行操作和协商。(2)分布信息检索[5]:移动Agent可以调动多个搜索引攀在网上搜索信息。(3)监视[6]:Agent可以被发送去监视给定的信息源,等待指定事件的发生一旦事件发生,Agent开始执行程序的安排。(4)工作流管理系统[7]:在工作流应用软件中,同事之间的数据流使信息处理特征化,Agent可以提供给每个工作流项移动性、自治性、行为和信息流信息。(5)信息传播:移动Agent可以将信息(例如新闻)传播给一定数量的顾客Agent可以保证存取策略。(6)并行处理[8]:从原理上讲,移动Agent可以方便地实现分派并行进程。当环境发生变化时,移动Agent可以重新分派并行进程。(7)配置软件:软件移动Agent可以用来自动地安装软件包和更新软件。在将软件安装程序传到目标机器之前,移动Agent可以收集预装软件的环境信息、包括版本信息和可选附件信息Agent询问用户安装的相关信息解压缩软件包,编译软件,并更新软件的版本。

5结束语

面向Agent软件工程提供了有别于当前主流技术(如面向对象软件工程)的概念、思想、方法、语言和工具等来支持复杂系统的工程化开发,代表了一种新的软件开发技术和范型。近年来的研究趋势表明,面向Agent软件工程将与其他计算机技术之间具有密切的关系,如语义网格、对等计算、普适计算、网格计算、自主计算等。但是,AOSE远未成熟,离工业化、大规模的应用尚有很大的差距,尚不能为广大软件开发人员所接受。尤其是要成为一种主流的软件工程术还面临着一系列挑战性的问题,如:基础理论不完善、还没有走向标准化、许多关键技术有待突破等[9]。虽然,AOSE还面临许多问题和挑战,但今后AOSE一定会成为软件开发的主流技术。

作者:郑力明 李晓冬 单位:武警警官学院电子技术系

上一篇:安全漏洞检测计算机软件论文 下一篇:激光雷达技术原理教学法论文