Extensibility is a software engineering and systems design principle where the implementation takes future growth into consideration. The term extensibility can also be seen as 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. An extensible system is one whose internal structure and data flow are minimally or not affected by new or modified functionality.
Applications need to be able to grow without being totally rewritten. Sure, there eventually comes a time when every app needs a major overhaul, but if applications are written to be extensible in the first place, the overhaul can be performed in pieces; and in the meantime, new features can be added or existing features changed without bringing the app down.
We have been always following this principle while developing the system so that we will be able to provide the features the customers will ask. The system in behind is running with highly normalized database which is also providing the base for our extendable architecture. We can add any feature you like.