Metaprogramming to the Rescue
Metaprogramming to the rescue
The primary reason why upgrading customized software is so costly is because of the techniques employed to perform the customization. In most cases, software is customized by altering the underlying source code of a commercial package or by changing the parameters that define a model-driven software product. Both approaches involve changing aspects of the code or data structure provided by the vendor. Any changes made to software assets provided by a commercial vendor make upgrades more complex, riskier and more expensive.
Metaprogramming describes the technique of using one software program to alter the behavior of another-either at compile time or at run-time. The benefits attained through metaprogramming are traditionally described in terms of higher productivity and reduced testing. However, metaprogramming techniques also provide the benefit of isolating customizations and ensuring a more cost-effective upgrade path.
Adopting metaprogramming as a vendor-supported approach for software customization benefits both the vendor and customer. From the vendor's perspective, releasing selective source code is always a concern, even when necessary to allow customers more control over their customizations. Metaprogramming techniques mitigate this need, yet still provide customers the flexibility to customize the software in a controlled manner.
From the customer's perspective, the approach gives them the ability to make wholesale modifications to the application, while retaining a straightforward and cost-effective upgrade path-crucial for ensuring the long-term TCO benefit of adopting vendor-supplied software.
Bill Hyman is Senior Solutions Consultant at S1 Enterprise. Bill has over 20 years of experience in business management and technology. Before joining S1, Bill spent more than 10 years with Fidelity National Information Services. Before Fidelity, Bill was Managing Consultant and Practice Lead for Ballantyne Consulting Group, where he managed the company's software development practice. Throughout his career, Bill has led implementation projects for many large financial institutions, including some of the country's largest banks. Bill is a graduate of Clemson University, with a degree in Industrial Management with an emphasis in Computer Information Systems. He can be reached at firstname.lastname@example.org.