Pragmatic Software Design

Vijay Narayanan

Transforming Legacy Applications

user-pic
Vote 0 Votes

There are many organizational initiatives with respect to modernizing legacy applications. So how do you go about doing that? Before we answer that question it is useful to think about the characteristics of legacy systems. They tend to be tightly coupled in a variety of ways (mixing process logic with business rules and presentation logic with connectivity etc.). Additionally, they could support both real-time and batch operations for critical business processes. They also tend to support a plethora of downstream processes that have embedded in them various assumptions about data format, file layouts, data semantics, interface behavior, and error handling. Not to mention the variety of interfaces that external applications use to interact with a legacy application.

So we are back to the original question of modernizing legacy apps. There are a variety of design strategies to undertake when refactoring these applications:

  1. Eliminate/reduce tight coupling among legacy systems by placing a layer of abstraction between them. This in turn can be pursued in many ways - using reliable messaging, or using a service mediation layer, or using a business process orchestration layer
  2. Prevent point to point integrations between service consumers and legacy service providers. Without a mediation layer that shields consumers you will be having a tough time decommissioning legacy capabilities.
  3. Refactor functionality iteratively bit by bit. Migrate functional logic from the legacy system and determine how best to refactor it and place it in your target architecture/platform. Maybe you want to create a family of web service capabilities wrapping legacy programs, extract business rules and place them in a rules engine, and remove user interface screens and host them from an application server.
  4. Stop making any significant enhancements to legacy systems and invest in your target platform only. If possible, you can implement business requirements by refactoring legacy capabilities instead of enhancing the legacy system only.
  5. Re-route data operations against strategic data sources and update legacy systems using asynchronous messaging. This will enable your target data source be the definitive system of record and legacy stores consume data from the master source. This is useful when you want to improve data quality as well - you may not be able to put in business rules preventing bad data from entering your legacy systems. Instead you can focus on improving quality in the strategic source and mandating legacy stores to accept the right quality of data.

No TrackBacks

TrackBack URL: http://www.ebizq.net/MT4/mt-tb.cgi/16038

1 Comment

| Leave a comment
user-pic

These seem like great strategies, Vijay. Was just reading how some software suppliers, like Pitney Bowes Business Insight, have now integrated their data quality, data governance and data integration solutions on a single platform that interfaces with leading ERP and CRM systems. Seems like its all coming together.

Leave a comment

Vijay Narayanan blogs about software design from several perspectives - SOA,BPM, messaging, systematic reuse, agility, and architecture.

Vijay Narayanan

Vijay Narayanan is a software professional working on a variety of projects. Vijay has worked on several software initiatives ranging from single-user systems to large, distributed, multi-user service platforms with services. Most recently, Vijay has been involved in research dedicated to combining agile practices with service-orientation. He is a contributing author to the upcoming book Next Generation SOA as part of a chapter on modern SOA methodologies. Vijay maintains a blog dedicated to software reuse at http://www.artofsoftwarereuse.com.

Recently Commented On

Monthly Archives

Blogs

ADVERTISEMENT