Integration and Interoperability

 

Someone asked me a really good question via my blog yesterday:

 

What is the difference between the terms interoperability and integration when it comes to software?

 

This is something I haven't really got a good definition for and that I tend to use interchangeably, probably incorrectly, so I went to look up the definitions:

 

Integration: the act of forming, coordinating, or blending into a functioning or unified whole.

 

Interoperation: The ability of two or more systems or components to exchange information and to use the information that has been exchanged.

 

When I put some more thought into it I came to the conclusion that in my mind they are different and have different use models.

 

Interoperation is a peer to peer sort of thing where the two systems interoperate between themselves sharing information (which may be state and so can change processes in one another). Interoperation is more allied to a web services set of concepts and SOA.

 

Integration is where a system is subsumed within another either conceptually (one black box holding and hiding another) or physically (a web front end added to a mainframe application). ESB's and Enterprise portals are more akin to integration systems.

 

So they are different and my usage has been sloppy, I will try to do better. Its also interesting how they naturally align with certain types of architectural models.