软件Agent

2024-09-08

软件Agent(共7篇)

软件Agent 篇1

摘要:Agent正迅速成为一个十分重要的研究领域,但迄今却没有多少适宜的Agent开发语言。本文对目前的A-gent语言进行了分析和总结,认为JSP是Agent的最好开发环境。

关键词:Agent,软件系统

1 引言

Agent是近年来分布式人工智能领域研究热点之一。Agent内涵丰富,其含义随环境的变化而改变,至今还没有形成一个统一的定义。一种普遍的观点认为,Agent通常是指在一定环境中持续自主运行的实体,是一种帮助人们完成特定任务的软件。在网络环境中,它能够协助人们定位、存取筛选和集成,并能根据外界环境及用户要求的变化不断地调节自己。Agent的主要特点是自主性、社会性、交互性、进化性和可通信性。

现在大多数的软件工程方法学都是基于面向对象的方法。而商业性质MAS工程来说,急需面向Agent软件工程方对其进行指导。传统的面向对象的分析与设计是在面向对象编程出现之后才兴起的,但是Agent作为比对象更高层次的抽象,具有更智能、更灵活的性质,应该是在粗粒度的级别上来描述它。

目前关于以Agent为核心概念的面向Agent技术的研究十分活跃,也有一些应用,但这一领域仍然方兴未艾。从目前情况来看,面向Agent方法在分析与设计上已有许多研究且较成熟,但在实现上尚难找到一种成熟的、全新的面向Agent实现技术。

2 Agent语言

hoham提出面向Agent的程序设计后的最初几年,出现了多种Agent语言,主要有Agent0及其扩展PLACA、Agent-K、AgentSpeak(L)、ConGolog和3APL以及Concurrent METATEM、SLP等。近几年来,这方面的工作主要集中于Agent语言语义的研究、Agent语言的逻辑基础的完善以及各种语言相互之间的比较等方面。

相对而言,在这几种Agent语言中,Agent0提出得最早,最简单,同时又具备了必须的语言成分,因此是其他Agent语言的衡量基准。虽然有些文献给出了SAC-Agent0的操作语义,但因为没有涉及到Agent0的交互部分,因此这方面有待于进一步的工作。同时,Agent0的逻辑模型和程序模型之间的距离也有待缩小。AgentSpeak(L)的提出有其实际背景,并有严格的操作语义和相应的证明理论,但近年来缺乏进一步的细致工作。相对而言,以Koen V.Hindriks为主的研究群体对3APL进行了深入的研究,从最初的操作语义到指称语义和程序逻辑,关于通信的扩展,以及3APL和其他Agent语言的比较和模拟等。GOAL是他们为解决程序模型和逻辑模型一致性而给出的另一个Agent语言,但还只是一个原型语言。3APL的最大不足是缺乏对Agent交互的支持,其关于通信的扩展不能满足Agent交互需求,这方面的工作可能需要借助于标准的并发理论。ConGolog与前述几种语言不同,它是在Golog中加入并发成分发展起来的Agent语言,其基础情景演算在逻辑上已较为成熟,在机器人领域有较多的应用,但是ConGolog Agent不能显式表示思维状态,与BDI Agent有较大的差距。

3 Java优越性

近年来,Internet以迅猛之势发展,已成为世界上规模最大的计算机网络,Java的出现正好适应了Internet发展的需要,它所体现的简单、不依附平台、面向对象、分布式、可靠性、安全性、可移植性、动态性、多线程等特性,为Internet的使用提供了一种良好的运行和开发环境,成为Internet上最佳的程序设计语言。

一些学者总结了面向Agent编程语言的适用标准,即面向对象性、平台独立性、通信能力、安全性、代码可操作性,依据这一标准,用面向对象语言更容易构造Agent,而传统语言在这方面能力较弱。Agent实体的概念与对象的概念较为相近,均由属性和方法构成,通过发送消息或唤醒方法相互通信,使用典型的OOP概念如继承、数据封装。因此,面向对象开发方法与基于Agent系统开发方法有着紧密的联系。Java凭借平台独立性和安全性等优势,比其他语言更适合开发Agent系统,更符合面向Agent编程语言的适用标准。使用Java可以满足Agent的下列特性:

3.1 自主性

软件程序要想自主性,它必须是单独的进程或线程。Java应用是独立的进程,因而能长时间运行,并表现出自主性。

3.2 可移动性

Java虚拟机提供了一个相同的虚拟环境,允许Java Agent在不同的硬件系统中移动,例如从一个PC到N工作站,再到AS400系统。另外还提供了远程方法调用(Remote MethodInvocation;;RMI)和对象串行化(Object Serialization)这两种接口来开发分布式Java系统,二者皆有利于Agent的移动。RAH允许开发者从远程Java虚拟机的Java对象上调用方法。

3.3 智能性

Agent的智能范围可以从硬编码或面向对象逻辑到复杂的推理和学习能力。Prolog和lisp是常用的人工智能编程语言,近年来,许多商业化的AI系统是用C或C++编程的。面向对象编程语言提供了支持这些智能行为所有功能。

