Software incompatibility is a characteristic of
software
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
At the lowest programming level, executable code consists ...
components or
systems
A system is a group of interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its environment, is described by its boundaries, structure and purpose and express ...
which cannot operate satisfactorily together on the same
computer
A computer is a machine that can be programmed to Execution (computing), carry out sequences of arithmetic or logical operations (computation) automatically. Modern digital electronic computers can perform generic sets of operations known as C ...
, or on different computers linked by a
computer network
A computer network is a set of computers sharing resources located on or provided by network nodes. The computers use common communication protocols over digital interconnections to communicate with each other. These interconnections are ...
. They may be components or systems which are intended to operate cooperatively or independently.
Software compatibility
A family of computer models is said to be compatible if certain software that runs on one of the models can also be run on all other models of the family. The computer models may differ in performance, reliability or some other characteristic. T ...
is a characteristic of software components or systems which can operate satisfactorily together on the same computer, or on different computers linked by a computer network. It is possible that some software components or systems may be compatible in one environment and incompatible in another.
Examples
Deadlocks
Consider sequential programs of the form:
Request
resource
Resource refers to all the materials available in our environment which are technologically accessible, economically feasible and culturally sustainable and help us to satisfy our needs and wants. Resources can broadly be classified upon their ...
A
Request resource B
Perform action using A and B
Release resource B
Release resource A
A particular
program
Program, programme, programmer, or programming may refer to:
Business and management
* Program management, the process of managing several related projects
* Time management
* Program, a part of planning
Arts and entertainment Audio
* Progra ...
might use a
printer
Printer may refer to:
Technology
* Printer (publishing), a person or a company
* Printer (computing), a hardware device
* Optical printer for motion picture films
People
* Nariman Printer (fl. c. 1940), Indian journalist and activist
* James ...
(resource A) and a
file
File or filing may refer to:
Mechanical tools and processes
* File (tool), a tool used to ''remove'' fine amounts of material from a workpiece
**Filing (metalworking), a material removal process in manufacturing
** Nail file, a tool used to gent ...
(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
Execute, in capital punishment, is to put someone to death.
Execute may also refer to:
*Execution (computing), the running of a computer program
* ''Execute'' (album), a 2001 Garage hip-hop album by Oxide & Neutrino
* USS ''Execute'' (AM-232), an ...
will
block
Block or blocked may refer to:
Arts, entertainment and media Broadcasting
* Block programming, the result of a programming strategy in broadcasting
* W242BX, a radio station licensed to Greenville, South Carolina, United States known as ''96.3 ...
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
Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor or the ability to allocate tasks between them. There ar ...
system is used, as it's the allocation of the resources which determines the order of execution.
Note, however, that
programmers
A computer programmer, sometimes referred to as a software developer, a software engineer, a programmer or a coder, is a person who creates computer programs — often for larger computer software.
A programmer is someone who writes/creates ...
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
In concurrent computing, deadlock is any situation in which no member of some group of entities can proceed because each waits for another member, including itself, to take action, such as sending a message or, more commonly, releasing a lo ...
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 proceed
1.
This is one kind of example where programs may demonstrate incompatibility.
Interface 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
A parameter (), generally, is any characteristic that can help in defining or classifying a particular system (meaning an event, project, object, situation, etc.). That is, a parameter is an element of a system that is useful, or critical, when ...
between the software component requesting service, and the component providing the service. This would be a kind of
interface
Interface or interfacing may refer to:
Academic journals
* ''Interface'' (journal), by the Electrochemical Society
* ''Interface, Journal of Applied Linguistics'', now merged with ''ITL International Journal of Applied Linguistics''
* '' Inte ...
incompatibility. This might be considered a
bug, but could be very hard to detect in some systems. Some interface incompatibilities can easily be detected during the
build stage, particularly for strongly
typed systems, others may be hard to find and may only be detected at
run time
Run(s) or RUN may refer to:
Places
* Run (island), one of the Banda Islands in Indonesia
* Run (stream), a stream in the Dutch province of North Brabant
People
* Run (rapper), Joseph Simmons, now known as "Reverend Run", from the hip-hop group ...
, while others may be almost impossible to detect without a detailed program analysis.
Consider the following example:
Component P calls component Q with parameters x and y. For this example, y may be an integer.
Q returns f(x) which is desired and never zero, and ignores y.
A variant of Q, Q
' has similar behaviour, with the following differences:
if y = 100, then Q
' does not terminate.
If P never calls Q with y set to 100, then using Q
' instead is a compatible
computation
Computation is any type of arithmetic or non-arithmetic calculation that follows a well-defined model (e.g., an algorithm).
Mechanical or electronic devices (or, historically, people) that perform computations are known as ''computers''. An es ...
.
However if P calls Q with y set to 100, then using Q
' instead will lead to a non-terminating computation.
If we assume further that f(x) has a numeric value, then component Q
'' defined as:
Q
'''' behaves as Q except that
if y = 100 then Q
'' does not terminate
if y = 101 then Q
'' returns 0.9 * f(x)
if y = 102 then Q
'' returns a random value
if y = 103 then Q
'' returns 0.
may cause problem behaviour. If P now calls Q
'' with = 101, then the results of the computation will be incorrect, but may not cause a program failure. If P calls Q
'' with y = 102 then the results are unpredictable, and
failure
Failure is the state or condition of not meeting a desirable or intended objective (goal), objective, and may be viewed as the opposite of Success (concept), success. The criteria for failure depends on context, and may be relative to a parti ...
may arise, possibly due to
divide by zero or other errors such as
arithmetic overflow
Arithmetic () is an elementary part of mathematics that consists of the study of the properties of the traditional operations on numbers—addition, subtraction, multiplication, division, exponentiation, and extraction of roots. In the 19th cen ...
.
If P calls Q
'' with y= 103 then in the event that P uses the result in a division operation, then a divide by zero failure may occur.
This example shows how one program P1 may be always compatible with another Q1, but that there can be constructed other programs Q1' and Q1
'' such that P1 and Q1' are sometimes incompatible, and P1 and Q1
'' are always incompatible.
Performance incompatibility
Sometimes programs P and Q can be running on the same computer, and the presence of one will inhibit the performance of the other. This can particularly happen where the computer uses
virtual memory
In computing, virtual memory, or virtual storage is a memory management technique that provides an "idealized abstraction of the storage resources that are actually available on a given machine" which "creates the illusion to users of a very l ...
. The result may be that
disk thrashing
In computer science, thrashing occurs when a computer's virtual memory resources are overused, leading to a constant state of paging and page faults, inhibiting most application-level processing. This causes the performance of the computer to d ...
occurs, and one or both programs will have significantly reduced performance. This form of incompatibility can occur if P and Q are intended to cooperate, but can also occur if P and Q are completely unrelated but just happen to run at the same time. An example might be if P is a program which produces large output files, which happen to be stored in
main memory
Computer data storage is a technology consisting of computer components and recording media that are used to retain digital data. It is a core function and fundamental component of computers.
The central processing unit (CPU) of a computer ...
, and Q is an anti-virus program which scans many files on the hard disk. If a
memory cache
In computing, a cache ( ) is a hardware or software component that stores data so that future requests for that data can be served faster; the data stored in a cache might be the result of an earlier computation or a copy of data stored elsewher ...
is used for virtual memory, then it is possible for the two programs to interact adversely and the performance of each will be drastically reduced.
For some programs P and Q their performance compatibility may depend on the environment in which they are run. They may be substantially incompatible if they are run on a computer with limited main memory, yet it may be possible to run them satisfactorily on a machine with more memory. Some programs may be performance incompatible in almost any environment.
See also
*
Backward compatibility
Backward compatibility (sometimes known as backwards compatibility) is a property of an operating system, product, or technology that allows for interoperability with an older legacy system, or with input designed for such a system, especially i ...
*
Forward compatibility
Forward compatibility or upward compatibility is a design characteristic that allows a system to accept input intended for a later version of itself. The concept can be applied to entire systems, electrical interfaces, telecommunication signals, d ...
References
*C. M. Krishna, K. G. Shin, Real-Time Systems, McGraw-Hill, 1997
{{DEFAULTSORT:Software Incompatibility
Incompatibility
Software