CN431258/TPISSN1007130X计算机工程与科学COMPUTERENGINEERING&SCIENCE2011年第33卷第6期Vol33,No6,2011
文章编号:1007130X(2011)06007207
面向Agent的软件设计模式*
AgentOrientedSoftwareDesignPatterns
毛新军,常志明
MAOXinjun,CHANGZhiming
(国防科学技术大学计算机学院,湖南长沙410073)
(SchoolofComputerScience,NationalUniversityofDefenseTechnology,Changsha410073,China)
摘要:设计模式针对一类在特定上下文中反复出现的问题给出了通用解决方案,模式的提取和重用
有助于提高软件开发的效率和质量,其思想和方法已在面向对象软件工程中得到广泛应用和验证。我们认为同一问题采用不同的实现技术往往具有不同的设计形态,不同软件开发范型也有其各自不同的设计
模式。作为一种新颖的软件开发范型,近年来面向Agent软件工程的研究取得了长足进展,如何提高软
件Agent技术实用性,发挥其技术潜力,扩大其应用范围成为当前人们关注的焦点。本文将模式思想引
入到面向Agent软件工程,针对软件Agent技术的特点,从组织结构、交互协作和个体Agent体系结构三个视点提出了一组面向Agent的软件设计模式,以支持多Agent系统的设计;并进一步给出了面向Agent
设计模式的描述框架,进行了典型设计模式和应用案例的分析。
Abstract:Designpatterngivesgeneralsolutionstotherepeatedlyoccuringproblemsoncertaincontexts.Ithasbeenwidelyusedinobjectorientedsoftwareengineeringandprovedtobehelpfultoim
provethequalityandefficiencyofsoftwaredevelopment.Webelieve,thesamedesignpatternwillhave
variousdesigndetailswhenadoptingdifferentimplementationtechniques,anddifferentsoftwaredevel
opmentparadigmshavetheirdesignpatterns.Asanovelparadigm,agentorientedsoftwareengineeringhasmadegreatprogress.Nowadays,manyfocuseshavebeenputonhowtoimproveitspracticesandto
extenditsapplications.Inthispaper,patternapproachisintegratedwithagentorientedsoftwareengi
neering.Basedonthecharacteristicsoftheagenttechnology,anumberofagentorienteddesignpatterns
havebeenpresentedfrommultipleviewpointssuchasstructure,collaborationandagentarchitecture.Adescriptionframeworkforagentorienteddesignpatternispresented.Ananalysisofthetypicalagento
rienteddesignpatternanditsapplicationcaseisconducted.
关键词:Agent;设计模式;多Agent系统;面向Agent软件工程Keywords:agent;designpattern;multiagentsystem;agentorientedsoftwareengineering
doi:10.3969/j.issn.1007130X.2011.06.015
中图分类号:TP311文献标识码:A72*收稿日期:20090520;修订日期:20091026基金项目:国家自然科学基金资助项目(60773018)通讯地址:410073湖南省长沙市国防科学技术大学计算机学院Address:SchoolofComputerScience,NationalUniversityofDefenseTechnology,Changsha,Hunan410073,P.R.China1引言
近年来,面向Agent软件工程的研究取得了长足的进展,人们提出一系列面向Agent建模语
言、开发方法学、程序设计语言和支撑软件环境[1]。
然而,软件Agent技术并没有像人们所期望的那
样为软件工程实践人员所接受并在工业范围内得到广泛应用。究其原因,就是面向Agent软件工
程的研究未能将软件工程中有效的技术手段与软
件Agent技术相结合,从而在发挥软件Agent技
术潜力的同时,使得软件开发人员能够继承以往的软件工程实践经验。因此,如何将传统软件工程的
有效技术手段(如MDA、模式、重用等)引入到面
向Agent软件工程领域成为当前面向Agent软件工程研究的关注焦点之一。文献[1]认为:对设计
模式及软件重用的研究对面向Agent软件工程走
向大规模的工业应用非常关键。
设计模式针对一类在特定上下文中反复出现的问题,给出了良好的、经过充分考验的设计实践。
模式思想和方法已经在面向对象软件工程中得到
广泛的应用。大量的软件工程实践表明,显式地定义和有效地使用设计模式可以显著提高软件开发
的效率和质量。文献[2]指出,在现有的各种收集
和表述软件工程实践经验的技术中,模式是最为有
效的技术之一。因此,将模式思想与软件Agent技术相结合将有助于丰富面向Agent软件工程的
研究,促进软件Agent技术的工业化应用;发现和
寻求软件Agent技术所特有的设计模式将有助于更好地挖掘软件Agent技术的潜力,促进面向A
gent软件工程的发展和进步。
随着Agent应用范围的不断扩大,人们希望
能够借鉴面向对象软件工程中设计模式[3]的思想,对该领域反复出现的问题进行归纳总结,并给出实
现方案,从而形成一组设计模式来指导多Agent
系统的设计和开发。
问题是模式产生的基础,同一问题采用不同的实现技术往往具有不同的设计形态,不同软件开发
范型也有其各自不同的设计模式。本文研究设计
模式的问题来源有两类:(1)面向对象软件设计所归纳和总结的问题。
尽管Gof等人提出的23种设计模式基于面向对象
技术,但是其中一些问题在设计多Agent系统时
同样存在,而且这些模式具有广泛的影响力,已被广大开发者普遍接受和熟知,应用模式产生的效果也被大量开发实践所证实。开发者对这些模式的学习、理解和使用积累了丰富的经验,对如何系统
地使用模式来解决实际问题,也有深入的研究。在
此基础上开展面向Agent软件设计模式的研究具
有一定的优势。(2)面向Agent软件工程领域特有的问题及
其设计实践。作为一种新颖的软件开发范型,同面
向对象相比,其中必然遇到许多新问题,本文对这
类问题中的常见问题进行总结,从而形成了一组设
计模式。本文介绍了面向Agent软件设计模式的概念
和思想,提出一组设计模式并对模式进行了分类,
给出了面向Agent软件设计模式的描述模板,深
入分析了典型的面向Agent设计模式,进行了应
用案例分析。
2面向Agent软件设计模式的基本
概念和思想
Agent是指驻留在某一环境下能够自主(Au
tonomous)、灵活(Flexible)地执行动作以满足设
计目标的行为实体[4]。与对象对数据和行为进行
封装相比,Agent还封装了对自身行为的控制机
制。因此,它更加贴近人们对现实世界中行为实体的直观理解和认识,有助于对应用系统和软件系统
中的行为实体进行自然建模。面向Agent的软件
开发将Agent作为软件系统的基本运行单元,每
个Agent都是一个自主的行为实体,Agent之间通过结构相关性和行为相关性组成多Agent系统。
多Agent系统运行在特定的环境中,环境的变化
引起系统执行动作,动作的执行又会进一步影响环
境的状态。表1对比了对象技术和Agent技术之
间的差别。表1面向对象软件工程与面向Agent软件工程的对比分析
Agent技术对象技术
系统构成自主的计算实体Agent不具自主性的计算实体对象环境感知主动感知环境变化被动感知环境变化
结构关系社会性关系关联、继承等
协作实质基于知识和语义的交互基于语法的交互协作结果不确定、不可预测确定、可预测
模式思想最早来自建筑学领域。Alexander
针对建筑学指出:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案
的核心。这样,你就能一次又一次地使用该方案而73不必做重复劳动[3]。软件领域借鉴了这一思想,通过对设计软件系统存在的常见问题及其解决方
案进行记录,产生了软件设计模式。
面向Agent的软件设计模式针对软件开发中存在的常见问题,使用基于面向Agent软件开发
范型的技术手段给出问题的解决方案,并对模式解
决的问题,问题上下文、解决方案等元素进行详细
规范的记录。通过与面向对象设计模式进行对比,能够帮助
理解面向Agent软件设计模式的特点:
(1)针对问题:面向对象设计模式解决设计面
向对象系统时经常遇到的问题。面向Agent软件设计模式解决的问题有两类:其他软件技术存在的设计问题,这类问题独
立于实现方法。对这类问题给出基于Agent技术的解决方案并与使用传统技术的解决方案进行对
比,能够帮助我们认识Agent技术的优点和不足。该领域特有的问题,作为一种新颖的软件开
发范型,面向Agent软件开发必然会遇到许多新的问题需要解决,例如Agent如何感知环境,A
gent之间如何交互,如何通过协作实现问题合作
求解等等。(2)解决方案:根据表1的对比分析,面向A
gent软件开发技术与面向对象软件开发技术在计
算模型的抽象、运行实体、交互本质和环境感知等
方面都有本质性的差别,因而在问题解决方案上,两类系统具有不同的设计结构和细节。表现在以
下方面:解决方案的基本成分不同:前者使用A
gent、角色等一组概念描述解决方案,后者使用类
和对象等一组概念。文献[4,5]对Agent特性进
行了详细介绍。实体间存在的结构关系不同:同对象技术之
间存在的继承、关联和依赖等结构关系相比,A
gent之间存在着更为复杂的结构关系,根据主体
扮演的角色以及不同角色之间的相互关联性,主体
之间存在各种宏观性结构关系,如管理、合作、对等、竞争等。交互方式不同:对象之间通过发送消息进行
的交互本质上是语法层次上的方法调用;Agent之间的消息是在语义和知识层面上进行的交互。从
交互的结果来看,对象间的消息引起方法的执行,
Agent则可以自主地对消息做出不同的回应(如接
受、拒绝、不理解消息内容等)。职责分配不同:在对象技术中,消息发送方对消息的格式、内容、消息接收方地址和动作的执行等负责;在Agent技术中,则是由接收方负责消
息内容的理解和相应动作的执行,因此两种技术在
实体职责分配上存在不同。(3)模式研究的成熟程度:面向对象设计模式
的研究已经比较成熟;面向Agent的软件设计模
式研究还处在发展中,对模式的分类方法、描述模
板等还没有统一的认识,部分常见问题的解决方案也还在研究中。
(4)应用范围和接受程度:面向对象模式已经
被开发者普遍接受和熟知,模式基础上开发的应用
框架已在工业界得到广泛应用。面向Agent软件模式还没有得到广泛应用,也没有应用框架供开发
者使用。
3一组面向Agent的软件设计模式
及其分类
本节提出一组面向Agent的软件设计模式,
并对这些模式进行了分类归并(如表2所示),以方
便开发者选择需要的模式,同时也为发现新的模式
提供了框架:(1)组织结构型模式:该类型模式旨在解决构
建多Agent系统组织结构方面存在的常见问题。
在组织中,每个Agent扮演着特定角色、起着特定
的作用、实施着相应行为[1]。角色之间通过各种社会性关系进行连接,Agent根据扮演角色的差异以
及不同角色之间存在的关系形成组织拓扑结构。
该类型模式解决的典型问题有:组织的拓扑结构对解决问题的影响;如何实现不同类型系统的互联;
如何连接Agent个体或Agent子系统以形成更大
的组织结构等。
(2)交互协作型模式:该类型模式旨在解决如何实现、保持或方便Agent之间的交互,如何通过
协调不同Agent之间的行为从而达到消除冲突,
提高系统运行性能和实现复杂问题合作求解的目
的。由于Agent技术本身的特点,导致它们的交互协作要比传统的面向对象复杂,由此也产生了许
多新的问题。例如,Agent由于移动改变了自身位
置后,如何保持交互;如何避免Agent之间协作时的欺诈行为等。
(3)个体Agent模式:该类型模式关注个体A
gent内部体系结构设计中存在的常见问题。例
如,Agent如何感知外部环境;如何根据自身状态执行不同的动作;Agent与角色之间的对应关系74