Software compatibility

Software compatibility is a characteristic possessed by different software components or systems which can operate together. Software incompatibility is a characteristic of software components or systems which cannot operate together.

Today many software systems are developed by many developers working to some extent independently. Application software is generally compatible with at least one operating system, though some exist in versions which are cross-platform compatible. Some software, such as anti-virus programs, and software firewalls are nowadays considered by many to be essential for satisfactory operation. However some configurations of programs are not compatible, even though the individual programs may themselves be compatible with a wide range of other software. Software compatibility may change over time, as the developers modify their programs. It is possible that software may become incompatible due to updating, just as it is also possible that developers may extend their software to render it more compatible with other programs.

Examples
Consider sequential programs of the form:

Request resource A
Request resource B
Perform action using A and B
Release resource B
Release resource A

A particular program might use a printer (resource A) and a file (resource B) in order to print the file.

If several such programs P1,P2,P3 ... operate at the same time, then the first one to execute will block the others until the resources are released, and the programs will execute in turn. There will be no problem. It makes no difference whether a uni-processor or a multi-processor system is used, as it's the allocation of the resources which determines the order of execution.

Note, however, that programmers are, in general, not constrained to write programs in a particular way, or even if there are guidelines, then some may differ from the guidelines. A variant of the previous program may be:

Request resource B
Request resource A
Perform action using A and B
Release resource A
Release resource B

The resources A and B are the same as in the previous example - not simply dummy variables, as otherwise the programs are identical.

As before, if there are several such programs, Q1,Q2,Q3 which run at the same time using resources as before, there will be no problem.

However, if several of the Ps are set to run at the same time as several of the Qs, then a deadlock condition can arise. Note that the deadlock need not arise, but may.

P: Request resource A
Q: Request resource B
Q: Request resource A (blocked by P)
P: Request resource B (blocked by Q)
...

Now neither P nor Q can proceed1.

This is one kind of example where programs may demonstrate incompatibility.

Another example of a different kind would be where one software component provides service to another. The incompatibility could be as simple as a change in the order of parameters between the software component requesting service, and the component providing the service. This would be a kind of interface incompatibility. This might be considered a bug, but could be very hard to detect in some systems.

1. C. M. Krishna, K. G. Shin, Real-Time Systems, McGraw-Hill, 1997









List of known incompatibilities

* Comodo Firewall is incompatible with Kaspersky Anti-Virus system

Installation incompatibilities
Sometimes in a particular system there may be no practical route to install one or more software systems. This does not mean that the software is necessarily incompatible, but that from the current system state there is no reasonable route to a working installation. An example would be if an anti-virus system and a firewall are both installed together. If either installation disables the internet connection, then it will not be possible to update, register or otherwise complete the installation of the other. This may be due to bugs in the software or the installation software.
 
< Prev   Next >