论文部分内容阅读
随着业务的发展和技术的进步,在全球范围内建立基于Web的管理信息系统已经成为可能,这对于那些正在发展和准备发展的企业来说无疑是件大好事。将既存管理信息系统(多数为Client/Server系统)升级到Internet Web系统是计算机用户业务发展的必由之路,有关专家预测10年内将有2/3的原LAN下的C/S应用系统要求升级为Internet Web系统。但是大多数企业在发展过程中已经或大或小地建立了自己的管理信息系统,在考虑构建基于Web的全球企业信息管理系统时,能否最大限度地利用既存管理信息系统(以下简称“既存系统”),保留既存系统的大部分数据、功能甚至界面,通过对它的改造,实现向Internet的平稳升级,这是一个摆在我们面前的问题。
从再软件工程(Reengineering)的角度对这类问题进行分析可以看出,重构的难度主要取决于即存管理信息系统的结构。

既存管理信息系统的分析
一、既存管理信息系统的结构
从逻辑上,我们可以将一个既存系统分为三层:
* 表示层(用户接口):整个应用程序的外部接口。将用户的输入信息传递给处理层以进行后续处理;通过各种媒体手段(音频、视频等)向用户反馈处理层传回的信息。
* 处理层(商业逻辑):整个应用程序运行的规则。将从表示层接收的信息按照用户的商业逻辑对存储层发出数据请求(包括增加、修改、删除和查询等),并根据存储层返回的信息,向表示层返回相应的信息。
* 存储层(用户数据):整个应用程序的基础、是用户最终感兴趣的信息。它记录着所有运行时期得到的数据。
那么这三层是如何分布在既存系统中的呢?归纳实际情况,它们的分布总共有以下几种方式:

* 三层独立方式:这一类应用系统是结构最好的一类,它一般是严格按照结构化方法或面向对象技术开发的应用程序,各层之间相互独立。表示层只处理用户的界面表示;处理层处理用户的业务逻辑;存储层负责数据的访问。每一层之间有严格定义的接口,每一层都可以在不改变接口的前提下,进行内部的改变。如:表示层可以在不改变与处理层调用接口的前提下将一些数据的显示界面由表格方式改为图形显示方式。而处理层同样可以不改动上下两层的情况下加入一些新的商业逻辑。在这种结构中,表示层、处理层和存储层分别可以通过终端模拟、过程调用和数据访问工具单独进行访问,由于它的各个层面都具有较好的独立性,与其它三种方式比较,最容易进行系统的重构与升级。
* 存储层独立方式:这一类应用程序结构也比较好,目前很多的商用应用系统都是按照这种逻辑制作的。在客户/服务器模式中,它将表示层与处理层合而为一,放在客户端,而存储层则统一存放在服务器端。这实际上是一种两层逻辑结构。这种结构对客户机的配置要求比较高,因此它的客户机往往被称为“胖客户机”。在这种结构中,存储层的数据可以通过其他前端数据工具访问得到,而用户的逻辑则被封装了起来,无法直接访问。从逆向软件工程的角度来讲,它也具有一定的系统可重构性。
* 表示层独立方式:这一类应用程序的结构与前一种方式的不同之处在于处理层所处的位置。在客户/服务器模式中,它的客户端只负责与用户打交道的人机界面(表示层)部分,所有的商业逻辑(处理层)与数据(存储层)都集中存放在服务器端。这种方式也是一种两层逻辑结构。相对于存储层独立方式,这种结构对客户机的配置要求要低一些,因此它的客户机往往被称为“瘦客户机”。在这种结构中,存储层的数据通过处理层被解释成可以被理解的方式,再由表示层将这些信息与用户交互。虽然我们也可以通过其他前端工具访问到存储层的原始数据,但这些数据往往不如前一种方式那样容易被用户所理解。这种方式也具有一定的系统可重构性。
* 单层方式:由于经济、技术条件的限制,早期(如基于主机系统)的应用系统往往属于这种结构。这种结构实际上无法划分出层次。这种方式的系统可重构性非常差,它基本无法实现向基于Internet的三层结构的平滑升级。
实际上,许多应用系统都可以分解为以上的某一种或几种方式的组合。按照以上四种方式来对既存系统进行分类,将有助于对系统升级的难易度进行评估并制订相应的升级计划——替换系统部件、渐进式的进行系统重构与升级还是重新构造应用系统。
二、既存管理信息系统的访问方式及相应技术
在这里,对既存系统的访问是指:通过某种方式直接、完全访问到既存系统的某一个层面(如前面所述表示层、处理层和存储层),从而使我们可以在缺少既存系统前一层的基础上达到对既存系统本层及其所有下层所提供的功能和服务的完全访问。根据前面的分析,我们认为对既存系统的访问方式主要有三种:对表示层的访问;对处理层的访问;对存储层的访问。
1.表示层访问技术
如果既存系统的表示层基于字符界面,则可以通过“管道”等技术实现对它的访问。这一过程一般被称为终端模拟(Terminal Simulation)。终端模拟器的功能如下图所示:

