Extensibility is the degree to which an application can be enhanced in the future to meet changing requirements or goals. Extensibility is also known as adaptability, changeability, expandability, extendibility, and flexibility. A typical objective of an extensibility requirement is ensuring that future enhancements to an application can be easily and quickly implemented. Another objective is implementing these enhancements with a minimum of costs.
When creating extensibility requirements, it's helpful to have a full understanding of the environment your application will reside in and to try to predict in which directions the application might need to evolve in the future. This exercise must not happen in a vacuum, but must utilize the accumulated knowledge and vision of the management and user groups. You should also use any other information sources that could help provide additional direction.
Extensibility is not a recently discovered concept for the development of Web-based applications. For many years, a goal of application development has been to build systems that remain flexible and to provide and implement steps that extend the application's useful life.
Extensibility can be tightly coupled with scalability, so extensibility requirements should include the ability to enhance data, hardware, and software components.
Extensibility requirements are usually specified in terms of average person-time or cost to make the different categories of enhancements. There are usually two categories of extensibility requirements: general and specific. A general extensibility requirement might be requesting that the average amount of person-time needed to make a minor enhancement, including all testing and documentation, should not exceed one person week. A specific extensibility requirement for the Billington Pharmaceuticals case study might be extending the application so that it can still handle the expected tripling of traffic each year without exceeding 40 person days of effort.