3.4 安全性

Java是唯一一种从设计的开始就考虑安全性的移动代码,虽然并不完美,Java却在程序的功能性和保护主机的安全性两方面达到了最大的平衡,并且Java非常适合从一个平台向另一个平台移植。

Java采用一个称为“sandbox”的模型来运行移动代码,不被信任的移动代码只能在sandbox中运行而不能进行多数针对主机的操作,比如读、写或删除文件、监听或接受网络连接等。当浏览器加载含有Java Applet的网页时,它从Web服务器上取Java的字节代码,然后将代码传给称为字节代码检验器的Java部件,检验器确保字节代码有正确的格式,不会超出内部堆栈的边界,这就防止了程序的崩溃。第二个Java部件是类加载器,决定一个Java Applet在何时、以何种方式将代码加入正在运行的Java环境,保证Applet不会取代任何级别的内容。每一个Java程序由一个或多个类、数据对象以及操作数据的方法所组成。当一个有潜在危险的方法试图运行时,安全管理器就会起作用,是否运行这种有潜在危险的方法取决于需求此种方法的类来源于何处。举例来说,内部本身的类比通过网络获取的类具有更大的特权。任何下载并运行外来可执行程序,以及在运行时动态链接由无名编程者创建的类的应用程序,都可能成为危险因素。Java小应用程序如得不到有效约束,有可能欲用来成为计算机病毒。用户在下载了一个小应用程序时,他无法确定这个小应用程序是否执行了期望的行为,而没有进行非法行动。某些Agent的移动特性,特别是Java小应用程序,对Java的安全模型提出了更高的要求,这种要求超越了以往任何编程语言。

除上述几点,JavaBean也对Agent系统具有重要意义,JavaBean为Java提供了基于组件的开发体系。组件模型允许开发者重用已有的软件模块(组件)建造应用,而不必从头起。事件型(Event Model)允许分布式动态组件之间的通信。每一JavaBean使用自检机制提供一系列它可以触发的事件,如果JavaBean对其中的某一个事件感兴趣,开发者必须应用所谓的“侦听器”监视一个JavaBean触发另一个JavaBean的事件。

另外Java作为一种网络编程语言,其多平台支持性[write-once,run-anywhere)等使之成为开发移动Agent系统的首选语言。此外,普遍存在的Java虚拟机也有助于促进移动Agent在Internet上的广泛传播移动Agent已经成为设计、实现及维护分布式系统的主要工具,它具有传统client/serve体系结构所无法比拟的优越性。而Java语言作为跨平台网络编程语言,其自身所具有的特点与实现移动Agent的需要恰好吻合,使其成为设计移动Agent系统的首选语言。

4 Eclipse平台体系结构

Eclipse的最大特色就是其具有插件的体系结构。插件模型体现的是从已经存在的部件来创建新的应用的一种体系结构模式。具体来说,Eclipse是专门为创建IDE的IDE平台,也就是一个可扩展的IDE平台。它提供核心服务把一些工具集成到一起,提供一个应用框架来支持开发人员的工作。工具的创建者把他们的工具封装起来作为可插入的部件放入E-clipse平台,这些可插入的部件称之为插件,它们遵从Eclipse平台的插件协议,将在后边介绍这些协议。它的核心概念和工具支持一种通用的模型,通过这种模型,可以把不同软件供应商提供的部件组合起来形成新的应用。

由于有了插件,Eclipse系统的核心部分在启动的时候要完成的工作十分简单:启动平台的基础部分和查找系统的插件。在Eclipse中实现的绝大部分功能是由相应的插件完成的,比如Workbench Ul插件完成界面的外观显示,ResourceManagement插件完成维护或生成项目或文件等资源管理工作。虽然以上提到的每一个功能都是绝大多数IDE环境所必备的功能,Eclipse却把它们都做成了插件模式,甚至用来开发Java程序的开发环境,JDT只不过是Eclipse系统中的一个普通插件而己。整个Eclipse体系结构就像一个大拼图,可以不断地向上加插件,同时,现有插件上还可以再加插件。

5 Eclipse的Java开发环境

Eclipse是一个功能强大的IDE,使用它可以方便地开发Java应用。它内置了一个Java调试器。该调试器不仅提供诸如单步执行、设置断点、检查变量以及暂时挂起和恢复线程等标准调试功能,而且提供了代码片段编辑测试窗页面和远程调试等功能。

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet和JSP配合才能完成。JSP具备Java技术的简单易用、完全面向对象、具备平台无关性且安全可靠、主要面向Internet的所有特点,可以在Eclipse环境下搭建一个JSP的开发环境进行有关Agent方面的开发。

6 结语

综上所述Java用于开发Web应用软件方面有很大的优势,Java语言并不是开发Agent语言的唯一语言,它在表达Agent信念、意愿、承诺方面有所不足。由于Eclipse环境是以插件形式提供的,以后可以在不足之处,加紧插件的研究。有理由相信,在JSP环境中开发Agent将越来越美好。

