Extensibility

From Wiki @ Karl Jones dot com
Jump to: navigation, search

In software engineering, extensibility is a system design principle where the implementation takes future growth into consideration.

Description

Extensibility is a systemic measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be through the addition of new functionality or through modification of existing functionality. The central theme is to provide for change – typically enhancements – while minimizing impact to existing system functions.

Extensibility is a software design principle defined as a system’s ability to have new functionality extended, in which the system’s internal structure and data flow are minimally or not affected, particularly that recompiling or changing the original source code is unnecessary when changing a system’s behavior, either by the creator or other programmers.

Extensibility versus forward compatibility

Extensibility is similar too, but different from, forward compatibility.

A forward compatible design can accept data from a future version of itself and pick out the "known" part of the data. An example is a text-only word processor ignoring picture data from a future version. An extensible design is one that can be upgraded to fully handle the new data in the newer input format. An example is a text-only word processor that can be upgraded to handle picture data.

Plug-ins

In computing, plug-ins provide extensibility using application programming interfaces.

Scalability

Does it scale? See Scalability.

See also

External links