论文部分内容阅读
由于遗留系统存在技术陈旧、系统结构混乱、文档缺失和维护成本高等问题,越来越多的企业和组织采用新技术将遗留系统再工程到新的软件或硬件平台,以提高系统的可靠性、可重用性、可维护性和运行性能。遗留系统再工程一直是软件工程领域中一个重要的研究课题,近二十年来,研究者在软件逆向工程、软件再工程技术和遗留系统再工程过程及方法等方面做了大量研究,如设计恢复、业务逻辑提取、遗留系统移植和目标系统测试等,以解决日益增长的遗留系统危机。但是现有的大多数再工程技术和方法仅仅针对常规遗留系统,当面对规模庞大业务复杂的大型遗留系统时,这些方法很难发挥出原有功效。 大型遗留系统再工程存在两大挑战:首先,分布式是大型系统的发展趋势,将单机模式的大型遗留系统再工程到分布式环境是一个巨大挑战,从遗留系统中提取组件信息及将组件部署到分布式环境是应该被重点关注的问题。其次,与常规遗留系统相比,大型遗留系统的业务逻辑提取面临更多困难:代码量太大以致常规的语句层程序分片不能为分析人员提供足够的帮助;数以万计的主域变量和同义变量管理较为困难,当常规的管理方法面对大量主域变量时,变量库的可读性降低,不能达到预期效果;大型遗留系统的业务逻辑表达也是一个巨大挑战,这些业务逻辑跨越不同部门,在企业/组织中又很少存在通晓所有业务逻辑的专家,因此如何多层次多视角地展示提取出来的业务逻辑也是一个必须解决的难点。 本文研究目标是针对大型遗留系统建立可行高效的再工程框架。首先提出了基于J2EE Partition分布式环境的软件再工程框架,该框架包括遗留代码向目标语言转换、模块信息提取、模块接口建模和J2EE partition分布式环境下的模块部署四个部分。目前,该框架中的遗留代码转换部分实现了C++向Java转换的定义,主要思想是基于MoHCA-JAVA并对人工修改提示做了优化;模块信息提取部分主要采用CSWP度量和层次凝聚算法;接口建模部分提供了J2EE环境下的经典接口模式;模块部署部分主要介绍了Partition初始部署策略等四个有效的部署模式,并对Partition动态分布提出了负载均衡算法。两个应用验证了该框架的强壮性、实用性和通用性。 本文同时也提出大型遗留系统的业务逻辑提取框架。该框架主要包括五个部分:遗留代码模块划分、主域变量自动化识别(基于Information-flow Relations和Data Dependence Graph算法)、数据分析、业务逻辑表达以及业务逻辑确认。目前该框架已经成功应用于一个大型金融遗留系统。总结上述,本文主要贡献如下: (1)提出了基于J2EE Partition分布式环境的软件再工程方法。Partition分布式环境的高性能、强负载均衡能力和优良的横向扩展性可以很好体现本框架的价值所在。 (2)鉴于大型遗留系统的特点,提出了带权重参数的连接强度(Connectivity Strength with Weight Parameter)这一新的组件度量,用来恢复大型遗留系统中的组件信息。 (3)针对J2EE Partition分布式环境,提出了简洁高效的组件部署策略和设计模式,并对Partition动态分布提出了负载均衡算法。 (4)提出了大型遗留系统业务逻辑提取框架,该框架解决了上述常规提取方法作用于大型遗留系统时的主要难题。 (5)提出了两种自动化识别主域变量的方法:基于信息流相关(Information-flow Relations)的识别方法和基于数据依赖图(DDG)的识别方法。 本文第一章主要介绍了大型遗留系统再工程的背景知识和研究现状;第二章叙述了基于J2EE Partition分布式环境的软件再工程框架;第三章用两个案例说明了该框架的强壮性、实用性和通用性;第四章展示了大型遗留系统业务逻辑提取框架,并简要介绍了该框架的应用;第五章详细描述了提取框架中的核心部分:主域变量自动化识别;最后我们总结全文,并讨论一些未来研究方向。