论文部分内容阅读
随着Web服务技术和面向服务的体系结构(SOA)的发展,运行时互操作已经不再是一个难题。但是,这就要求软件开发必须从使用本地丰富的内部应用资源向联接外部广泛分布的服务资源过渡。这一转变却正面临一些新的困难,新时期的软件开发必须回答如下三个问题:如何使包装为Web服务的软件资源协同工作、如何在技术演进的过程中保持平台的中立性、如何在当前动荡的Internet时代适应需求的变化?通过与这三个问题相对照,不难发现:传统的软件开发方法难以重用和协同软件资源,难以保持平台的中立性,也难以满足变化的需求。因此,迫切需要一种能够克服这些困难的新方法。
本文以服务协作作为解决以上三个问题的切入点和突破口;从模型驱动方法入手,定义具有形式化语义的服务协作模型,并实现服务协作模型的可视化建模;同时借鉴敏捷方法的原则和做法,以可执行服务协作模型为中心,使得面向服务协作的开发、部署和执行过程达到快速、轻巧、灵活的效果;最终形成了完整的面向服务协作的模型驱动敏捷开发技术框架,简称SOMA。通过发挥服务协作、模型驱动、敏捷开发这三种技术各自的优势,SOMA能够更好地支持网络分布式环境下的软件协同工作,在技术平台变化时保持软件开发过程和产品的平台无关性,同时对需求变更可以较低的成本迅速做出反应。
在深入到技术细节之前,本文给出了整个技术框架的全貌。首先,顺应面向服务的开发潮流,提出了一种新的软件开发范型,称为服务协作,意为将相近但是互补的服务连接为一个更大的共享系统,服务之间相互成为合作伙伴。经过分析服务协作的概念模型,本文指出服务协作的核心问题是如何协调多个服务参与到一个协作流程中。由于已有的控制驱动、数据驱动和混合驱动等协调机制不利于快速开发、平台移植和适应变化,因此,本文提出了一种模型驱动的解决方法,将数据和控制抽象为与实现平台无关的形式化模型。接着,本文认为,通过把敏捷方法对可执行代码的热衷转变为以可执行模型为中心,模型驱动与敏捷方法是兼容的,可以直接以形式化模型来驱动基于Web服务的协作,这要求在协调媒介的体系结构中包含解释器和协调器等重要组成部分。
接着,本文给出了可执行服务协作模型及其可视化建模技术。在该模型中提出的构造称为它的语法,而根据该语法构造的实例的属性和行为称为它的语义。为了便于可视化建模和可视化监控,服务协作模型是基于图论的,使用加权有向图来表达服务协作的流程。一个图代表一个流程,图中的结点代表活动,有向边代表活动之间的转换,指示控制流的方向,边上的权值则是转换条件。一个活动既可能对应于某个Web服务上的操作调用,也可能需要由某个子流程来实现,并且活动执行的过程中需要输入输出参数。因此,服务协作模型还包括了流程上下文数据的定义以及用于活动实现的服务与操作等定义。此外,本文还给出了服务协作流程模型的良构性定义和判断方法。同时,本文还以自主实现的ONCEPI系统的流程建模工具为例,讨论了服务协作模型的可视化开发技术。
服务协作模型之所以是可执行的,是因为它具有形式化的操作语义和具体的解释器。解释器可以基于操作语义中定义的规则解释执行根据模型生成的流程实例。本文将流程实例中当前所有上下文数据的取值看成为流程实例的状态。格局则被定义为解释器中当前正在执行的一系列次序无关的流程实例。流程实例的执行过程就是沿着流程模型中定义的控制流执行一系列活动实现,为此,本文定义了解释器对流程实例可用的一系列操作。流程实例一旦建立,就会在这些操作的作用下不断更新变化,形成该流程实例的踪迹。本文证明了所给出的操作语义是良好定义和无死锁的,可以用来推导流程实例踪迹和格局变化。本文还基于该操作语义,给出了用于解释器实现的解释执行算法。并且,本文基于解释器产生的流程实例踪迹,实现了可视化的流程监控。
鉴于协调机制是服务协作的核心问题,本文基于Web服务操作的行为模式给出了服务协作的协调模式,服务协作流程实例的执行过程也是协调媒介与若干个服务提供者之间的一系列交互过程。为此,本文参考CCS的思想,定义了称为服务协调演算(SCC)的进程代数模型。基于其语法可以将解释器、协调器和服务都描述为进程,并能够使用所给出的操作语义规则推导这些进程的同步和通信过程。本文以RPC风格的SOAP通信为例,研究了协调媒介与提供请求—响应类型操作的Web服务协调的过程。与前人有所不同的是,这种协调机制是模型驱动的,抽象的进程、动作和条件可以映射到服务协作模型及其实例。本方法的优点在于较为清晰的关注点分离,适用于将许多或者简单或者复杂的服务组织成更复杂更庞大的业务系统,可以实现敏捷的应用开发、运行和维护。
最后,本文介绍了自主实现的面向服务协作的敏捷开发支撑平台ONCEPI系统。ONCEPI的逻辑结构主要由开发平台中的建模工具和监控工具、运行平台中的解释器和协调器等模块组成。建模工具和监控工具是基于服务协作模型的语法定义构造的;解释器基于服务协作模型的操作语义,实现了流程实例的解释执行;协调器则由服务协作模型驱动,协调流程实例的基本活动执行与服务提供者的操作调用之间的交互。ONCEPI在J2EE平台之上实现,其关键的支撑系统是ONCEAS,ONCEPI中解释器与协调器间的实例上下文传递是基于JMS消息驱动的,对内外部Web服务的调用则是基于ONCEAS内置的SOAP引擎实现的。此外,本文还以UML图的形式介绍了一些关键类的实现,并给出了基于ONCEPI的敏捷开发过程。