终端模拟器在接收到用户的信息后,经过输入转换,将用户的输入转换为可以被既存系统理解的格式并传送给既存系统,然后它截取到既存系统的输出信息,并将它转换为客户端可以理解的格式并完成传送。终端模拟器的关键技术在于对既存系统表示层输入与输出的截取。在Unix系统上,它一般按照如下方式进行:在由终端模拟器创建既存系统进程时对进程的输入及输出进行改向,使既存系统的所有输入与输出全部通过管道传送到终端模拟器中。
实际上终端模拟器是处于既存系统和新系统之间的一个转换工具,负责完成二者之间的数据(包括表示界面信息的数据)交互。终端模拟器使得新系统工作在既存系统的表示层之上,因此,新系统可以完全重用旧系统的所有功能。
2.处理层访问技术
如果一个既存系统的处理层可以被直接调用,那么可以运用相应的处理层访问技术对一个属于三层独立或表示层独立方式的既存系统进行处理层访问。
处理层的物理存在一般有服务进程、函数库、存储过程等方式。
这几种方式都可以通过进程通信或远程过程调用技术进行访问。通过该技术,进程A可以向进程B(位于本机上或远端的服务器上)发送请求,进程B将请求结果返回给进程A。这种方式在客户/服务器体系结构的应用系统中被大量采用。
采用OMG组织的CORBA或Microsoft公司的DCOM标准也可以实现对处理层的访问,DCOM技术是COM技术在网络上的发展。概括地说,它们都可以以面向对象的方式将对处理层的访问封装为一个个的类,新的客户程序通过采用CORBA或DCOM标准调用这些类来实现对既存系统处理层的访问。
3.存储层访问技术
除去单层方式以外,存储层的数据一般均可以被单独访问到。
SQL语句是对存储层进行访问的主要技术。SQL语句是被各种关系数据库系统支持的数据库查询语句。一些公司也提供通过使用SQL语句对非关系数据库系统进行查询的工具及API。
4.小结
下表给出对前述四种结构即存系统的各层实现访问的可行访问技术。
从再软件工程(Reengineering)的角度对这类问题进行分析可以看出,重构的难度主要取决于即存管理信息系统的结构。

既存管理信息系统的分析
一、既存管理信息系统的结构
从逻辑上,我们可以将一个既存系统分为三层:
* 表示层(用户接口):整个应用程序的外部接口。将用户的输入信息传递给处理层以进行后续处理;通过各种媒体手段(音频、视频等)向用户反馈处理层传回的信息。
* 处理层(商业逻辑):整个应用程序运行的规则。将从表示层接收的信息按照用户的商业逻辑对存储层发出数据请求(包括增加、修改、删除和查询等),并根据存储层返回的信息,向表示层返回相应的信息。
* 存储层(用户数据):整个应用程序的基础、是用户最终感兴趣的信息。它记录着所有运行时期得到的数据。
那么这三层是如何分布在既存系统中的呢?归纳实际情况,它们的分布总共有以下几种方式:

