论文部分内容阅读
近年来,面向Agent的软件工程成为软件工程领域和人工智能领域研究的热点之一。多Agent系统,由多个智能Agent组成,Agent拥有自己的知识特征,具有自主行为,能够彼此交互,互相协作,实现目标。同时Agent还具有社会特征,可以用多Agent可以完成单Agent所不能完成的任务,或者能够比单Agent更加有效的完成任务。随着业务应用系统的复杂性不断提高,网络技术的发展,MAS受到了越来越多的关注。但是在开发计划之内,开发高质量的MAS,仍然是一个巨大的挑战。目前已经出现了多种面向Agent的软件工程方法和实现框架。面向Agent的软件工程方法为MAS开发贡献了建模语言和面向Agent的抽象元素。面向Agent的实现框架提供了支持Agent通讯的中间件,支持Agent设计、调试和跟踪的图形化工具,以及相应的API,通过API能够使用和扩展框架。虽然现有的Agent软件工程方法具有很多优点,但是仍然有一些局限性:1)大多数Agent软件工程方法都是从高层抽象地对MAS进行建模,Agent作为一个高层抽象概念,可以很好地指导系统的分解,但是不能直接指导详细设计和代码实现;2)实现框架没有提供对多Agent系统建模的指导;现有的Agent方法没有对MAS中常见的横切关切进行建模。产生式编程是一种基于软件产品族的软件工程范型,给定一个特定需求规范,使用基本的可重用组件,通过配置知识,自动生成一个高度可定制和优化的半成品或者最终产品。产生式领域模型是产生式编程的核心。产生式领域模型包括问题空间,解空间和配置知识。问题空间由领域特定的抽象元素组成,通过这些抽象元素,可以指定产品族成员。解空间包括实现组件以及它们的可能配置。在MAS开发中引入GP,具有以下几个优点:1)基于软件产品族建模,有利于提高可重用性和灵活性;2)问题空间与解空间的分离,可以使这两部分能够独立进行演化;3)代码生成技术使高层的特征映射到具体的实现组件,这样就实现了高层概念对底层实现的指导作用。面向方面的软件开发(Aspect-oriented software development,AOSD)[3]提出了一种以模块化方式捕捉横切关切的方法,以及一个连接点模型,通过连接点可以把方面(在方面中封装了横切关切)编织到程序中。面向方面的技术是我们可以捕捉横切关切和散布在程序模块中的代码片段。通过在MAS开发中引入AOSD,可以从其它关切中捕捉并且分离横切关切。本文把Agent引入GP,提出了一种模型驱动的领域工程方法(MDMADE),利用Agent的技术和社会性特征,作为领域分析的一个重要手段,组织角色模型与特征建模技术互相补充,得出领域模型和领域理论,为需求工程和领域设计打下良好的基础;在领域分析和设计阶段,结合面向方面技术和面向对象技术,为应用工程开发可重用的组件和框架等制品。把MDMADE应用于多Agent领域。通过研究特定的MAS领域,构建特征模型以捕捉共通特征和可变特征。在特征模型中,横切关切被建模为方面特征。基于MAS领域的元模型,定义了一种面向多Agent系统的建模语言MAML,通过Ecore生成代码框架,简化了多Agent系统的开发,提供了Agent系统开发的生产力。本文的主要工作有以下几点:●把MDMADE应用于多Agent领域,使用Aspect捕捉多Agent系统中的横切关切,以模块化的方式处理多Agent系统中散布的代码片断和影响多个特征的横切关切,使用领域工程建模Agent,提高了多Agent系统开发的效率和可重用性。●提出了一种用于多Agent系统的建模语言,对Agent的特性提供了充分的支持;●提出了一种模型驱动的方式开发多Agent系统的方法,能够极大地提高多Agent系统开发的生产力;MDMADE利用了MDA和GP,以及面向方面技术,将对Agent程序员提供极大的便利。●捕捉多Agent系统中Aspect,把面向方面的软件开发与面向Agent的软件开发结合起来,提高了多Agent系统开发可重用性;●为MDMADE提供了开发工具支持,在EMF的基础上,开发UML Profile,在提供软件生产力的同时,可以充分利用UML的可扩展特性,为MAML的扩展打下了良好的基础。