Forward compatibility

From Free net encyclopedia

Forward compatibility (sometimes confused with extensibility) is the ability of a system to accept input intended for later versions of itself.

Forward compatibility is harder to achieve than backward compatibility, since, in the backward case, the input data format is known whereas a forward compatible system needs to cope gracefully with an unknown future data format or requests for unknown future features.

An example of forward compatibility is the specification that a web browser ignore HTML tags not recognised. Ignoring data or application instructions not recognized is the typical behavior of forward compatible systems.

Software applications attempting to provide backward compatibility with older operating system versions must pay close attention to the software logic used in responding to operating system version identification. Often, backward compatibility is provided when an earlier operating system version is identified, and special behavior is provided for each earlier version. Some applications will 'error exit' when the operating system version cannot be identified. Others default to a particular version of the application, e.g., to a 'plain vanilla,' special default version (one using/requiring the least advanced or technically complex features). If the application has no tolerance for unexpected behavior, an 'error exit' may achieve the desired result at the expense of forward compatibility. If, however, the (potential) benefit of forward compatibility outweighs its cost, some default behavior (forward compatibility) is generally provided, even if the operating system version cannot be identified.

Many application software systems are given a sufficiently robust systems architecture that, as in the example of HTML above, they can proceed adequately even in the presence of input for a very much more advanced version.

In all cases, when the input data or operating system is not as expected, the correctly performing application system produces an output that will identify the problem for the user.

This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL.

See also