For years, commercial software providers have delivered turnkey software applications to their customers that address a focused set of business requirements. These applications implement a robust set of business functions that capture and promote industry-wide best practices and provide an affordable alternative to custom software development.
However, licensees of these software packages frequently need to address functional gaps between what the software provider delivers and what their unique business requirements demand. Closing these gaps requires the licensee to either customize the software solution or wait for future product enhancements to arrive. Most choose to customize the package to address fundamental product gaps and to implement new features that are competitive differentiators.
While this implementation approach appears to be a cost-effective and timely way to implement complex software functionality, it does introduce something commonly referred to as the "upgrade dilemma"-the situation that arises when the cost of upgrading a solution to the newest release exceeds the cost of starting over from scratch.
One of the important value propositions in acquiring commercial software is that the vendor provides functional enhancements to the application through subsequent releases. Upgrading a customized software application often requires tedious retrofitting of customizations to the newest release and comprehensive regression testing of the entire software package-even for minor upgrades. Many customers choose to defer the upgrade process due to these costs, but this exacerbates the problem because the deployed version of the software becomes more difficult to upgrade in the future.