参考文献

[1]周金陵,孙艳.基于多Agent技术的分布式测控系统研究[J].微计算机信息,2003.9.

[2]石纯一,张伟等.Agent研究进展.

[3]刘甘林.基于Java的软件Agent实现技术研究[硕士学位论文].国防科学技术大学研究生院,2004.

[4]宁红岩,启小刚.开发Agent的得力工具:Java.计算机工程与应用,2001.

[5]路川,胡欣杰等.用JAVA实现agent的网络安全[J].微计算机信息,2004.

[6]张浩,骆正虎,杨敬安.基于Java语言的移动Agent开发平台.合肥工业大学学报,2001.

[7]刘君.基于Java的Agent研究.计算机测量与控制,2005.

[8]李蛟.基于Eclipse平台的Agent集成开发环境的研究与实现[硕士学位论文].天津大学,2004.

[9]叶达峰.Eclipse编程技术与实例.人民邮电出版社,2006.

[10]飞思科技产品研发中心.JSP应用开发详解.

[11]陆寅毅,曹家麟.Java Applet与ASP相结合的Web数据库编程[J].微计算机信息,2000.

面向Agent的软件工程 篇2

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

软件Agent 篇3

关键词:AOSE,Prometheus,SONIA,AUML

0 引言

面向对象的计算思想强调直接从待解的问题域出发, 认为现实世界是由具有本质特征的事物组成, 可以根据这些本质特征将其抽象为系统的基本单位—对象, 通过对象间的分工和合作构成现实世界运行, 并利用封装、继承等机制来构建计算系统。而面向Agent的计算是一种基于Agent社会观的新兴计算模式, 其思想是从人类、事物和环境的现实世界出发, 强调事物的属性是动态的, 且在很大程度上受到与其密切相关的人和环境的影响, 将影响事物的主观和客观特征相结合, 并抽象为系统的基本单位—Agent, 通过Agent的协商、合作来实现系统的整体目标。

与面向对象的思想不同, Agent通过引入心智属性, 一方面将人类主观意识与客观世界紧密结合, 另一方面使得Agent对环境的感知在经过一系列的心智活动后, 能相应地调整其解决问题的意图和策略。因而面向Agent方法更贴近客观世界的真实情况, 更准确地反映了客观世界事物之间的深层联系及其静态和动态特征的本质和根源, 更接近人类解决问题的一般方法和习惯。

1 面向Agent软件工程方法

面向Agent软件工程 (Agent—Oriented Software Engineering AOSE) 研究有效的面向Agent的软件方法和支持方法的工具, 用以开发高质量的复杂软件产品—多Agent系统 (MAS) 。AOSE的方法是基于Agent交互和组织关键抽象集问题域和计算域建立模型的原则和活动集。AOSE方法可以分为形式化和非形式化两类。

(1) 形式化方法:形式化方法以数理逻辑作为模型语言。认为形式方法的过程由系统规范、系统实现和系统验证三个阶段组成。系统规范是说明Agent系统的框架。目前最成功的框架是用时序模态逻辑表示的规范, 两个著名的逻辑框架是Cohen-Levesque的意图理论和Rao-Georgeff的BDI模型。系统实现将抽象规范转换为具体的计算系统。系统实现有解释执行和编译两种方法, 解释执行是指给定用逻辑语言L描述的系统规范S, 将S作为执行规范, 直接解释S以产生Agent行为;编译是把Agent规范通过自动编译过程将抽象的规范转换成具体的计算模型, 编译后的系统执行很少或根本不需要进行符号推理。系统验证用来确定计算系统是否正确地实现了规范。系统验证可分为公理验证和模型检查两种方法。

(2) 形式化方法的主要问题在于以下几点:

(1) 时序模态逻辑的可能世界语义存在逻辑全知问题, 认为Agent具有无限的推理能力, 而实际的Agent无法满足这种要求。

(2) 可能世界语义缺乏现实基础, Agent状态的抽象表示与具体计算模型没有直接的联系。

(3) 对交互、组织的形式化描述问题研究不足。

(3) 非形式化方法:非形式化方法以图、表、文本等作为模型语言。相对于形式化方法, 非形式化方法的研究比较活跃。以下是集中非形式化方法的介绍。

(1) Prometheus是基于功能分解的方法, 使用文本和AUML作为模型语言, 其过程分为系统说明、结构设计、细节设计三个阶段。Prometheu的目标是为开发者提供一个包括全部开发活动的、迭代的、具备模型一致性检查能力的方法。Prometheus将待求解问题划分为Agent系统和环境两部分, 将从环境的输入信息称为感知, 将Agent系统对环境的影响称为行动。

