Calendar

November 2005
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

November 10, 2005

On Interface, Implementation, and Reuse

Filed under: architecture,integration,webarch,webservices — Mark Baker @ 2:58 pm

A common technique in software development, but particularly in distributed software development, is the “separation of interface from implementation”, whereby software components are developed to have dependencies only upon the interfaces (the connectors, in architectural terms) of other components, and not their implementations. The purpose of this technique is to isolate the impact of a change of implementation to just the changed component, thereby reducing coupling between components. The technique is so pervasively referenced and evangelized, that it’s practically axiomatic.

Unfortunately, it’s not commonly practiced.

Many who claim that they’re using this technique will tell you that the use of a description language, such as IDL or more commonly nowadays, WSDL, does this for them. It does not.

As mentioned, the purpose of the technique is to isolate the impact of implementation changes. Yet this WSDL contract for a new home buyers database places extreme restrictions on how the implementation can vary because it is so specific to, well, a new home buyers database. Need an interface to an historical database of home purchases, or one to a database of recent automobile sales? Too bad, you need a new interface, and therefore new code to use that service. So much for that separation of concerns!

The lesson here, I suggest, is the following;

True separation of interface from implementation requires designing broadly reusable interfaces.

• • •

1 Comment »

  1. […] I’ve been doing a lot of writing recently (most of it yet to be published) on a specific topic that I first wrote about here a while back. The topic is important because it’s the answer to a question I was asked (offline) a few weeks ago; In your opinion, what is the one thing that most clearly separates REST from SOA? […]

    Pingback by Integrate This»Blog Archive » One thing — October 17, 2006 @ 10:09 am

Comments RSSTrackBack URI

Leave a comment

You must be logged in to post a comment.

Powered by: WordPress • Template by: Priss