Extensibility refers to the ability of an entity to accommodate changes to its specifications and adapt through increasing its current capabilities. The degree of extensibility is proportional to the effort required to achieve this increased functionality.
Extensibility is a desirable characteristic for software to possess, in that it reduces the effort required to change software in the event of changes to its specifications. These modifications usually occur frequently, requiring changes in the implementation of software packages. However, software is not always designed to be extensible because it requires more design and development effort, is more complex to test and deploy, and might exhibit diminished performance.
Extensibility also supports software reuse in that software modules can be easily modified to meet the requirements of a variety of applications. However, to be effective, it is beneficial for extensible software developers to have some understanding of the possible future applications of the software and the corresponding changes that would have to be made.
Extensible software usually involves versioning to identify the different generations of code that would be available for use under different scenarios. It is also important for developers to provide for mechanisms that will detect erroneous behavior of extended software modules at runtime and prevent the software from executing and causing damage or unwanted behavior. Also, extensible software ...