(2) ODAC使用RM-ODP (开放分布过程参考模型) 的框架和模型, 以UML作为模型语言, 其过程分为分析、设计和实现三个阶段。ODAC的目标是以标准化的方法有效降低由复杂软件系统的分布性而产生的开发难度。RM-ODP是由ISO和ITU-T共同制定的开发分布式系统的结构框架, 包括对象模型和结构模型两部分, 结构模型含有企业、信息、计算、工程、技术等六个视图, 其中企业视图由企业对象、对象社会等组成, 计算视图描述交互等分布式计算结构。ODAC的设计和实现阶段目前仍在发展中。ODAC的主要问题是没有区分Agent与对象, 使用UML作为模型语言不能充分描述AOSE的关键抽象集。

(3) SONIA的目标是使用独立于设计的一般性分析方法和自底向上识别Agent的设计过程, 以自然的方式开发Agent系统。SONIA分析阶段使用问题域术语为模型语言, 设计阶段没有指定模型语言。SONIA的主要问题是没有建立组织模型, 分析与设计阶段使用不同的模型语言, 不利于分析模型到设计模型的平滑转换。

(4) 将已提出的非形式化方法划分为以下三类:

(1) 基于Agent和多Agent技术的方法。该类方法将Agent作为与传统对象不同的新抽象, 如Gaia、SONIA等。

(2) 基于面向对象技术的方法。该类方法将Agent作为复杂对象, 扩展OO技术以表示Agent的复杂行为, 如Prometheus、ODAC、Ma SE等。

(3) 基于知识工程的方法。该类方法着重于对Agent使用知识的识别、获取和建模, 如MAS-CommonKADS。

(5) 非形式化方法研究存在的主要问题是:

(1) 没有形成较一致的Agent、交互、组织建模原则。

(2) 求解结构是固定的, 不能体现Agent灵活的问题求解能力。

(3) 没有对Agent本身具备的独立控制线程的控制机制建模。

(4) Agent模型达不到系统级抽象程度和粒度的要求。

(5) 使用自顶向下的分解还原方法而不是复杂系统要求的综合集成方法。

2 面向Agent软件工程工具

2.1 Agent统一模型语言 (AUML)

统一建模语言 (Unified Modeling Language, UML) 是一种图形化的表示语言, 最初用于标准化对象类的设计, 后来被扩展为支持面向对象系统中所涉及的所有部件。如组件、包等。Odell, Parunak和Bauer提出了AIP (Agent Interactions Protocols) 的三层表示模型。在UML的基础之上进行了扩展。扩展后的模型被定义为AUML (Agent UML) 。在AUML中。对UML中的其本元素作了适当的改变, 主要包括:包 (Packages) 、模板 (Templates) 、序列图 (Sequence Diagrams) 、合作图 (Collaboration Diagrams) 、活动图 (Activity Diagrams) 和状态图 (Statecharts) 。OMG和FIPA (Foundation of Intelligent Physical Agent) 都支持扩展UML作为Agent统一模型语言 (AUML) , 主要扩展工作包括:

(1) 扩展包和模板描述交互协议。

(2) 扩展UML中的类图、对象图以允许Agent承担多个角色。

(3) 扩展动态模型中的顺序图、协作图、状态图等支持并发描述, 使UML能够描述Agent的复杂交互行为。

(4) 扩展部署图支持描述Agent的移动性。AUML研究存在的主要问题是扩展工作集中于描述Agent的描述。

2.2 开发工具

开发工具大多基于Java语言, 如ZEUE, JACK等利用Java语言的解释执行、支持分布式计算、平台无关等特性满足复杂软件系统开放、分布、异构的要求, Java环境是多线程的而且内置多线程控制, 支持Agent的多线程运行。

3 结束语

面向Agent软件工程是软件工程领域重要的新技术, 发展有原则的非形式化Agent系统开发方法是Agent技术被广泛使用的根本。Agent理论和技术源于人工智能领域, 在AI的研究中Agent的对应物是人, MAS的对应物是人类社会, 人和人类社会是社会学的研究对象;AOSE的目标是建造具备正确性、可维护性等质量因素的高质量多Agent系统, 社会学是研究人类社会良性运行和协调发展的条件和机制的综合性具体社会科学;MAS本质上是自底向上建造的系统, 人类社会本身也是自底向上形成的复杂系统;面向Agent编程范型是一种计算的社会观点, 而人类社会是开发者最为熟悉和理解的社会, 因此我们认为以社会学理论为原则的非形式化Agent系统开发方法是AOSE的下一步发展方向。

参考文献

[1]Lin Padgham and Michael Winiko.Prometheus:A brief summary.Technical note, available from the authors.2003.

[2]Weiss G.Multi-Agent Systems:A Modern Approach to Distributed Artificial Intelligence[M].Cambridge, MA:The MIT Press.2005.

[3]M E Bratman1 Intentions, Plants, and Practical Reason[M].Cambridge, MA:Harvard University Press.1987.

软件Agent 篇4

一、Agent定义和特点

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

二、Agent与对象的比较

Agent的概念可以看作是面向对象概念的一个延伸, 它是对现实世界的更高层次上的抽象。以下简要概括了Agent与对象的区别:

