资源描述:
《基于uml的多agent系统软件体系结构建模研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于UML的多agent系统软件体系结构建模研究0引言近十年来,面向agent的软件工程的研究非常活跃并取得了一系列的进展,但是目前面向agent的软件工程仍然处于很不成熟的阶段。文献[1]提出了目前面向agent软件工程研究在基础理论、标准化、关键技术等方面存在的一系列挑战性的问题,其中特别指出现阶段有关多agent系统软件体系结构方面的研究比较薄弱。目前关于多agent系统体系结构的研究主要集中在agent个体结构、组织结构与实现结构方面。Agent个体结构主要从智能的角度对agent个体的组成结构
2、进行研究,典型的是慎思结构、反应结构和混合结构三种类型的agent个体结构[2];组织结构从需求分析的层面研究多agent系统作为一个社会性组织的组成结构[3,4];实现结构如FIPA体系结构[5]、RETSINA(reusabletaskstructurebasedintelligentnetworkagents)[6]等体系结构模型,主要从系统实现的层面研究系统的组成。在这些研究中,虽然也采用结构的概念描述了多agent系统结构方面的特征,但是实现结构和个体结构的描述太注意细节,组织结构限于社会性的
3、描述,而软件体系结构是对整个系统从不同角度进行的全面的、概略的描述。目前软件体系结构在软件开发过程中的重要性已经获得充分的认识,缺乏软件体系结构的研究会使得多agent系统主要用于实验性、学术性的应用领域,其解决复杂大型系统构造问题的潜能无法得到真正的发挥,因此对多agent系统软件体系结构的深入研究是非常必要的。1多agent系统软件体系结构元模型由于在面向agent软件开发方法中,通常将agent视为对象的扩展,扩展面向对象方法成为面向agent软件开发方法的主流,UML作为面向对象的标准建模语言自
4、然也成为描述多agent系统模型的首选建模语言。两个标准化组织OMG(ObjectManagementGroup)和FIPA(FoundationforIntelligentPhysicalAgents)都建议用UML描述agent系统的生命周期。UML2.0规范提供了两种扩充UML的方式:a)通过扩展型基于已有的元类定义新的建模元素,这种方法只是限制建模元素的语义,不能改变建模元素的文法结构;b)通过直接增加新的建模元素的方式修改元模型,这种方法具有更强的灵活性。本文通过结合上述两种方式来定义适合构造
5、多agent系统软件体系结构的元模型。文献[7]总结了目前面向agent软件开发方法中使用的概念,提出了统一多agent系统的元模型的研究思路。目前提出的多agent系统元模型还存在诸多问题:a)某些元模型独立于UML,缺乏与UML的融合机制,缺乏建模工具的支持,难以在实际项目中获得应用。文献[1]归纳了三种主要建模方法中的建模概念,以元模型的方式进行了描述,并提出一种统一元模型,但是这些元模型是独立于UML的,没有考虑如何获得建模工具支持的问题。b)大多数元模型缺乏软件体系结构的概念,通常只描述了组织
6、结构相关的概念,不能满足多agent系统各个阶段建模的需要,如ALADDIN[8]、MOISE[4]等方法只描述了多agent系统的组织结构。只有文献[9]提出的AML明确包含了描述软件体系结构需要的建模元素,但是其使用的术语与常用术语差别很大,没有包括软件体系结构的构件、连接件、端口等核心概念。c)这些元模型往往将所有概念都当做agent来处理,而实际系统的开发过程中,必然存在不属于agent的概念,比如遗留系统、数据库系统、人机界面等,这些概念不包含在元模型之中,对系统的描述是难以被软件开发人员理
7、解和接受的,最终将影响系统功能的实现。针对上述问题,本文通过结合UML2.0规范提供的两种扩充方式来定义适合描述多agent系统软件体系结构的元模型。这种元模型基于UML给出的两种扩展机制,容易被软件开发人员接受,也比较容易获得建模工具的支持。元模型定义涉及两个方面的内容:a)建模元素之间关系的描述;b)这些建模元素与已有的UML建模元素之间的关系的描述,首先应该明确多agent系统软件体系结构建模需要哪些建模元素。从软件体系结构层面上观察多agent系统,与面向agent软件开发方法中的多agent系
8、统会有很大的不同。在目前出现的面向agent的软件开发方法中,通常将agent作为对象的扩展,多agent系统中的相关概念通常在类、对象、关联等概念的基础上进行描述。在软件体系结构层面上观察多agent系统,必须考虑多agent系统的相关概念和软件体系结构相关概念的结合问题。目前在多agent系统开发方法中,将系统中所有元素都作为agent来处理的现象非常普遍,而实际上复杂软件系统很难完全用agent相关的概念来表达,比如人机界面、数据库系