Extendibility might seem like maintainability, but actually extendibility is quite different. Maintainability has to do with making sure solution changes can be deployed in a seamless fashion.
Extendibility has to do with making sure that solution enhancements can be developed in an effective fashion.
Proprietary or monolithic solutions are difficult to extend. Standards-based or open architecture solutions are easy to extend. In the Web era market conditions can change in real time.
The ability to enhance an e-Commerce solution, whether in terms of
customer-facing application[1] segments, internal functions, or supply chain interfaces, often accounts for a company's market viability. Extendibility drives choices such as tools, application servers, and the ability to take advantage of third-party Web-based services.
Consequently, architects should remember their "abilities."
We guarantee you that you will read about these "abilities" again and again in the various sections on considerations.
In software engineering, extensibility is a system design principle where the implementation takes future growth into consideration. It 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 internal structure of the system and data flow are minimally affected. Recompiling or changing the original source code is unnecessary when changing a systems behavior, either by the creator or other programmers.
Because software systems are long lived and will be modified for new features and added functionalities, extensibility enables developers to expand or add to the software's capabilities and facilitates systematic reuse.
Some of its approaches include facilities for the program routines of users to be inserted and the abilities to define new data types.