对象可以看作是一个被动的实体, 只能由外部的消息控制。外部的消息快递可激活其内部的方法, 对象方法的变化可以改变属性特征及其行为。Agent是一个活动的自治实体, 具有自主性, 具有自己的目标和行为, 可由外部激励或内部状态而启动, 能理解信息并控制自己的行为。Agent与对象的不同导致了我们在对Agent的心智构件——信念、愿望和意图进行建模和设计时难以采用应用面向对象的方法学。

三、两种基于Agent的开发方法和体系结构

不同于其他软件工程技术, 面向Agent软件工程的研究借鉴和集成了其他学科的知识和研究成果, 包括社会学、组织学、认知科学、经济学等, 从而为复杂系统的开发提供更为自然、抽象的技术手段。下面我们对两种较为主流的方法进行探讨:

(一) Gaia方法学

Gaia方法学是把多Agent系统看作一个由相互作用的不同角色组成的计算组织, 它不仅支持Agent的群体智能及其组织结构, 而且支持Agent的内部结构。在Gaia系统中, 角色是主要组成部分, 角色有职责, 权限, 活动和协议等属性。

Gaia方法中Agent的体系结构:各种服务作为一个组件能够被动态的装卸, 每个服务以两种角色存在, 一种是协调者的角色, 另一种是客户角色, 服务部署层来决定唤醒那一个服务角色。系统管理服务发现在它附近的设备、协调设备加入系统和管理系统。事件服务管理系统中设备之间事件的通讯。本地服务融合系统中来自不同设备的本地信息, 对整个系统提供设备的信息。安全服务主要由两部分组成:授权和存取控制。服务交互层被用作内部个人空间的通讯。

Gaia也存在一些缺点, 比如Gaia没有处理系统中有多个Agents共享同一个目标的情况, 对多Agent系统的处理有一定的困难。

(二) Tropos方法学

Tropos方法学使用了代理 (Agent) 、目标 (Goal) 、规划 (Plan) 、资源 (Resource) 和其他不同知识层次的概念等基本原语, 采用了战略依存模型 (Strategic Dependency Model) 。这个模型把参与者 (A-gents, Roles, Positions) , 目标 (Goal) 和参与者之间的依存关系 (Actor Dependency) 作为在需求工程早期阶段建模的原始概念。在i*中主要有四种依存关系:目标依存、任务依存、资源依存、软目标 (性能、安全性等) 依存, 如图1。

Tropos把参与者和目标作为最基本的概念应用到了软件开发的全部过程中, 它主要支持软件开发过程的以下五个阶段:1) 早期需求, 这个阶段的输出包含相关参与者和它们对应的依存关系的组织模型;2) 后期需求, 在运行环境、相关的功能和质量范围内描述未来的系统;3) 架构设计, 根据子系统的概念定义全局架构;4) 详细设计, 此阶段, 根据输入、输出、控制和其他相关的信息更具体地定义每个架构部件;5) 实现, 根据详细设计实现系统。

基于Agent技术的Tropos方法同样具有缺点, 此方法缺乏对社会结构和环境的描述, 而且因为支持工具的限制, 其作为一种适合描述的概念更为合适。

四、结论与展望

基于Agent的软件工程提供了有别于当前主流技术 (如面向对象软件工程) 的概念、思想、方法、语言和工具等来支持复杂系统的工程化开发, 代表了一种新的软件开发技术和范型。近年来的研究趋势表明, 面向Agent软件工程将与其他计算机技术之间具有密切的关系, 一方面, 这些研究方向试图将A-gent理论和技术用于其特定问题的解决 (如资源和服务的发现与协同) , 从而对面向Agent软件工程提出了明确甚至是新的要求;另一方面, 通过与这些计算机技术相结合, 拓宽了面向Agent软件工程的应用领域和范围, 为面向Agent软件工程与各种主流技术相结合, 走向大规模、工业化应用提供了应用背景。

摘要:基于Agent的软件工程 (ABSE) 方法, 是软件工程领域的一种新方法, 与现有的开发方法相比, Agent具有较强能力可以对复杂软件系统中的活动实体进行高层抽象。本文阐述了Agent技术的定义、特点, 分析了Agent与对象的异同, 对基于Agent的软件工程方法其中两种主要方法从原理, 建模和体系结构等方面进行了探讨。

关键词:Agent,软件工程,建模,体系结构

参考文献

[1]毛新军, 常志明, 王戟等.面向Agent的软件工程:现状与挑战[J].计算机研究与发展, 2006.

[2]肖政宏, 梅晓勇, 周学清.面向Agent软件的体系结构研究.湖南文理学院学报 (自然科学版) , 2005.

软件Agent 篇5

1 案例推理

案例推理 (CBR) 是一种利用类比推理方法的心理学方法而产生的推理方式, 它基于问题求解过程中依赖于以往处理类似问题的经验和知识, 再针对新情况调整, 进而得出新问题的求解方案, 同时形成新案例。CBR方法能更加简便、快捷地获取知识, 同时提高推理的质量和速度[1]。

