向后移植是一种对现有软件进行更改(补丁)的动作,其将较新版本的改变部份移植到旧版软件上。它构成了软件开发过程中的软件维护步骤,通常用于修复旧版软件中的安全性错误。
概述向后移植最简单也最常见的情况是,在新版软件中有一个已经被修复的安全性漏洞,而旧版软件也存在这个漏洞。下面是一个简化过的例子:
软件v2.0版有一个已被修复的计算机安全隐患,只要将字符串 'is_unsecured' 更换成 'is_secured' 就可以修复。
同样的安全漏洞也存在软件v1.0版中,虽然是基于较新版本的代码库,但该字符串仍为 'is_unsecured'。
做出这些修改修复软件v2.0版,并更改使其可以应用在软件v1.0版上,此即称为向后移植。
在现实生活中,这些改变可能非常容易(只需要更改几行源代码),也可能需要大规模的修改(修改分布在许多文件中的源代码)。在后面这一种情况下,向后移植可能会繁琐且效率不彰,所以通常只在软件的旧版本比新版本更加的被需要的情况下才会发生(例如,新版本可能仍有稳定性问题存在时)。1
步骤向后移植大致可分为以下这几个步骤:
找出旧版软件需要利用向后移植修复的问题
找出修复(通常是最近的)这个问题的源代码更动
在旧版代码的基础上进行适应性修改(正确的向后移植)
一或多层次的质量控制- 测试产出的版本是否保持了先前的功能并正确实现了新的功能。
通常来说,多个此类型的修改都会集合成补丁套装。
向后移植可以由核心软件设计师提供。因为向后移植需要软件源代码的访问权,这是闭源软件向后移植的唯一方法-向后移植通常伴随着二进制文件的升级。而开源软件的部分,向后移植有时候会由Linux发行版做出,然候送到上游(就是提交到受影响的软件的核心开发人员)。2
示例在Windows XP的Service Pack 3发布时,许多Windows Vista的特性被向后移植到Windows XP上,让许多最低要求是Windows Vista的应用程序(多数是游戏)得以在Windows XP SP3上运行。1
软件维护软件维护(英语:Software maintenance)是一个软件工程名词,是指在软件产品发布后,因修正错误、提升性能或其他属性而进行的软件修改。
一般认为软件维护只和修正错误有关。不过有研究指出80%的软件维护工作是用在非纠正性的行动。
软件维护同时包括管理层面及技术层面。管理层面的问题包括:配合客户的优先级、人员配置及费用估计。技术层面的问题包括:对需求、系统或问题有限的理解、影响分析、测试以及可维护性的量测。2
本词条内容贡献者为:
王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所