Extensibility as a software concept refers to an application’s capability to be easily modified or expanded upon in the future. Decades ago in software development, extensibility was rarely considered a priority. Consequently, iterative software changes or add-ons were difficult to manage. Programs typically had features and presentation written into the code, so minor changes could involve extensive recoding, retooling and troubleshooting. Often a new version had to be released for major changes to take place. For significant overhauls, software teams would often simply start coding from scratch.

Today, software developers realize that very few applications and services are set in stone. New changes are made all the time, and the ability to implement those changes without extensive work or problem-solving is far more ideal.

Additionally, many end user clients want the ability to customize their software instance, integrate it with other commonly used programs or add on functionality. As a result, modern software is often written in such a way that the core code runs modular functionalities, each of which can be modified, adapted or added to.

Agile software development facilitates this process since each sprint involves creating an iterative build of enhancements. The rising popularity of plug-ins, extensions, mods, and other types of third-party features is another sign that most developers take for granted that their product will be changed in some way over time.

For example, consider modern video games. Home console games like Super Mario Bros. were once standalone products that could not be modified by the typical end user. Now, with both modern PC and console games, updates are downloaded instantly online and installed by the end user. These updates can include iterative changes to the core game (software), or they can be optional add-ons (downloadable content, or “DLC”) installed at the end user’s discretion. In this way, a piece of video game software can be modified quickly and easily through simple end user inputs.

For those developing BI applications or software that implements BI features, extensibility and an open architecture are important priorities. Offering customizations and the ability to add on “plug and play” features without cumbersome installation processes can greatly enhance the appeal of BI-related software, systems and applications.