CBR的核心是:不必从头开始进行问题求解, 而可以使用类似问题的求解经验。在设计给排水设计过程中, 可以采用CBR思想将历史设计用于当前, 在生成新的设计时可以充分利用以往的成果从而避免了部分重复劳动。但是, 使用传统CBR系统缺乏自主性、灵活性和协作性, 无法考虑到多方的利益诉求和博弈。

2 案例agent

agent是能完成一种或者多种功能的软件模块。它在一定的环境中独立, 具有一定的推断力和自主性, 同时能与系统中其他代理通信, 并能对环境做出反应。而多代理 (Multi-Agent) 较好地解决了分布式系统中的通信和交互问题, 可以实现协同工作[2]。

常规CBR案例库无法拥有自主行为, 由案例检索控制模块进行控制。常规CBR系统引入Agent技术后, 可以改造为具有感知和服务能力的案例Agent。

案例Agent可以主动提供用户所需的信息, 并能够感知环境的变化与需求。重要的是, 案例Agent能与其它Agent进行通讯和协同, 从而完成复杂问题。由于案例Agent具备常规CBR系统没有的灵活性、自主性与协作性。如果将案例agent模块加入到现有的给排水设计软件中, 可以实现设计过程的改善。

3 给排水设计方案生成系统

给排水案例Agent的结构如图1所示。

它由五个模块组成。其中通讯模块获得、定义和选择给排水案例Agent得到的信息, 并与系统中其它部分之间进行信息交换。规划求解模块是主要功能部分, 它根据感知的信息, 确定求解策略, 进行求解。具体的功能包括案例检索、案例修改等。认识学习模块充分应用案例Agent的智能, 案例Agent内部通过学习发生相应的变化, 包括案例评价、案例管理等功能。给排水知识部分包括一个给排水方案库, 以及在给排水设计所需要使用的其它知识, 如国家标准、行业规范等。协作模块完成案例Agent与其它Agent相互协作的功能。

利用案例Agent的自主性、灵活性和协作性将传统的CAD设计系统中加入案例Agent, 对设计与协作能力都有很大的提高[3]。

生成的包含案例agent的给排水设计软件系统结构如图2。

该系统设计成分布式网络, 其中包含了给排水案例Agent。设计师通过通讯模块与给排水案例Agent的内部进行通讯, 由给排水案例Agent生成设计方案并提交给系统, 设计师得到该设计方案。给排水案例Agent中包含了案例库、案例检索、案例修改、案例库管理等模块, 功能也得到了进一步的加强。为了实现评价和交互, 在系统中还预留了其他Agent接口, 业主、顾问方、施工方都可以以Agent的形式加入系统, 协同完成设计和评价。同时设置了专门用于控制设计过程的控制Agent。

4 结束语

本文提出的包含案例agent的给排水设计软件系统采用分布式体系, 通过多个Agent协同工作, 完成给排水设计。同时, 多agent的应用能够更好地进行设计方案的评价和修改。

参考文献

[1]孙锋.基于案例推理的保险欺诈案例分析系统设计[J].闽江学院学报, 2008, 29 (5) :31-34.

[2]金士尧, 黄红兵, 范高俊.面向涌现的多Agent系统研究及其进展[J].计算机学报, 2008, 31 (6) :881-895

软件Agent 篇6

多Agent系统是近年来在人工智能研究领域衍生出来的新概念, 指的是由若干Agent经过协作完成一些任务或达到特定目标的高级计算机系统。基于多Agent结构的系统具有传统分布、并发优先求解的特性, 且具有较为复杂的交互模式, 实际的运行效率较单一Agent系统而言也得到了大大的提升。

2 系统总体应用结构概述

基于多Agent的软件总线系统以软件总线为核心模块, 并结合了多种Agent, 具体来说, 功能如下:

2.1 客户Agent

完成系统中客户端请求的服务是客户Agent的主要功能, 在系统的设计中需要为每个客户端请求构建一个专门的A-gent, 而这些Agent在平时的运行中需要通过不断监听总线状态的的方式来决定是否需要向服务器发送请求。同时, 每个Agent的运行都是独立和并行的, 能够实现与链接Agent的直接通信。

2.2 服务器Agent

在多Agent软件总线系统中, 每个服务器也都配备了一个Agent。服务器Agent的功能与客户Agent的功能十分类似, 所不同之处在于它是用于为系统的运行提供服务的。具体来说, 系统每次通信之前, 服务器Agent都会预先感知总线的状态, 判断当前的通信环境是否适合进行通信服务。假如环境合适, 服务器Agent便会通过链接代理Agent进行登记, 做出系统服务器可用于提供服务的标志;反之, 当前的环境不适合通信活动或服务器的通信出现了故障, 则服务器Agent也会及时通知链接代理Agent, 使接下来的通信活动受到阻止。

2.3 链接处理Agent

