论文部分内容阅读
将一个程序从一个运行平台迁移(移植)到另外一个运行平台的过程通常被称为程序迁移,是软件演化与维护的重要内容,也是应用程序扩大用户范围的重要途径。 基于规则的应用程序迁移技术是近年来得到众多关注的应用程序迁移技术。这种技术输入预先定义好的转换规则集和待转换的代码,然后由转换引擎根据转换规则进行代码转换,最后输出转换后的代码,从而将一个应用程序的部分或者全部迁移到另外一个平台上。这个过程一般包括三项关键技术:“转换规则的描述”、“转换规则的获取”以及“基于转换规则的代码转换”。已有研究成果虽然在这三项关键技术中均取得了一定的进展,但是同时也存在一些限制与不足:1)在转换规则的描述方面,有的转换规则描述语言语法简单,但是无法描述复杂情况,有的转换规则描述语言能够描述复杂情况,但是语言语法本身过于复杂,难以广泛使用;2)在转换规则获取方面,现有技术在获取不同API库替换过程的转换规则时,召回率比较低;3)在基于转换规则迁移方面,现有技术难以自动处理多对一与多对多映射实例,并且对特定应用场景的应用程序迁移的工作较少。 针对上述不足与限制,本文提出了一系列的相应解决方法,并进行了有效的验证。本文的主要研究工作与创新点包括: 1、一种复合式的转换规则描述语言(CMIL) 该描述语言能够对转换规则进行形式化描述。该语言虽然语法简单,却能够描述绝大多数实际项目中的转换规则,从而降低开发者对语言本身的学习成本,但又不影响应用该语言进行程序代码转换的效果。 2、一种迭代式的转换规则获取方法(CMIM) 该方法综合使用调用分析、文本相似度分析和参数依赖分析等多种分析技术,对API库的源码进行分析,并创新地提出一种迭代式分析技术,从而能够获取出具有较高准确率和召回率的转换规则。通过使用4个不同规模的开源项目对比本文的方法和当前流行的方法,发现本文的方法不仅能够提高获取相同API库的不同版本的替换过程中的转换规则的准确率和召回率,而且也能够提高获取不同API库替换过程中的转换规则的准确率和召回率。 3、一种支持多对一与多对多API映射实例的代码转换方法(CMIT) 该方法不仅能够支持处理简单的一对一映射实例和一对多映射实例,也支持处理复杂的多对一映射实例与多对多映射实例。通过对七个不同规模的开源项目对比使用本文的方法和当前流行的方法,可以发现本文的方法能够灵活地处理各种情况,并且在不降低准确率的情况下,使得召回率提高33.8%。并且本文的方法还为UI代码迁移进行了定制,可以直接应用于UI代码的迁移。 综上所述,本文所提出的上述解决方法试图从基于转换规则的应用程序迁移的三项关键技术分别提升现有技术的可用性和有效性。针对上述方法,本文分别通过实验较为充分地评估并验证了各个方法的可行性和有效性。