- Extensibility
In
software engineering , extensibility (sometimes confused withforward compatibility ) is asystem design principle where the implementation takes into consideration future growth. It is a systemic measure of the ability to extend asystem 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 while minimizing impact to existing system functions.In
systems architecture , extensibility means the system is designed to include hooks and mechanisms for expanding/enhancing the system with new capabilities without having to make major changes to the system infrastructure. A good architecture provides the design principles to ensure this—a roadmap for that portion of the road yet to be built. Note that this usually means that capabilities and mechanisms must be built into the final delivery which will not be used in that delivery and, indeed, may never be used. These excess capabilities are "not frills," but are necessary formaintainability and for avoiding earlyobsolescence .Extensibility can also mean that a software system's behavior is modifiable at runtime, without recompiling or changing the original source code. For example, a software system may have a public
Application Programming Interface that allows its behavior to be extended or modified by people who don't have access to the original source code.Although usually applied to engineered
systems involvingsoftware , it can be applied to any type of engineering. Houses can be built with future extensions in mind. ThePrince Edward Viaduct located inToronto ,Ontario ,Canada was built to accommodate a future subway line.Though the application to software is relatively new, the word has been a rare but valid part of English for a long time. The "
Oxford English Dictionary " cites examples going back to the 17th century.
Wikimedia Foundation. 2010.