在本系统中, 链接代理Agent是核心模块, 起到为客户端和服务器之间的通信提供桥梁的作用。在正常情况下, 链接代理Agent将服务器与对应客户端程序的请求进行对接, 并构建一条专用的数据通信通道。倘若系统通信功能出现异常, 例如系统中的某个服务程序出现问题不能提供服务, 那么链接代理Agent便能及时发现该问题, 并对问题出现的点进行准确地定位, 将出现问题的程序服务器从维护列表中删除, 从而保证系统的正常运行。

2.4 安全管理Agent

安全管理Agent是系统安全、可靠、稳定运行的“维护者”。在系统运行时, 安全管理Agent会充分利用操作系统中的安全机制为分布式应用系统的安全运行提供保障。例如, 通过存取控制、稽查控制、认证控制和存取策略控制等方式严格监控系统的运行, 一旦系统受到外来因素的干扰或破坏, 安全管理A-gent便会以人工智能的自适应方式对外来干扰或破坏因素进行阻止, 从而保证系统的稳定和安全运行。

2.5 事务处理Agent

在实际的运行和应用过程中, 事务处理Agent主要采用两段式数据提交过程完成事务的日常处理。具体来说, 这是由一个挂接在软件总线上的事务处理构建完成的数据二次处理过程。事实上, 一次数据提交的过程便可称为事务处理Agent的一个事务过程, 在该过程中, 事务处理Agent能够实现对事务过程的全程监控。当服务器数据提交出现失败时, 事务处理Agent能够自动进行回滚, 从而实现两段式数据提交。

3 系统的应用过程

基于多Agent的软件总线系统在实际应用时, 过程如下所示:

1) 客户端Agent提出数据提交申请。在软件总线的辅助下, 客户端Agent首先通过链接代理Agent建立与服务器Agent的链接。链接代理Agent相当于一个连通客户端Agent和服务器Agent的桥梁, 数据通过它在服务器Agent和客户端Agent实现了双向交流。

2) 事务处理Agent进行数据提交。在客户端Agent提出数据提交申请后, 事物处理Agent便开始发挥它的作用, 将相应的数据提交到服务器Agent中, 服务器Agent对提交的数据进行检测、核对后, 若确认无误, 会将此段数据提交给数据库;若核对后发现数据存在片段缺失或有效性降低等误差, 便会自动将该断数据返回, 让客户端Agent提出二次申请要求。

3) 事务处理Agent发出数据确认信号。当数据提交操作完成后, 事物处理Agent便会向服务器Agent再次发送一个数据提交确认信号, 服务器Agent接收到该信号后, 进行自适应判断, 以确认信号得到了有效接受和处理。这便是多Agent的软件总线系统的数据二次确认阶段。

4 结语

本文对基于多Agent的软件总线系统的结构和数据应用流程进行了简要分析。随着网络技术的普及, Agent技术得到了迅速的发展, 而多Agent系统也成为了人工智能领域研究的关键问题。随着研究的不断深入, 将多Agent系统应用到家庭网络传输、个性化智能家居控制等领域也将成为现实。

参考文献

软件Agent 篇7

随着越来越多的机构在IT平台上运行核心业务,系统整体性能的测评成为研究的热点。由于系统的软硬件、网络及其配置会影响结果并且互相作用,使得分析、发现和判断问题变得较为复杂。本文结合Agent技术的发展,采用多Agent架构和网络数据流分析的方法来实现系统性能评价。此方法的分布式和智能化使其不但可以适用于C/S或B/S架构的应用系统,还可以适应新型软件系统如端到端(P2P)系统、面向服务架构(SOA)的性能评价需要。通过应用系统的网络数据流的智能收集、分析和回放来实现性能评价,既包含了主动测量的方法,也包括了被动测量的理论。智能代理捕获网络数据流分析是被动测量的部分,而改变相关参数设置并回放给应用系统是主动测量的方法。

1 性能测试平台的框架设计

基于多智能代理的检测机制是人工智能技术与测试技术的结合。基于Agent的计算为分布式、多人机交互的复杂问题提供一种有别于传统确定问题求解的解决方式,被广泛应用于分布式控制、复杂问题仿真等领域。基于Multi-agent的分布式智能检测平台,主要包括单个Agent的智能推理、Agent间的协作通信、根据系统架构和不同指标的检测需要布置Agent以最小化对业务流程的影响以及检测分析结果的多维度表达形式。信息采集Agent对于网络流量的检测,可设计为支持协议分析识别常规网络应用,也可分析P2P业务流,通过协议解析、模式匹配和关联等方法标识所收集和反馈的信息,以TPS等代表度量结果,运用时域、地址等匹配消除冗余度量信息,给出多维度统计分析结果。软件性能的评价指标体系不限于单个指标,可以依不同应用形成评价子目标。实践时可结合各子目标的评价实践,将各评价子目标迭代分解成若干个可评价的基础指标,同时得到反向合成评价子目标的方法。

