论文部分内容阅读
封装良好的功能构件、软件框架等软件构件使得开发人员无需了解构件的实现细节就可以通过接口访问的方式实现复用。软件构件包括离线和在线两种形态。传统的离线构件复用需要将构件下载到本地与应用程序一起编译或部署后实现集成;而Web服务等在线构件的复用则是通过基于网络的在线绑定和访问实现,不需要将构件下载到本地。由于缺陷修复、质量改进等原因,被复用的软件构件经常处于不断演化之中,从而导致依赖于某个特定构件版本的应用程序(称为客户端程序)需要进行同步的演化才能适应新的构件版本。这种同步演化很多时候由于涉及大量的软件模块,因此需要很高的工作量。针对这一问题,本文面向离线构件和在线构件这两种构件形态,研究自动及半自动化的应用程序辅助同步演化方法,从而尽量降低构件版本演化对于应用程序的影响。对于离线构件的同步演化问题,本文面向以Java类库形式存在的构件包的演化,研究了相应的客户端程序同步演化方法。我们提出的同步演化方法通过一个适配层代码生成器(后简称代码生成器),针对特定的客户端代码实现适配层代码的自动生成。在此基础上,开发人员只要对客户端代码进行少量修改就能实现客户端代码的同步演化。针对在线构件的同步演化问题,本文面向支持跨语言调用的Web服务研究了相应的客户端程序同步演化方法。Web服务作为网络化应用程序的一种,将计算服务以通用的XML的形式在网络上进行发布与管理。本文所提出的方法通过引入一个中间层监听器实现SOAP消息的修改与服务调用的重定向,而客户端程序只需要将Web服务绑定地址重定向到中间层便可以完成对新版本服务的适应性同步演化。本文通过两个案例研究展示了所提出的方法的可行性。最后,本文对以Java类库为代表的离线构件与以Web服务为代表的在线构件在演化类型以及同步演化适配方法之间的异同点进行了分析和讨论。