论文部分内容阅读
当前以互联网为运行环境的软件系统呈现出环境开放化、软件实体自主化、交互不确定化和系统社会化等方面的复杂性特点,对软件的动态性、灵活性和社会性提出了更高的要求。如何提供高层的抽象、有效的机制以及具有较强表达能力的程序设计语言来支持此类软件系统的构造和实现,是目前软件工程关注的一个重要研究课题。面向Agent程序设计(Agent-Oriented Programming,AOP)将自主Agent作为基本的软件单元,Agent之间通过高层的交互相互作用,代表了一种新颖的软件抽象和软件系统构造方法,被视为解决上述问题的有效手段。然而现有AOP的研究,一方面缺乏有效的程序设计机制支持软件的动态性和灵活性;另一方面缺乏与现有软件工程成功理论和实践的充分集成,影响了程序设计的质量和效率。近年来,随着社会组织思想在面向Agent分析和设计中的广泛应用,借助社会组织的思想和机制认识互联网环境下软件系统的社会化特征,进而支持此类系统的构造和实现已成为AOP研究的一个重要趋势。本文以互联网环境下软件系统的构造和实现为具体应用背景,从软件工程的角度,研究如何将AOP与社会组织学的思想和方法以及软件工程的技术和原则相结合,从程序设计模型和机制、语言的语法和语义、类型系统和理论、程序设计和运行支撑环境四个方面,开展基于组织的面向Agent程序设计研究。论文取得的研究成果和主要创新点描述如下。1.基于组织的面向Agent程序设计模型和机制针对现有AOP模型缺乏支持软件系统动态性和灵活性的有效抽象和机制这一问题,论文将Agent、角色和组织作为一阶的程序设计抽象,引入一系列的社会组织机制作为程序设计机制,提出了基于组织的面向Agent程序设计模型——Oragent,从而在程序设计层为互联网环境下软件系统的动态性、灵活性等提供显式支持,具体包括:角色扮演机制实现了Agent与其结构和行为的动态绑定;角色组合机制实现了Agent的自适应行为;角色晋升机制实现了Agent的自演化行为;基于角色的交互使得Agent可以动态地获取交互对象;基于组织的自管理机制实现了组织结构的动态调整(即实现了组织的自适应性)。此外,Oragent模型还借鉴和引入了OOP中的继承机制,分别在组织和角色不同层次上给出了其新的解释和内涵,从而增强了Oragent程序的结构性和可重用性。2.基于组织的面向Agent程序设计语言OragentL论文基于Oragent程序设计模型设计了OragentL语言,其特色在于为组织的概念和机制提供了显式的语言设施,使得Oragent模型支持动态性的核心程序设计机制在语言层得以体现,为不同抽象层次的软件实体(高层的组织概念和个体Agent)提供了统一的语法和语义。论文还基于抽象状态机和迁移系统从语句、Agent、组织等不同层次上定义了OragentL语言的形式化操作语义,从而为OragentL语言运行时环境的设计与实现提供了理论参考,也为OragentL性质的验证奠定了基础。3.基于组织的面向Agent程序设计语言的类型系统和理论为了解决在基于组织的面向Agent程序设计中,Agent之间交互的合法性以及来自不同角色的行为的一致性问题,论文定义了OragentL语言的类型系统,建立了相应的理论,主要工作包括:基于动作序列(行为)建立了Agent和角色的类型理论;给出了角色程序和Agent格局的良类型规则;基于保持定理和进展定理,证明了轻量级OragentL语言(只支持角色扮演和基于角色交互机制)的安全性等。OragentL语言类型系统的研究,提高了基于组织的面向Agent程序设计程序的质量,从而使得基于OragentL开发大规模软件系统更加安全和实用。4.基于组织的面向Agent程序设计和运行的支撑环境论文设计与实现了支持OragentL程序设计与运行的支撑环境,以支持OragentL程序的编译和运行。该环境主要包括两个部分:OragentL程序运行时环境Oragentburg和OragentL编译器。Oragentburg在平台层实现了Oragent模型的核心程序设计机制,同时为Oragent程序的运行提供了诸如实体管理、标识符管理、通信等基础设施和服务。OragentL编译器实现了OragentL程序到Oragentburg上可运行的Java代码的转换。论文以互联网环境下的在线商场为案例,基于上述理论和语言对其进行构造和实现。该工作一方面展示了如何基于OragentL语言提供的语言设施和机制来构造和实现互联网环境下的软件系统;另一方面验证了OragentL编译器与Oragentburg运行时环境的有效性。