多智能体环境下,多个智能体可以合作或者竞争,本设计采用合作的模式,协同完成团体规划的目标。协同Agent协调各位置不同类型的智能代理完成各自目标,再通过这些节点之间的通信协作,实现整体目标,获知整个系统的性能指标和系统瓶颈。各类Agent采用适用于软件性能检测的推理规则和信息交换格式,通过网络设备或计算机上的监控程序实现。协同Agent还可采用多种统计分析格式解析软件性能。实现上首先分析应用程序模型和网络模型,寻找关键链路和性能相关的关键服务,作为相应的数据源提交给相关智能代理。之后智能代理对数据流进行重构,记录重构结果,提供智能算法的介入和实现。设计的第1步是从系统应用服务(Service)的角度将性能核心服务区分出来并用标准架构表达;设计的第2步是将Agent进行区分,之后的设计就进入细化评价方法的实现。在常见的瘦客户端大服务器端环境下,只在极少数情况下,性能瓶颈发生在客户端或者浏览器端,即使发生,在很大程度上也和网络的某些特性相关联。因此将评价设计的重点放在服务器端。

2 性能评价方法的实现

根据设计框架,需要展开设计的内容包括定义系统的性能核心路径,采样关键应用链路的数据流,分析和提取核心内容,定义智能代理的处理过程,编程实现其收集、通讯和交互过程。Agent以并行线程进行模拟和交互,向服务器端提出应用请求,获取服务器端反馈、分析、通讯和汇总,从而获取性能评价的结果。Agent可以代理其他工具如Ttcp、ping、Smartbits等的一个输出信息,给出统一定义格式的数据内容。系统的性能核心路径采样关键应用链路的数据流的设计,一对代理A和B用于同步测试和监控并通讯协商过程。为简化试验环境用户User执行一次性的被统计操作,节点的Agent暂且只设置A、B两点位于系统前端和后端同步监控和协作控制。用于学习的一次性的操作由User发起,代理标记为XML,测试时由前端A点发起主动网络数据流,如增加到其他多点可依此娄近体推,其表达如下:

评价的结果用每分钟处理的事务数量(TPM)或每秒处理的事务量(TPS)来表示。对于任意的信息系统,没有统一的性能评价目标,意味着同步提交N个业务请求系统可以在给定时间T分钟内正确完成N个事务,那么其TPM结果就是N/T。正确完成事务的标志,在此模型定义为由系统的压力和负载处理情况的临界参数来反映。系统的响应出错比率达到1%或2%时,可认为达到临界状态。这个比率随着系统的重要性的不同进行调整。另一个达到临界状态的标志是,传输时间是理想情况传输时间的两到三倍,数据均通过响应统计Agent收集。

此方法的优点在于测试并非启动真实的客户端。因此无须对客户端进行任何配置和修改,不需要完整了解原应用的设计细节,尤其适合在文档不完整、应用架构复杂的情况下进行性能测试。同时这样的方法也使得动态调整响应参数成为可能,Agent可以就特殊的响应给出新的特殊请求。因此可以高度仿真真实流量及其交互过程。鉴于此方法的整个过程无须系统使用者和系统设计者介入,而且系统实测的大量数据收集工作在系统的远端即可完成,因此有较好的实用性。测试要规避的风险是测试数据流和系统拒绝服务攻击(DOS)的区别。

3 测试实例

测试实例是一个电子商务平台的性能测试。系统采用三层架构电子商务模式,将Web服务器、中间件服务器和数据库服务器设置为独立的层次组件,每层组件包含负载均衡的两个Cisco交换设备,联入各层的多台服务器,服务器也采用两台冗余备份方式。因此系统设计从网络设备和各层的系统平台均考虑了设备的冗余和负载均衡。应用系统是基于J2EE架构开发的B/S应用系统。业务内容是为外网用户提供业务的查询、选择、提交、反馈等。此项性能测试设计对缓冲队列长度(模拟浏览器方式)、连续串行请求下的长时间运行(模拟浏览器方式)、并发性能(模拟Java客户端方式)等内容进行测试,同时考察网络客户端与前台服务器之间的互连、关键链路流量分析、应用服务器吞吐流量分析等方面。测试发现同一系统平台上的多个应用性能差距悬殊。某业务组件处理能力仅为0.03TPS,远低于平均水平。此时其它监控点均显示低负载,如CPU利用率低于35%,网络带宽利用率小于2%,证明该系统瓶颈为部分软件组件质量。压力密集时还发现出错集中在某台服务器上,后续发现其配置不当也成为瓶颈之一。

4 结束语

提出了基于多智能代理的网络数据流进行软件性能测试的方法,分析了常见的业务模型中的关键链路和业务的关键流量模型,进行了协议分析和数据处理阐述其工作原理。基于网络数据流量的软件性能测试方法在一个真实运营的系统中进行了测试实践。实践证明此方法可有效获取所需性能评价结果,定位性能瓶颈,且具有独到的优势。

参考文献

[1]支晓繁,张世永.信息系统安全量化评价要素研究[J].计算机工程,2004,(10):48-51.

[2]丁月华,王方丽.基于Web软件的性能测试[J].计算机与数字工程,2006,(01):72-74.

上一篇:教学弊端下一篇:《小伙伴》教学设计