论文部分内容阅读
云计算的推广和应用对并发分布式计算提出了越来越高的需求,以并发性、分布性、实时性、异构性和互操作性等为主要特征的并发分布式系统已成为当今重点研究领域。但迄今为止,学术界与工业界均普遍认为并发计算的理论和技术复杂、多变、难以掌控;开发高效可靠的并发程序远比顺序程序难得多,这已经成为并发程序设计的瓶颈问题。产生这些困扰的根本原因在于并发分布式系统结构本身的复杂性和多样性、缺乏自成体系的并发程序设计理论和方法、以及缺乏便捷的抽象并发程序设计语言和相关辅助工具。从程序设计语言的角度考虑,现有通用程序设计语言(如Java、C#、C++等)的并发机制非常复杂和繁琐,因此其开发过程不仅难度大、效率低、周期长,而且很难避免或发掘其中隐含的错误和缺陷。因此,寻求简单便捷并发语言机制的研究正在悄然兴起。通过深入分析比较多个典型抽象并发模型或语言(如RSL、Circus、Seuss、Orc和SCOOP),发现与图灵奖获得者Tony Hoare共同提出Verified Software巨大挑战的世界著名计算机科学家Jayadev Misra最近几年研发出一种全新的抽象并发建模语言Orc。该语言基本上囊括了其它并发语言或并发模型的所有特性,如:简单便捷、功能强大、严格语义、结构化、并发性、面向构件/服务等性质;它既充分吸收了Jayadev Misra教授早期研究成果(UNITY和Seuss)的优点,又融入了现今主流研究方向(如并发分布式计算、面向服务计算)。而且Orc语言隐涵的三大哲学思想(①大程序是由异构的构件组成;②调度构件而无需关注构件内部结构;③调度理论是程序设计的本质成分)也是一直是我们研究团队的追求。基于笔者所在科研团队自主研发的原创性成果——PAR方法/PAR平台的抽象顺序程序设计语言Apla、在研的国家自然科学基金重大国际合作项目、以及在PAR平台中实现Orc建模语言的总体架构,将建模语言Orc并发机制与Apla语言相融合,得到顺序程序设计和并发程序设计通用的抽象Apla+语言。然后,研究在PAR平台中实现Apla+语言,并开发出支持将抽象Apla+并发程序自动转换成可执行Java并发程序的软件辅助工具—-Apla+ToJava生成原型系统。完成上述研究目标需要攻克如下三个关键问题:①如何使用形式化语言刻画Orc语言四类调度算子隐涵的并发特征?②调度算子左后两边的表达式不能简单地直接对应为并发单元,因此,需要考虑如何挖掘Apla+抽象程序中隐性并发单元的执行关系(包括并行执行、互斥执行、同步执行等)。③如何将具有嵌套性的结构化Apla+抽象并发程序转换为无线程嵌套的Java并发程序?本文采用二维图和形式化操作语义两种方式揭示四类调度算子蕴含的并发特征及其隐性并发单元;然后,通过引入与Apla+程序目标表达式功能等价的三种中间模型(展开表达式、无环有向图和执行序列)来完成Apla+语言在PAR平台中的实现。主要研究成果及创新点包括如下几个方面:(1)将Orc并发机制与抽象顺序程序设计语言Apla融合,使得增加了该机制的Apla+语言具备“抽象程度高、简单易用、功能强大”等优点。Apla+语言延续了抽象顺序程序设计语言Apia的简单、便捷和抽象等特征。通过借鉴建模语言Orc的核心思想,扩充了Bundle构件、四类调度算子和表达式这些描述并发特征的机制。Apla+语言可以让用户像编写顺序程序那样,无需显性声明或定义基本并发单元,而是在抽象层面上进行编程。Apla+语言不区分进程和线程,兼容了并发程序设计的共享存储和消息传递两类通信方式;还能够表示多种并发模式,解决大量并发问题。(2)基于模型驱动软件开发和泛型程序设计思想,提出了将Apla+程序的目标表达式变换为执行序列的精化算法;并从理论角度验证了模型变换的功能等价性。为了刻画Apla+程序内隐性并发单元的执行次序和协作方式,需要将Apla+并发程序的目标表达式映射成一个语义等价的执行序列。本文提出的精化算法实现了上述功能,该算法包括三个功能等价的模型变换:①目标表达式到展开表达式的模型变换;②展开表达式到无环有向图的模型变换;③无环有向图到执行序列的模型变换。实现了精化算法的前端子系统具有独立性和通用性,即该子系统被PAR平台的各类转换器(如Apla+ToJava、Apla+ToC++、Apla+ToC#等)的后端子系统共享。(3)使用生成式程序开发技术,选择Java作为目标语言,设计出Apla+ToJava生成原型系统——支持将Apla+抽象程序自动变换为Java并发程序。Apla+语言提倡将并发程序的设计与它的具体实现分离。在设计阶段使用Apla+语言编写的抽象程序不能直接编译运行;具体实现阶段需要借助一个软件辅助工具(如Apla+ToJava生成原型系统)将Apla+抽象程序自动转换成可执行程序(如Java程序)。本文在PAR平台提供的AplaToJava生成系统基础上,扩展支持Apia+并发语言机制的构件库和规则库:①新增了三类表示并发特征的转换规则:Bundle转换规则、复合表达式转换规则和隐性并发单元转换规则;②扩展了调度算子构件、信号量构件和通道构件。总之,本论文研发的并发语言Apla+及其辅助工具—-Apla+ToJava原型系统有助于简化并发程序设计的难度,提高并发程序设计的效率。