初探计算机教学中软件可移植性在软件开发中的实现

2022-12-15 版权声明 我要投稿

在现代社会中, 软件应用于多个方面, 这些应用促进了社会和经济的发展, 提高了人们的工作效率和生活质量。但是随着软件的发展, 软件开发陷入危机, 计算机硬件的成本逐渐下降, 而软件的成本却呈现快速增长的趋势。不仅如此, 很多软件项目有时甚至要推迟完成, 并且比预计的费用高, 质量不高, 并且难以维护。软件不断增长的成本要求找到一些方法来节约成本、降低费用, 一种比较可行的方法是使得整个软件产品能够容易地在各种不同的硬件和操作系统上运行, 这样的软件产品就具有可移植性。

1 软件可移植性的概念

软件可移植性指的是把程序从一种计算环境 (硬件配置和操作系统) 转移到另一种计算环境并使之正常运行的难易程度。可移植性有时也被描述为跨平台性。作为软件的质量要素, 软件可移植性从软件对新环境的适应性这一方面反映了软件的质量, 是衡量软件质量的重要尺度之一。

软件产品的生存周期通常比那些第一次为之编写软件的硬件的生存期更长。好的软件产品可以有15年或更长的生存期, 可是硬件每隔4年就将更新一次。所以, 好的软件产品可以在它的整个生存期间, 在三个或更多的不同的硬件配置上实现。为解决这个问题, 可以采用不同的方法。一种方法是购买向上兼容的硬件, 这样做仅需要花钱购买相应的硬件产品, 而不需要对软件作变动。然而在一些情况下, 把产品移植到完全不同的硬件上在经济方面可能更合理。另一种方法是把与硬件、操作系统以及其他外部设备有关的程序代码集中放到特定的程序模块中, 把因环境变化而必须修改的程序局限在少数程序模块中, 从而降低修改的难度。可以通过这样的方法来实现软件的可移植性。

为提高软件的可移植性, 应尽量使软件与具体的设备无关, 即提高软件的设备独立性。

对于软件来说, 产品包括代码、文档等。把代码转移到别的硬件的同时还要修改文档, 因此, 可移植性还意味着能够容易地修改文档以反映目标配置, 而不需要重新写一个新的文档。如果把客户熟悉的软件产品移植到新的计算环境, 对于用户来说, 所需要的学习时间要比重新学习一个全新的软件产品要少得多。

由于不同的硬件配置、操作系统和编译器之间的不兼容性, 移植软件的问题就显得尤为重要。分析软件的可移植性需要考虑:不同的体系结构之间二进制形式的应用软件是不可移植的, 如果是源程序, 必须对其进行重新编译才可以在新的环境中运行。相同体系结构的硬件平台上, 如果操作系统也相同, 二进制形式的应用软件可移植, 否则必须对源程序进行相应的修改后重新编译链接生成新的可执行文件才可以在不同的操作系统下运行。对于同一种语言编写的程序在不同版本编辑器之间的可移植性, 取决于该语言的标准化程度和编译器实现时对语言标准的严格遵守程度。

软件的可移植性是软件共享的源程序文本资源的一个特性, 它可以从两方面来解释:原程序可以从一台处理机转向另一台处理机, 从一个编译程序转向另一个编译程序, 只需要很小的改动或根本不需要修改;源程序模块只需要很小的改动或不需要改动就可以集结到不同的软件包中。

2 软件可移植性的实现技术

实现软件产品的可移植性可以采取下面的一些方法。

一种方法是禁止程序员在开发时使用在移植到另一个计算机时可能引起问题的构件。

对于可移植的系统软件, 一种技术是可以隔离任何必须依赖于实现的程序段, 而不是禁止所有依赖于实现的特性方面。这项技术的一个例子就是建造UMIX操作系统的方式。这个操作系统大约有10000行代码, 其中约有9000行代码是用C语言写成, 剩下的构成内核的1000行代码用汇编语言写成, 因而对每一个实现都需要重写。大约1000行C代码组成设备驱动程序, 这部分代码在每次移植时需要重写, 剩余的8000行C代码在从实现到实现的移植中基本保持不变。另一种有用的技术是使用抽象层次来实现可移植性。例如工作站的图形显示程序, 用户插入一个drawcircle命令到自己的源代码中, 编译这段源代码并把它链接到图形显示程序中。运行时, drawcircle会使得工作站根据用户的要求在屏幕上画一个圆。可以通过使用两级抽象来实现。较高层次用高级语言写成, 解释用户的命令并调用适当的底层模块来执行该命令。如果将这个图形显示程序移植到一个新型工作站, 则不必修改用户代码或该图形显示程序的高层代码, 只需要重写该程序的底层模块, 因为这些模块实现与实际硬件的接口。

对于应用软件, 由于通常使用高级语言进行编写, 在进行选择实现的语言时, 应考虑到可移植性这个因素, 应该选择普遍实现的编程语言。不仅如此, 在开发的每一个阶段都应该采取一些相关措施来确保产品的可移植性。例如对于操作系统, 尽量选择主流的操作系统;提供安装手册式的文档, 在文档中标明产品的什么部分在移植时必须进行修改, 哪些部分可能需要修改, 并详细提供做什么及如何做的说明, 在用户手册或操作手册中已做的修改清单也必须在安装手册中出现。

对于数据, 可移植性这个问题很麻烦, 不仅存在硬件不兼容的问题, 还存在软件不兼容。比如不同的操作系统使用不同的索引顺序文件的格式。解决数据移植的最安全的方式就是构造一个非结构化的文件, 对该文件进行移植。从非结构化的文件可以重新构建结构化文件, 只需要编写两个特定的转换程序。一个运行在原机器上, 将原来的结构化文件转换为顺序文件形式。另一个运行在目标机器上, 将移植过来的顺序文件重新构建结构化文件。

3 结语

本文中只是简要介绍了一些实现软件可移植性的基本方法, 在具体的软件开发过程中还要根据软件项目的实际情况进行相应的分析和取舍。例如, 在实时控制系统中系统的有效性和可靠性是软件设计中的重点, 而软件的可移植性可能就会被放宽要求, 甚至被放弃。

摘要:本文介绍软件可移植性的概念、特点及实现技术。

关键词:软件,软件可移植性

参考文献

[1] 张海藩.软件工程导论[M].清华大学出版社, 2005.

[2] 梁颖红.软件工程理论与实践[M].哈尔滨工业大学出版社, 2008.

[3] 齐治昌, 谭庆平, 宁洪.软件工程[M].高等教育出版社, 2001.

上一篇:办公自动化网络安全的探讨下一篇:当前农村小学教师队伍建设的难点与对策