* 三层独立方式:这一类应用系统是结构最好的一类,它一般是严格按照结构化方法或面向对象技术开发的应用程序,各层之间相互独立。表示层只处理用户的界面表示;处理层处理用户的业务逻辑;存储层负责数据的访问。每一层之间有严格定义的接口,每一层都可以在不改变接口的前提下,进行内部的改变。如:表示层可以在不改变与处理层调用接口的前提下将一些数据的显示界面由表格方式改为图形显示方式。而处理层同样可以不改动上下两层的情况下加入一些新的商业逻辑。在这种结构中,表示层、处理层和存储层分别可以通过终端模拟、过程调用和数据访问工具单独进行访问,由于它的各个层面都具有较好的独立性,与其它三种方式比较,最容易进行系统的重构与升级。
* 存储层独立方式:这一类应用程序结构也比较好,目前很多的商用应用系统都是按照这种逻辑制作的。在客户/服务器模式中,它将表示层与处理层合而为一,放在客户端,而存储层则统一存放在服务器端。这实际上是一种两层逻辑结构。这种结构对客户机的配置要求比较高,因此它的客户机往往被称为“胖客户机”。在这种结构中,存储层的数据可以通过其他前端数据工具访问得到,而用户的逻辑则被封装了起来,无法直接访问。从逆向软件工程的角度来讲,它也具有一定的系统可重构性。
* 表示层独立方式:这一类应用程序的结构与前一种方式的不同之处在于处理层所处的位置。在客户/服务器模式中,它的客户端只负责与用户打交道的人机界面(表示层)部分,所有的商业逻辑(处理层)与数据(存储层)都集中存放在服务器端。这种方式也是一种两层逻辑结构。相对于存储层独立方式,这种结构对客户机的配置要求要低一些,因此它的客户机往往被称为“瘦客户机”。在这种结构中,存储层的数据通过处理层被解释成可以被理解的方式,再由表示层将这些信息与用户交互。虽然我们也可以通过其他前端工具访问到存储层的原始数据,但这些数据往往不如前一种方式那样容易被用户所理解。这种方式也具有一定的系统可重构性。
* 单层方式:由于经济、技术条件的限制,早期(如基于主机系统)的应用系统往往属于这种结构。这种结构实际上无法划分出层次。这种方式的系统可重构性非常差,它基本无法实现向基于Internet的三层结构的平滑升级。
实际上,许多应用系统都可以分解为以上的某一种或几种方式的组合。按照以上四种方式来对既存系统进行分类,将有助于对系统升级的难易度进行评估并制订相应的升级计划——替换系统部件、渐进式的进行系统重构与升级还是重新构造应用系统。
二、既存管理信息系统的访问方式及相应技术
在这里,对既存系统的访问是指:通过某种方式直接、完全访问到既存系统的某一个层面(如前面所述表示层、处理层和存储层),从而使我们可以在缺少既存系统前一层的基础上达到对既存系统本层及其所有下层所提供的功能和服务的完全访问。根据前面的分析,我们认为对既存系统的访问方式主要有三种:对表示层的访问;对处理层的访问;对存储层的访问。
1.表示层访问技术
如果既存系统的表示层基于字符界面,则可以通过“管道”等技术实现对它的访问。这一过程一般被称为终端模拟(Terminal Simulation)。终端模拟器的功能如下图所示:

终端模拟器在接收到用户的信息后,经过输入转换,将用户的输入转换为可以被既存系统理解的格式并传送给既存系统,然后它截取到既存系统的输出信息,并将它转换为客户端可以理解的格式并完成传送。终端模拟器的关键技术在于对既存系统表示层输入与输出的截取。在Unix系统上,它一般按照如下方式进行:在由终端模拟器创建既存系统进程时对进程的输入及输出进行改向,使既存系统的所有输入与输出全部通过管道传送到终端模拟器中。
实际上终端模拟器是处于既存系统和新系统之间的一个转换工具,负责完成二者之间的数据(包括表示界面信息的数据)交互。终端模拟器使得新系统工作在既存系统的表示层之上,因此,新系统可以完全重用旧系统的所有功能。
2.处理层访问技术
如果一个既存系统的处理层可以被直接调用,那么可以运用相应的处理层访问技术对一个属于三层独立或表示层独立方式的既存系统进行处理层访问。
处理层的物理存在一般有服务进程、函数库、存储过程等方式。
这几种方式都可以通过进程通信或远程过程调用技术进行访问。通过该技术,进程A可以向进程B(位于本机上或远端的服务器上)发送请求,进程B将请求结果返回给进程A。这种方式在客户/服务器体系结构的应用系统中被大量采用。
采用OMG组织的CORBA或Microsoft公司的DCOM标准也可以实现对处理层的访问,DCOM技术是COM技术在网络上的发展。概括地说,它们都可以以面向对象的方式将对处理层的访问封装为一个个的类,新的客户程序通过采用CORBA或DCOM标准调用这些类来实现对既存系统处理层的访问。
3.存储层访问技术
除去单层方式以外,存储层的数据一般均可以被单独访问到。
SQL语句是对存储层进行访问的主要技术。SQL语句是被各种关系数据库系统支持的数据库查询语句。一些公司也提供通过使用SQL语句对非关系数据库系统进行查询的工具及API。
4.小结
下表给出对前述四种结构即存系统的各层实现访问的可行访问技术。