Something Digital

INSIGHTS

Our take on the digital landscape...

 
REFACTORING LEGACY APPLICATIONS TO MAXIMIZE UTILITY AND COMPATIBILITY
Refactoring is the process of changing software code without changing the software’s external behavior. The process can vary from changing simple display characteristics to restructuring an entire legacy code base.  For my purposes here, let’s narrow the focus to rewriting legacy code to modernize custom business applications. 
 
The first step is to determine when refactoring makes sense.  With processes like EAI, or tools such as SDK’s and API’s, refactoring might be unnecessary in some contexts.  But it almost always warrants consideration. Take, for example, a piece of custom legacy software that successfully supports broad enterprise processes.  Adopting a new application to replace an already efficient process is not always the best option, given the change management issues.  And before pursuing EAI or custom translators, consider the infrastructure requirements, developer knowledge base, and long-term strategic plan.

One of our clients—a leading provider of communication products for the financial services industry—recently presented us with a perfect candidate for refactoring. They had a legacy Visual Basic app that facilitated access to existing service orders and infrastructure information for more than 400 sales and maintenance teams worldwide. But crippling load and scale issues were hindering the company’s standard business processes, and the code base was now different than all other internal systems. 

Our refactoring process preserved the critical legacy business logic while improving design and function.  We chose VB.NET as the framework, because 1) it matched the new skills of internal developers, and 2) it would bring the application in line with other company systems.  Our process included devising a scalable .NET security model, creating an object model to describe business objects and legacy application logic, and identifying COM components to be replaced by .NET equivalents (a combination of proprietary code libraries and 3rd-party tools).  Lots of preparation and thought went into the project, and it met all pre-determined success measures.  Most importantly, client staff embraced the piece of custom legacy software that successfully supports broad enterprise processes.  Adopting a new application to replace an already efficient process is not always the best option, given the change management issues.  And before pursuing EAI or custom translators, consider the infrastructure requirements, developer knowledge base, and long-term strategic plan.

One of our clients—a leading provider of communication products for the financial services industry—recently presented us with a perfect candidate for refactoring.  They had a legacy Visual Basic app that facilitated access to existing service orders and infrastructure information for more than 400 sales and maintenance teams worldwide.    But crippling load and scale issues were hindering the company’s standard business processes, and the code base was now different than all other internal systems. 
 
Our refactoring process preserved the critical legacy business logic while improving design and function. We chose VB.NET as the framework, because 1) it matched the new skills of internal developers, and 2) it would bring the application in line with other company systems.  Our process included devising a scalable .NET security model, creating an object model to describe business objects and legacy application logic, and identifying COM components to be replaced by .NET equivalents (a combination of proprietary code libraries and 3rd-party tools).  Lots of preparation and thought went into the project, and it met all pre-determined success measures.  Most importantly, client staff embraced the new technology immediately, recognizing the efforts we made to preserve the application’s familiarity while introducing a great set of enhancements.

To ensure success with these projects, consider taking the following steps before you get to coding: 1 - DISCOVER
  • Gather Business Requirements
  • Code base
  • Critical elements to preserve
  • Conduct Broader Needs Assessment
  • Business logic
  • Points of integration
  • End-client capacity
  • Network
  • Usability/UI requirements
  • Software architecture
    Training/Maintenance
2 - DESIGN
  • Create Business Vision Document
  • Develop and get buy-in for new software specifications
  • Design the UI Composition
  • Create a custom QA plan
  • Produce a process for deployment/implementation
  • Circulate a project plan to the entire team
And keep in mind, the process of refactoring is not always a cheaper or more efficient option by itself.  Often times there are other value considerations, such as skill set of your developer teams, long-term strategy, costs to manage workflow changes, maintenance fees, etc.  If refactoring is something you want to consider, assess the value by applying your standard metrics and look at ROI.  And of course, you can always call your favorite custom developers for a helping hand.

If you would like to comment or receive more information, please contact us at info@somethingdigital.com.