面向Agent的软件设计开发方法
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.3 建模语言

在本书的上下文中,建模语言是一种允许表示系统计划或部分计划的语言。建模语言不是提出一个方法去设计系统,仅仅是提供一个方法去表达设计。建模语言通常使用(或包含)图形表示法,使模型更全面。在传统软件工程方法中,基于对象方法中的统一建模语言(United Modeling Language,UML)居于统治地位。但是在Agent方法中所提出的几种语言没有一个可以明确占据统治地位。下面简要描述其中引用最多的一种语言,叫做Agent统一建模语言(Agent United Modeling Language,AUML)。

1.AUML

基于AUML的方法论数量很多,例如ADELFE(Picard和Gleizes,2002)、Tropo(s Bresciani等,2002)和INGENIAS(http://grasia.fdi.ucm.es/ingenias)。我们可以认为,AUML(Huget等,2004)是基于Agent系统最流行的建模语言,这主要是因为AUML以一种直截了当的方式扩展了基于对象系统设计中运用最广泛的语言UML,因此任何一个熟悉UML的人都应该有能力运用Agent特征。

AUML主要在顺序图和类图上对UML进行了扩展。下面简要介绍如何在考虑Agent概念的情况下对UML顺序图进行修改。

(1)Agent、角色和Agent类都位于图2.1上面的方框中,表示对象类和对象实例。举个例子,图2.1中标记1所指的方框分别表示购买者、市场和出售者三个角色(角色的名字前用斜杠表示)。

(2)就像UML中那样,图中的生命线不再仅侧重于控制,而是包含了交互线程。这些线程在图中被画成较窄的方框,就像图2.1中标记2所指的那样。

(3)为了表示发送消息时的并行性,增加了AND、OR和XOR连接器(适用于一套消息)以表示所有的消息,它们中的几个或仅仅一个可以在同一时间被分别传送。图2.2所示,这些连接器以符号的形式来表现,其中为每一个连接器描述了三个消息。

(4)当使用FIPA-ACL(http://www.fipa.org/)时,在消息箭头上标记了它们所表示的通信行为,就像图2.1中标记3所指的“请求”通信行为。并且,有可能给箭头加上发送消息的数量和接收消息的角色实例数量。图2.1中的标记4给出了这方面的例子。

(5)为了促进可重用性,AUML允许在一个顺序图中通过嵌套或交叉,将一个协议定义在另一协议中。嵌套的例子出现在图2.3中,其中通过圆角方框来表示交叉协议。

(6)通过使用协议模板,AUML允许一个单元包含几种协议,仅仅需要改变一些参数值就可以了,这样可以促进可重用性。

图2.1 AUML时序图的例子

图2.2 AUML的连接器

图2.3 AUML中嵌套协议的例子

在AUML中,对象类被扩展为Agent类。Agent类包含:Agent名称、状态描述、行为、方法、能力、服务描述、支持的协议和组织。Agent名称需要加前缀,用来和对象的名字相区别。除此之外,实例、角色或类名可能包括Agent的名称。Agent类中的状态描述类似于对象类的属性部分,就BDI Agent而言,或许会包含信念、期望、意图和目标。AUML中的行为可以是两种类型:预动型,那些由Agent自己触发的行为;反应型,那些由其他Agent发送的消息所触发。方法类似于UML操作,但是增加了前提条件和后置条件。能力类似于UML的责任,而服务描述类似于UML接口。最后,组织是一个群的列表(Agent可能属于这个群),还包括对加入群的限制和Agent在其中扮演的角色。

AUML正处于发展阶段,仍在持续的更新和改进中,今后的工作不仅要考虑对模型进行修正,还要考虑创造工具来支持它们的产品,以及语义的定义。尽管有其本身的长处,但正像其作者所认为的,AUML并不打算对多Agent系统的所有特征进行建模,还需要采用其他的语言和符号进行补充。

2.其他

其他建模语言也被用于多Agent系统设计中的特定部分。举例来说,Cost使用“着色Petri网”来对Agent的通信交互进行建模,包括支持并发(Cost等,2000)。同样地,DeLoach采用有限状态机来构建MaSE方法设计阶段的会话(DeLoach等,2001)。