The Importance of Writing Highly Configurable Software
Highly configurable software provides adaptable and flexible solutions to complex, real world problems for the ever changing information technology environment. It is the product of following established industry best practices while creating reusable code that is easy to configure, build, test, deploy, and maintain. These characteristics lead to a significant reduction in the total cost of ownership over the lifetime of the software.
Highly configurable software produces code that is smaller, simpler, modular, and loosely coupled. Software designed to be configurable works exceptionally well in architectures that use existing industry standards like Design Pattern and Enterprise Integration Patterns (EIP). At its core, highly configurable software moves threshold values or logic structures out of the code into key configuration points such as XML, JSON, or name-value pairs. As a result, the code decreases in size while increasing in reusability and configurability; thus, simplifying the code for future flexibility and maintainability. The following two examples clarify this point:
For our first example, instead of hard coding the minimum weekly payment for unemployment insurance in code, the value can be a key configuration point. The team now has the ability to change the value and then simply restart the application for the new value to take effect. Previously, any change to this value would require the development team to build, test, and redeploy the entire application. As demonstrated, key configuration points greatly reduces the impact of changes on the entire development process.
Let’s review a second example. A list of ten unemployment insurance eligibility criteria filters can be extracted out of code into key configuration points. By using the EIP Pipe and Filters Pattern combined with a Creational Design Pattern solution, a developer can easily change the list of eligibility requirements without touching the code. Using highly configurable software practices allows for easy manipulation of the list itself (add, remove, reorder, etc). These components can be changed separately without the need to reconstruct the list or duplicate code, increasing reuse and modularity. This modularity simplifies the code, increases readability, and reduces code complexity during testing, while following known industry standards.
Properly implemented highly configurable software uses established best practices and conventions known within the industry. Therefore, by leveraging these known, standard design patterns, and/or EIP improves the software’s readability, adaptability, and flexibility. These best practices and conventions are technology agnostic. As a result, developers quickly and efficiently produce meaningful work when using the principles of highly configurable software. Developers are able to retain and apply this knowledge on future teams and projects. This allows the team to be more productive earlier in the software development life cycle, which aids in reducing overall cost.
Change is constant in information technology. Adaptability to this change directly results from utilising highly configurable software. The simplistic and modular design of this software creates flexible code that reduces the burden of normal maintainability. By following industry standards that span across technologies,the wealth of knowledge on development teams increases while enriching our community for future success. Highly configurable software enforces a substantially lower total cost of ownership as a result of its simplicity, flexibility, and adherence to industry standards.