Software portability
Portability in high-level computer programming is the usability of the same software in different environments. The prerequirement for portability is the generalized abstraction between the application logic and system interfaces. When software with the same functionality is produced for several computing platforms, portability is the key issue for development cost reduction.
Strategies for portability
Software portability may involve:
Transferring installed program files to another computer of basically the same architecture.
Reinstalling a program from distribution files on another computer of basically the same architecture.
Building executable programs for different platforms from source code; this is what is usually understood by "porting".
Similar systems
When operating systems of the same family are installed on two computers with processors with similar instruction sets it is often possible to transfer the files implementing program files between them.
In the simplest case the file or files may simply be copied from one machine to the other. However, in many cases, the software is installed on a computer in a way which depends upon its detailed hardware, software, and setup, with device drivers for particular devices, using installed operating system and supporting software components, and using different drives or directories.