张娜 严健
在国内外研究现状评述中,将从遗留代码的研究现状和企业信息网格的研究现状两方面来阐述此问题。
一、遗留代码的研究现状
遗留软件都是面向对象技术在工业中广泛使用之前编写的,它们使用集中式体系结构,编写遗留软件的遗留代码讲究的是面向过程、逐步求精的编程理念。这些代码通常被组织为子程序或函数的集合。每个子程序提供系统功能的一部分,并且按照需要由其它子程序调用。面向过程的设计策略为自顶向下的设计,将程序分解成交互的函数或子程序的集合并且由这些函数共享集中式的系统状态如图1.1。这种设计策略隐藏了函数的实现细节,使之对于其它函数来说是透明的,但其内部算法的改变(如共享变量值的改变),却容易导致数据不一致性。
当今,随着分布式的广泛应用,遗留软件系统也逐渐由采用集中式体系结构进化为采用分布式的体系结构,其原因有:
①硬件花费,购买分布式客户/服务器系统以及后期维护的费用通常比购买同等能力的大型机的费用要小。
②用户接口的需求,遗留软件系统通常采用字符、文本的界面。新的趋势要求系统具有用户容易理解的、美观和便于交互的图形用户界面。这种界面需要更多的本地计算,只有在客户/服务器系统中才能提供这种功能。
③对系统分布式访问的需求,由于企业在发展的过程中逐渐将组织分布在各个地方,客户和企业员工希望可以访问位于公司不同地方的软件系统。
迁移遗留系统到分布式体系结构中,并开发有效的接口以减少硬件花费,从而以更为现代的“感观”方式来支持分布式工作。当然在迁移过程中,不可避免的对系统有一些改变使之适合于面向对象的模型。
但是这些集中式的软件系统经过多年的维护,其用户接口、服务、数据库之间已经错综复杂,造成了遗留系统体系结构进化过程中最实质性的困难。针对这种情况,对遗留系统的解决方案也各不相同,在新的体系结构中重用遗留代码就是其中一种解决方案。
1996年Sneed提出一种使用中间件技术整合遗留系统到异构分布式计算机环境的方法,此方法主要是封装遗留系统使之在客户/服务器平台使用。Sneed使用CORBA作为中间件封装汇编语言编写的代码和COBOL语言编写的代码验证此方法的可行性。
1999年Canfora提出了一种标识用户接口组件语句的程序切片算法,但是此算法只适用于非递归程序,且是由RPG、COBOL和FORTRAN所编写的程序。
2001年,Chia提出把遗留系统从大型机迁移到以用户为中心的分布式对象计算环境中。此方法直接在大型机上包装遗留系统并且暴露遗留系统的接口给远程客户。作者实现了使用COBRA技术整合遗留系统到分布式计算环境,其主要通过ORB-ORB之间的访问完成。但是,中间件将成为整个系统的瓶颈。同年Y.Bi等人提出了一种以XML的方法重用遗留代码,主要集中在用户接口的XML化处理上,通过集中研究最本质的,必不可少的用户交互以及基于字符接口和图形用户界面字段之间的关系,整合这些关系到新的图形接口,从而实现迁移遗留应用到瘦客户/服务器平台的目的。文章中作者提出了以下几个关键的步骤,理解遗留系统功能、通过跟踪基于字符接口的交互区分信息和处理逻辑、由前面步骤提供的信息来决定目标系统、使用XML作为客户端产生新的图形接口、通过JNI技术包装原始系统的功能、迁移遗留应用到目标系统。同年,Emmerich定义了基于XML DTD增量代码移动的方法,此方法能够增加、减少、替换代码的某些部分。作者在增量代码移动的实现中考虑了最简单的程序设计语言Karel,为我们解决遗留代码的重用提供了一种新的思路。
2003年Bodhuin 针对的是那些不可分割的遗留系统提出了迁移遗留系统到Web平台的工具。但是此工具只适合COBOL语言开发的软件系统,而且对于不同版本COBOL需要开发不同的解析器。Yan Huang 提出了一种由C语言编写的科学计算程序到基于Triana的计算服务(面向服务的的分布式体系结构,类似于网格计算)的半自动化转化方法。
2005年Delatittre提出的GEMLCA(Grid Execution Management for Legacy CodeArchitecture)是一种通用的体系结构,可以部署遗留应用作为网格服务,而不需要重建代码。GEMLCA由四个基本组件构成,被设计为三层,第一层作为前端层,提供网格服务的功能;第二层为核心层,负责管理每个遗留代码进程和遗留代码作业;最后一层为后端层,被连接到GEMLCA体系结构所部署的网格中间件,此层可以被看作是一个插入层。但是这种体系结构只适合于GT3和GT4,而且对于它们GEMLCA的后端层都要发生相应的改变。
二、企业信息网格研究现状
国内研究企业信息网格的中科院计算所提出的织女星企业信息网格的主要特色是Vega,即通用服务、辅助智能、全局一体、自主控制。西安交通大学的基于Internet的信息网格的软件框架研究参照计算网格的开放式网格服务构架,实现了信息搜索、登记、发现、预定等功能。南京航空航天大学的基于Web Service信息网格的研究和应用是一个基于Web Service的协同查询系统的设计和实现技术。但是它们都没有解决在企业信息网格中如何使用遗留系统的应用功能,动态部署新、旧服务,达到真正意义上的资源共享的问题。
从遗留代码和企业信息网格的研究现状来看,这些解决遗留问题的方法,有各自的优缺点,2000年以前主要集中在包装迁移遗留系统到基于Web的分布式平台,随着分布式的变化,出现了网格,现有的主要技术成果是GEMLCA,但它有如下缺点,①只适用于GT3或者GT4作为中间件开发的网格。②将整个可执行的遗留代码作为网格服务,因而造成较大的花费。③需要一个计算服务器,从而增加了系统的冗余度。④这种方法在遗留系统迁移期间,必须停止遗留系统的使用。而这些缺点,对企业来说是很难接受的。因此,我们从代码重用的角度,使遗留代码成为共享信息资源,同时将其功能提供给网格用户,解决遗留系统进入企业信息网格的问题。经测试此方法不但周期短、开销少、难度低,而且还保证企业系统的正常运行。