Information about Forward Compatibility

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 because it needs to cope gracefully with an unknown future data format or requests for unknown future features. Backward compatibility does not have this issue as it accepts a known data format.

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

Software applications attempting to provide backward compatibility with older operating system versions must pay close attention to the software logic used in responding to the identified operating system. Often, backward compatibility is provided when an earlier operating system version has been identified, and special behavior is provided for each earlier version. Some applications will stop and exit, also known as “error exit”, when the operating system version cannot be identified. Others will go to a particular version of the application, for example, 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. However, if the potential benefit of forward compatibility outweighs its cost, a standard behavior (forward compatibility) is generally provided, even when the application cannot identify the operating system’s version.

Many application software systems are designed with a robust and self-sufficient systems architecture that they can operate adequately even when input for a far 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.

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

An 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).

See also

In software engineering, extensibility (sometimes confused with forward compatibility) is a system design principle where the implementation takes into consideration future growth.
..... Click the link for more information.
Input is the term denoting either an entrance or changes which are inserted into a system and which activate/modify a process. It is an abstract concept, used in the modeling, system(s) design and system(s) exploitation. It is usually connected with other terms, e.g.
..... Click the link for more information.
In technology, especially computing (irrespective of platform), a product is said to be backward compatible (or downward compatible) when it is able to take the place of an older product, by interoperating with other products that were designed for the older product.
..... Click the link for more information.
Data format in information technology can refer to either one of:
  • Data type, constraint placed upon the interpretation of data in a type system
  • Signal (electrical engineering), a format for signal data used in signal processing

..... Click the link for more information.
A web browser is a software application that enables a user to display and interact with text, images, videos, music and other information typically located on a Web page at a website on the World Wide Web or a local area network.
..... Click the link for more information.
HTML (Hypertext Markup Language)

File extension: .html, .htm
MIME type: text/html
Type code: TEXT
..... Click the link for more information.
For other uses, see Data (disambiguation).


Debt, AIDS, Trade in Africa (or DATA) is a multinational non-government organization founded in January 2002 in London by U2's Bono along with Bobby Shriver and activists from the Jubilee 2000 Drop
..... Click the link for more information.
source code (commonly just source or code) is any sequence of statements and/or declarations written in some human-readable computer programming language.
..... Click the link for more information.
Application software is a subclass of computer software that employs the capabilities of a computer directly and thoroughly to a task that the user wishes to perform. This should be contrasted with system software which is involved in integrating a computer's various capabilities,
..... Click the link for more information.
In technology, especially computing (irrespective of platform), a product is said to be backward compatible (or downward compatible) when it is able to take the place of an older product, by interoperating with other products that were designed for the older product.
..... Click the link for more information.
An operating system (OS) is the software that manages the sharing of the resources of a computer. An operating system processes system data and user input, and responds by allocating and managing tasks and internal system resources as a service to users and programs of the
..... Click the link for more information.
In mathematics, computing, linguistics, and related disciplines, an algorithm is a finite list of well-defined instructions for accomplishing some task that, given an initial state, will proceed through a well-defined series of successive states, eventually terminating in an
..... Click the link for more information.
Application software is a subclass of computer software that employs the capabilities of a computer directly and thoroughly to a task that the user wishes to perform. This should be contrasted with system software which is involved in integrating a computer's various capabilities,
..... Click the link for more information.
System may refer to:
  • System a set of entities, real or abstract, comprising a whole.
  • In biology, a biological system is a group of organs, and an ecosystem is an entity comprised of a large number of organisms and their environment.

..... Click the link for more information.
A system architecture or systems architecture is the design or set of relations between the parts of a system. There is no strict definition of which aspects constitutes a system architecture, and various organizations define it in different ways, including:

..... Click the link for more information.
Input is the term denoting either an entrance or changes which are inserted into a system and which activate/modify a process. It is an abstract concept, used in the modeling, system(s) design and system(s) exploitation. It is usually connected with other terms, e.g.
..... Click the link for more information.
For the British independent record label, see Output Recordings
Output is the term denoting either an exit or changes which exits a system and which activate/modify a process.
..... Click the link for more information.
GNU Free Documentation License (GNU FDL or simply GFDL) is a copyleft license for free documentation, designed by the Free Software Foundation (FSF) for the GNU project.
..... Click the link for more information.
Fault-tolerance or graceful degradation is the property that enables a system (often computer-based) to continue operating properly in the event of the failure of (or one or more faults within) some of its components.
..... Click the link for more information.
In technology, especially computing (irrespective of platform), a product is said to be backward compatible (or downward compatible) when it is able to take the place of an older product, by interoperating with other products that were designed for the older product.
..... Click the link for more information.
In software engineering, extensibility (sometimes confused with forward compatibility) is a system design principle where the implementation takes into consideration future growth.
..... Click the link for more information.
Fault-tolerance or graceful degradation is the property that enables a system (often computer-based) to continue operating properly in the event of the failure of (or one or more faults within) some of its components.
..... Click the link for more information.
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.
..... Click the link for more information.
The Art of Unix Programming by Eric Raymond is a book about the history and culture of Unix programming from its earliest days in 1969 to now, covering both genetic derivations such as BSD and conceptual ones such as Linux.
..... Click the link for more information.


This article is copied from an article on Wikipedia.org - the free encyclopedia created and edited by online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of the wikipedia encyclopedia articles provide accurate and timely information please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.
Herod_Archelaus


page counter