Forward compatibility


Forward compatibility

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

A forward-compatible system is expected to gracefully handle input which is intended for a newer version, by ignoring the unknowns and selecting the known subset of the data that the system is capable of handling. Forward compatibility is harder to achieve than backward compatibility because a system needs to cope gracefully with an unknown future data format or requests for unknown future features. Backward compatibility does not have this issue because it accepts a known data format.

An example of forward compatibility is a web browser ignoring the HTML tags that it does not (yet) recognize. It is typical for forward compatible systems to ignore unknown data or application instructions.

Many application software systems are designed with a robust and self-sufficient systems architecture so that they can operate adequately even when input for a more advanced version is entered.

In all cases, when the application system accepts the input data or operating system is not as expected, it will produce an output that will identify the problem accurately for the user.

A code example

Assume that version "v0" of a program expects inputs of the form <t>X</t>, where t is an envelope containing some data X. Version "v1" requires some extra functionality and thus it is also able to accept inputs of the form <s>X</s>, where s is a specialization of t. Now "v0" cannot read the input <s>X</s>, since "v0" has no knowledge that s can be treated as t. It would appear that since s is a specialization of t, the new input could have been coded as <t type="s">X</t> where the ‘type’ attribute denotes the specialized nature. This is indeed a better form of the input, but if "v0" wasn’t designed to gracefully ignore the ‘type’ attribute, this won’t present forward-compatibility either. In fact, the design of "v0" determines its forward compatibility. The choice now is simple: forward compatibility or new functionality?

If the choice is new functionality, then we break forward compatibility. But it is important now to build into "v1" the ability to gracefully treat future inputs we could foresee (e.g., ignore attributes, such as "type", that the program does not understand).

ee also

*Computer compatibility

External links

* [http://www.catb.org/~esr/writings/taoup/html/ch01s06.html#id2879112 Rule of Extensibility: Design for the future, because it will be here sooner than you think] , in The Art of Unix Programming


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • forward compatibility — perspektyvinis suderinamumas statusas T sritis informatika apibrėžtis Įrangos savybė derėti su būsima įranga. Pasiekiama, kai projektuojant įrangą atsižvelgiama į įrangos projektavimo ir gamybos tendencijas, laikomasi standartų, kurių, tikimasi,… …   Enciklopedinis kompiuterijos žodynas

  • forward compatibility — noun Capability of interoperating with anticipated future systems. See Also: backward compatibility, forward compatible …   Wiktionary

  • Compatibility — may refer to: Astrological compatibility Compatibilism – a philosophical position Compatibility (geochemistry) Compatibility (chemical) Compatibility (mechanics) Electromagnetic compatibility Interpersonal compatibility Computing Pin… …   Wikipedia

  • Compatibility mode (browser) — Compatibility mode is a feature of Internet Explorer (IE), a web browser, from version 8 onwards. IE8 Internet Explorer 8 was promoted by Microsoft as having stricter adherence to W3C described web standards than Internet Explorer 7. As a result …   Wikipedia

  • compatibility — noun a) the capability of two or more items or components of equipment or material to exist or function in the same system or environment without mutual interference. b) the ability to execute a given program on different types of computers… …   Wiktionary

  • forward compatible — adjective Capable of interoperating with anticipated future systems. In order to be forward compatible, we keep a configurable list of valid keywords that we dont understand. See Also: backward compatible, forward compatibility …   Wiktionary

  • Forward error correction — In telecommunication, information theory, and coding theory, forward error correction (FEC) or channel coding[1] is a technique used for controlling errors in data transmission over unreliable or noisy communication channels. The central idea is… …   Wikipedia

  • Backward compatibility — In the context of telecommunications and computing, a device or technology is said to be backward or downward compatible if it can work with input generated by an older device.[1] If products designed for the new standard can receive, read, view… …   Wikipedia

  • Computer 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.… …   Wikipedia

  • upward compatibility — perspektyvinis suderinamumas statusas T sritis informatika apibrėžtis Įrangos savybė derėti su būsima įranga. Pasiekiama, kai projektuojant įrangą atsižvelgiama į įrangos projektavimo ir gamybos tendencijas, laikomasi standartų, kurių, tikimasi,… …   Enciklopedinis kompiuterijos žodynas