Extensibility
- Extensibility (a.k.a., Expandability, Extendibility)
- the type of modifiability
representing the degree of easiness of enhancing an
business enterprise,
system,
application, or
component
to meet future goals and significantly changing requirements
As illustrated in the preceding figure, Extensibility is part of the following inheritance hierarchy:
The typical responsibilities of extensibility are to:
- Model the ease with which a system, application, or component
can be enhanced to meet future goals and significantly changing requirements.
- Support the analysis and specification of
extensibility requirements.
- Provide a foundation for evaluating the quality of an architecture.
Extensibility is typically decomposed into the following aggregation hierarchy of subfactors:
Extensibility is typically measured in terms of:
- Average effort (i.e., person-time) to make a specific enhancement.
- Average cost to make a specific enhancement.
- Average calendar time needed to make a specific enhancement.
Typical mechanisms for implementing extensibility include:
- Adherence to project conventions.
- Complete and current documentation.
- Information hiding of implementation.
- Layered architectures.
- Modular software.
- Object-orientation and component-based development.
- Well-defined interfaces.
The following guidelines have been found to be useful regarding extensibility:
- Extensibility may include:
- Enhancing a business enterprise, system, application, or data, hardware, and software components.
- Enhancing the associated documentation.
- Performing all associated regression or new testing.