Software compatibility can refer to the compatibility that a particular software has running on a particular
CPU instruction set such as x86 or ARM. Software compatibility can also refer to ability for the software to run on a particular
operating system. Very rarely is a
compiled software compatible with multiple different CPU architectures. Normally, an application is compiled for different CPU architectures and operating systems to allow it to be compatible with the different system.
Interpreted software, on the other hand, can normally run on many different CPU architectures and operating systems if the interpreter is available for the architecture or operating system.
Software incompatibility occurs many times for new software released for a newer version of an operating system which is incompatible with the older version of the operating system because it may miss some of the features and functionality that the software depends on. ==Hardware compatibility==