软件构造课学习体悟(一)关于软件可移植性与软件兼容性的区别

	对于软件的十项外部质量因素中的可移植性与兼容性在初学时有些困惑,这两种性质的定义有部分的近似。对于各个平台间的可移植性及兼容性间是否存在一定的交集,进行如下探讨。

一、软件可移植性的概念:
首先介绍一下可移植性的概念。在软件工程中,可移植性(英语:Portability),又译为移植性、可携性,是指使用高阶语言写成的软件,在不同环境下,是否具备可以被重复使用的性质。一般来说,软件是否具备可移植性的衡量标准,在于进行软件移植时,需要付出多少工时为代价。具备高可移植性的软件,在移植到不同系统平台时,并不需要做太多事情,因此能够减少软件开发及布署时的成本。为了使软件具备高度可移植性,程序员需要使应用程序界面抽象化以及模组化。以低阶语言,例如汇编语言,写成的软件,一般来说,其可移植性都较低。

二、软件兼容性的概念及分类判别标准:
软件兼容性,指的是不同的软件系统之间相互可容易的集成,我们称之为有好的兼容性。常见的需要评估软件兼容性的情况有:操作系统兼容性,异构数据库兼容性及新旧数据转换等。评测指标主要有异种数据兼容性、应用软件兼容性、硬件兼容性(如今较少讨论,因为现如今的硬件标准似乎已经趋于一致与完善)。
除此之外,在维基百科上还可见向下兼容(向后兼容、回溯兼容)词条,这个定义为在一个程序、库或硬件更新到较新版本后,应用就版本程序创建的文档或系统仍能被正常操作或使用(包括输入数据)、在旧版本库的基础上开发的程序仍能正常编译运行,或较旧版的硬件仍可在新版使用的情况。对于这种同一事物在纵向时间线上不同版本之间的交互关系似乎也归属于兼容性的范围

三、个人观点
对于可移植性,它指的应当是一个软件对于目标环境的适应能力,包括对于程序源代码在不同环境下无需较大改动重新编译即可,以及对于在目标环境下直接运行软件的可执行代码的规范性的要求,是关于软件的本身代码构成对于系统环境适应性的评估。而对于兼容性则不局限于单个软件的性质,它应该是不同软件与软件之间,甚至是同一软件的不同版本之间的一种规则匹配度的测定,两者还是存在着一些差别。

四、百科中给出的解释
软件可移植性的概念有广义和狭义之分。广义的可移植性涉及软件在规定环境下的安装、运行及与相关标准的匹配等不同方面,可分解为适应性、易安装性、兼容性和可(易)替换性。
适应性是指软件能否适应不同的目标环境。
易安装性是指在规定环境下安装软件的难易程度。
兼容性是指软件是否符合与可移植性相关的标准或约定。
可(易)替换性是指软件能否在规定环境下替换其它软件以及替换的难易程度。
狭义的可移植性即指软件对目标环境的适应性,可分解为两个层次:源代码级和可执行代码级。

	可见,若以广义的视角来看待可移植性,那么兼容性确与其存在着重合的部分。但细细体会又会发现其中的种种差别。日后的学习大概着重讨论的也会是狭义的软件可移植性,期待更深入地体会两者之间的差异。
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值