好记性不如铅笔头

随手记

向后移植

本文转自【 https://zh.wikipedia.org/zh-cn/%E5%90%91%E5%BE%8C%E7%A7%BB%E6%A4%8D 】,有删改。

向后移植是一种对现有软件进行更改(补丁)的动作,其将较新版本的改变部分移植到旧版软件上。它构成了软件开发过程中的软件维护步骤,通常用于修复旧版软件中的安全性错误。

概述

向后移植最简单也最常见的情况是,在新版软件中有一个已经被修复的安全性漏洞,而旧版软件也存在这个漏洞。下面是一个简化过的例子:

软件v2.0版有一个已被修复的计算机安全隐患,只要将字符串 ‘is_unsecured’ 更换成 ‘is_secured’ 就可以修复。同样的安全漏洞也存在软件v1.0版中,虽然是基于较新版本的代码库,但该字符串仍为 ‘is_unsecured’。

做出这些修改修复软件v2.0版,并更改使其可以应用在软件v1.0版上,此即称为向后移植[1]。
在现实生活中,这些改变可能非常容易(只需要更改几行源代码),也可能需要大规模的修改(修改分布在许多文件中的源代码)。在后面这一种情况下,向后移植可能会繁琐且效率不彰,所以通常只在软件的旧版本比新版本更加的被需要的情况下才会发生(例如,新版本可能仍有稳定性问题存在时)[2]。

步骤

向后移植大致可分为以下这几个步骤:

  1. 找出旧版软件需要利用向后移植修复的问题
  2. 找出修复(通常是最近的)这个问题的源代码更动
  3. 在旧版代码的基础上进行适应性修改(正确的向后移植)
  4. 一或多层次的质量控制 - 测试产出的版本是否保持了先前的功能并正确实现了新的功能

通常来说,多个此类型的修改都会集合成补丁套装。

向后移植可以由核心软件设计师提供。因为向后移植需要软件源代码的访问权,这是闭源软件向后移植的唯一方法-向后移植通常伴随着二进制文件的升级。而开源软件的部分,向后移植有时候会由Linux发行版做出,然候送到上游(就是提交到受影响的软件的核心开发人员)[2]。

示例
在Windows XP的Service Pack 3发布时,许多Windows Vista的特性被向后移植到Windows XP上,让许多最低要求是Windows Vista的应用程序(多数是游戏)得以在Windows XP SP3上运行[3]。

Leave a Reply

15 − 4 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据