首页 理论教育 源代码修改问题及解决方案

源代码修改问题及解决方案

时间:2023-11-17 理论教育 版权反馈
【摘要】:一方面,由于软硬件环境在快速更新换代的过程中不断推陈出新,使得应用软件需要具备兼容更多不同平台的能力,另一方面,由于各大应用领域的软件系统都有大型化和复杂化的发展趋势,使得对源代码修改面临一系列的问题与挑战。因此,在从源代码中检索出系统调用/用户编程接口的基础上,如何准确判断其所在的语义块的范围是通过修改源代码进行软件移植的过程中不可回避的一个问题。

源代码修改问题及解决方案

一方面,由于软硬件环境在快速更新换代的过程中不断推陈出新,使得应用软件需要具备兼容更多不同平台的能力,另一方面,由于各大应用领域的软件系统都有大型化和复杂化的发展趋势,使得对源代码修改面临一系列的问题与挑战。

(1)功能等效性。不同的平台由于立足点的不同,因此在设计思想上有着本质的区别,从而导致其在设计架构以及最终实现上呈现出差异性。这些差异性具体反映在其所规定的系统资源访问方式上。这种系统资源访问方式在代码上的具体实现又被称为系统调用/用户编程接口(API)。通过对源代码进行修改,使得依赖于一个平台的应用软件能够顺利运行于另一个异构平台,并保持功能以及外部行为上的一致性,就面临如何用目标平台所提供的系统调用/用户编程接口来等效替换应用软件运行于源平台所依赖的系统调用/用户编程接口,即异构平台系统调用/用户编程接口功能等效性问题。

(2)高效性。平台是否能够为程序员开发应用软件提供大量的灵活性和功能,成为平台是否能够成为主流平台,并被大众所认可和接受的关键所在。每一个平台都会竭尽所能为程序员开发提供大量的系统调用/用户编程接口。而这些系统调用/用户编程接口便根据应用软件具体需求在程序员的精思巧构下无规律地散落于源代码的各个角落,并与其他函数调用混合在一起。在对源代码的修改过程中,通过手工查找替换的方式,不仅需要程序员熟悉不同平台所提供的系统调用/用户编程接口,并且需要精通对它们的使用,即便如此,也易有疏漏之处;同时对于大型应用软件而言,这种方式是烦琐而低效的。因此如何通过计算机辅助的方式高效准确地检索出源代码中所出现的系统调用/用户编程接口便成为一个亟待解决的问题。(www.xing528.com)

(3)语义性。应用软件可以看做是一组提供给用户使用的逻辑功能的集合。每一个逻辑功能又由一组粒度更为细小的逻辑功能组来实现。从源代码的角度来看,一个基本的功能是由一组有序的语句来共同实现的,语句与语句之间蕴含特定的语义关系,这些语句构成一个完整的语义单元。当试图对从源代码中检索出的系统调用/用户编程接口进行修改时,会发现它们并不是孤立存在于某一行语句中的,它们的存在有着极强的上下文语义关联性,通过参数传递机制相互作用。对它们的修改可谓是“牵一发而动全身”。因此,在从源代码中检索出系统调用/用户编程接口的基础上,如何准确判断其所在的语义块的范围是通过修改源代码进行软件移植的过程中不可回避的一个问题。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