1.引言
不管面向智能主体的(AO:Agent-Oriented)方法学是否会像鼓吹的那样继面向数据流(DFO:DataFlow-Oriented)、面向数据结构(DSO:DataStruct-Oriented)、面向对象(OO:Object-Oriented)之后成为新一代的软件开发方法学.随着软件系统服务能力要求的不断提高,在系统中引入智能因素已经成为必然.Agent作为人工智能研究重要而先进的分支,引起了科学、工程、技术界的高度重视.斯坦福大学的Barbara Hayes-Roth在IJCAI'95的特约报告中提及:智能的计算机主体既是人工智能最初的目标,也是人工智能最终的目标.网络导致了网络计算这个概念的出现.如今,并行和分布计算是网络计算的亮点.而Agent作为并行、分布计算的因素、合作者、目标自然的产生了MAS(Multi-Agent System)、MA(Mobile Agent)等研究方向.这一切的科学技术成果将会极大的提高了软件系统的能力,紧跟时代的需要.以前的方法学不能很好的支持新的开发模式,必须匹配的开发方法学.AO就是Agent时代的方法学.
2.Agent和Agent-Based System概述
代理的研究可追溯到70年代分布式人工智能的研究(DAI:Distribute Artifical Intelligence),主要分两条研究路线:一条围绕经典人工智能展开,主要研究代理的拟人行为,多代理的协商模型等,其研究方向可分为代理理论,代理体系结构,代理语言,多代理系统等,一些计算机科学家称之为"智能代理"或是强定义的代理;另一条从90年代左右到现在,以应用为主,将经典人工智能关于代理的强定义弱化,拓宽了代理的应用范围,新的研究方向主要包括代理界面,基于代理的软件工程(AOSE).
Agent的特点:
1.代理性(Action On Behalf Others):代理具有代表他人的能力,即它们都代表用户工作.这是代理的第一特征.
2.自制性(Autonomy):一个代理是一个独立的计算实体,具有不同程度的自制能力.它能在非事先规划、动态的环境中解决实际问题,在没有用户参与的情况下,独立发现和索取符合拥护需要的资源、服务等等.
3.主动性(Proactivity):代理能够遵循承诺采取主动,表现面向目标的行为.例如,Internet上的代理可以漫游全网,为用户收集信息,并将信息提交给用户.
4.反应性(Reactivity):代理能感知环境,并对环境作出适当的反应.
5.社会性(Social Ability):代理具有一定的社会性,即它们可能同代理代表的用户、资源、其它代理进行交流.
6.智能性(Intelligence):代理具有一定程度的智能,包括推理到自学习等一系列的智能行为.
代理一定程度上可能表现其它的属性:
7.合作性(Callaboration):更高级的代理可以与其它代理分工合作,共同完成单个代理无法完成的任务.
8.移动性(Mobility):具有移动的能力,为完成任务,可以从一个节点移动到另一个节点.比如访问远程资源、转移到环境适合的节点进行工作等.
还有诚实性、顺从性、理智性等等.
由于Agent的特性,基于Agent的系统应是一个集灵活性、智能性、可扩展性、鲁棒性、组织性等诸多优点于一身的高级系统.
3.OA方法学
下面我们着重从系统分解、组织来分析OA方法学对现代软件系统的支持.
1)面向Agent的系统分析
面向Agent的系统分析是分割复杂系统问题空间的有效途径.面向对象系统比面向过程的设计关键在于一定程度上对象直接映射现实世界的实体.而Agent比对象更能反映现实.
它不但抽象出实体的特性、动作,还有感觉、心智、承诺等.
这样从现实出发,更加容易将系统分解成以Agent为单位的灵活、强交互的系统.一方面,由于Agent的自制性、反应性,那么意味着子系统有自己的控制流程. 而并行、分布已成为系统的趋势,Agent在这种系统中可以承担多重控制流,从而降低系统的分析复杂度.Agent在存在不可预料(这种系统往往具有高灵活度、高处理能力)处理能力系统中的优势更是与身俱来的.而这种系统特性是现代软件系统的重要特点之一,它体现了系统的智能性.在分解的过程中,子系统的关系也可以自然的映射为Agent之间的交互、协作.
2)面向Agent的系统组织
从映射角度来说,面向Agent的系统组织更适合处理系统中的依赖和交互关系.
复杂软件系统往往包含复杂的组织关系,这些组织关系使得一些分散的模块可以被划分在一起,被视为概念上的一个实体;其次,这些特征化的实体之间有着高级的链接关系;再次,
实体间的关系是变化的,要求每个实体应该具有适应这种变化的能力.而基于Agent的软件系统有着灵活的组织关系,可以按一定的机制自动建立和解除.这种结构使单个的Agent可以独立的开发,然后加到系统中.这样,基于Agent的复杂软件系统有着良好的可成长性.符合软件系统对系统成长性的要求.
4.面向Agent的系统建模
4.1 Gaia建模方法
Gaia模型由Wooldridge、Jennings和Kinny等学者提出.适用于封闭系统中面向Agent的分析(AOA)和设计(AOD).Gaia支持Agent的结构以及Agent之间的社会和组织结构的建模,但是,它要求单个Agent的能力以及Agent之间的交互关系在系统运行过程中是静态的.这就使得Agent失去了自主性和反应性等特点.其主要过程有分析和设计两个阶段:分析过程侧重于对系统及系统结构的理解,主要涉及Agent组织关系中的角色和角色之间的交互;设计阶段主要是定义Agent系统实际的结构,主要涉及组成系统的Agent类和实例,以及每个Agent所提供的服务和熟悉读模型.
注:详细请参看 Wooldridge M J,et al.
《The Gaia Methodology For Agent-Oriented Analysis and Design》[J]. Autononmous Agents and Multi-Agent Systems,2003 3(3):285-312
4.2 Multi-Agent System的建模方法
Gaia建模不适合与开放的Agent组成的、具有一定社会准则的系统.因此Wood和Deloach扩展Gaia的提出了Multi-Agent System的工程化方法MASE(Multiagent Systems Enginneering Methodlolgy),它支持动态代码的创建,目标是将最初的系统规范转换成可以运作的Agent系统.开发流程描述如下:
1)获取系统的目标.将初始的系统规范转换成结构化的系统目标.
2)将结构化目标转换成在多Agent系统中较为有用的角色.
3)运用用例图.定义不同系统之间或同一系统内部的不同角色之间交互的逻辑路径.
4)建立Agent类.将Agent的角色映射到具体的Agent类图中.
5)建立Agent会话.定义Agent之间的通信协议.
6)装配Agent.创建Agent类内部功能.
7)系统实施.将Agent类实例化为Agent.
注:详细请参看:A Omicini,et al.
《Agent-Oriented SoftWare Engineering for Internet Application》[M},Franco Zambonelli,Published as Chapter13 in the book:Coordinaton of Internet Agents:Models,Technologies and Applications,2000.
4.3 信息系统的建模
面向Agent的信息系统建模Wagner提出了面向Agent的关系模型方法(Agent-Object Relationship ,AOR).AOR模型是基于目前广泛使用实体关系模型(Entity-Relationship,ER)和关系数据库模型(Relational DataBase Model,RDM).ER模型主要是使实体之间的联系转化到具体的数据系统设计的过程简单化,它很好的支持静态的实体和对象建模.但是不适用与信息系统中的动态实体或Agent.
AOR模型就是用来弥补ER模型的不足,提供对Agent之间的关系建模.在AOR中,实体有六种类型:智能体(Agent)、事件、行为、义务(Commitment)、声明(Claims)和对象.其中义务和声明通常是配对的,一个Agent的义务是可以看作其它Agent的声明.系统中的组织被建模成一组子Agent.每个子Agent都有权完成特定的行为,但同时还要承担一定的义务,如监视与Agent组织有关的声明.
面向Agent系统比起传统软件工程经典的"分而治之"策略来说,其优点在于,Agent能够一灵活的、上下文相关的方式而不是通过一些预定的接口函数与外界交互.不久的将来,从科学研究到应用系统的部署,智能系统是必然的趋势.而基于Agent的系统是核心之所在.随之而来的AOP、AOSE必然得到长足的发展.但是显然规范、实现、验证面向Agent的系统从而使得基于Agent的工程趋于成熟绝对是一条艰难的探索之路.