Search This Blog

Friday, September 18, 2009

Interface Simplification

One of the common problems I see in large (and not so large) organisations is the proliferation of interfaces.  Let's not get hung up on the type of interface in terms of the enabling technology, but rather look at the complexity that builds over years and even decades.

Why does it happen?
Organisations either buy or build applications.  Then there is a decision to move information between the applications.  An interface is born!  Let's call the first 2 applications A & B.  Then another application (called C) wants to exchange information with A, but not quite the same information as B does.  So another interface is created - the A-C interface.

You can see how over years, this network of inter-connectivity between applications can reach quite daunting complexity.  Now when you change an application, as well as making sure the change doesn't break the application's current functionality, you must also ensure all of the interfaces involving this application, also continue to function correctly.  Then, when you move a change into production, you have to ensure that all changed applications are updated in unison.  If just 1 application change fails, you have to back out ALL changes - think of the cost and possible disruption to your business!

How to simplify
Start with an application, probably best to select the one with a lot of interfaces.  Identify the interfaces where the application provides outgoing information/data.  You need to analyse the data with a goal of combining the total data needs of all recipients and attempt to create a single, wider feed of information that includes the data elements required by all recipients.

For example, let's say an application has 3 outgoing interfaces to recipient applications called X, Y & Z.  X requires data elements D1, D2, D3 & D4.  Y requires D1, D2, D5 & D9.  And lastly, Z requires D1, D3, D6, D7 & D8.  By combining the needs of all recipients, we create an outgoing interface with data elements D1 through to D9.  We now have 1 interface instead of 3 - but there's more to do.

We need to ensure that the recipient applications only receive what they are expecting.  There are 2 approaches to this; change the recipient application to extract only the data elements it requires out of the new, wider interface, or create an interface "hub" to do this work.

In Conclusion
The more complexity, the more work you need to do to regain control over your interfaces.  However, the benefits are worth it.  Reduced development costs (with changes), reduced testing costs.  Faster delivery of new interface recipient for existing information feeds, etc.  There are other factors to consider, such as standardising interface formats, using XML, etc - but I'll save that for another day!

Cheers, Pete

No comments:

Post a Comment