Something that has confused and annoyed me over quite a few years are the words Interoperability and Integration and that they are used widely in IT and are often used interchangeably to suggest that perhaps they mean the same thing. My instinct has always known that there is a significant difference but at recent meetings/workshops on the subject I have found the terms used in equal measure and that each person seems to have their own definition, all of which comprise of several 100 words that don’t necessarily provide any more clarity. There are overlaps of course, but what is interoperability and is there a difference with integration?
Here’s the story is my little voyage ...
First stop, Wikipedia and the first thing to note was that the only relevant definition for Integration in a computer context was when prefixed with the word “System”, fair enough.
Systems integration is the process of linking together different computing systems and software applications physically or functionally.( Wikipedia)
Unlike Integration Interoperability had a top level definition of its own that spans both to systems and organisations:
Interoperability is a property referring to the ability of diverse systems and organizations to work together (inter-operate). (Wikipedia)
Therefore, to compare one needs to either promote integration (remove the word system) such that the definition includes organisations or to demote interoperability (introduce the word system) and limit the scope of its definition. I have elected to do the latter (although either approach would work) here is the definition for System Interoperability:
System Interoperability is a property referring to the ability of diverse systems to work together (inter-operate). (Wikipedia – modified)
The result is two extremely similar definitions that would suggest that integration and interoperability could indeed mean the same thing. However, I am still not convinced and therefore could it be that Wikipedia has an error?
For quite a while the word “diverse” stood out for me as the differentiating word but after many hours of pontificating to myself on this I had to accept that “diverse” and “different” are extremely similar words that are hard to separate in terms of meaning so Wikipedia it seems is still at fault. That said, the concept of diversity in an evolutionary context and the “future of the unknown” remained as being significant contributors to my thought process throughout as we shall see.
So the searches for other definitions came up with the IEEE definition for example which on the surface fared little better.
the ability of two or more systems or components to exchange information and to use the information that has been exchanged. (IEEE)
Going back to Microsoft’s view on Interoperability I watched a catchy interview with Bob Muglia discussing interoperability. He talked about “systems working together” and introduced the word “disparate” meaning “very different” which I liked a lot. He also talked about the need for “standards” too – now this was interesting. Obviously, we all associate Standards with our definitions of Interoperability but does “being interoperable” require one to adopt standards? No definitions so far have actually stated this requirement, but there would clearly be value in using standards. In returning to Wikipedia and the section on Software Interoperability it states that “the lack of interoperability can be a consequence of a lack of attention to standardization” and that “interoperability is not taken for granted in the non-standards-based portion of the computing world.” So is it possible that standards mark a significant difference between integration and interoperability? Next I went to the Wikipedia definition for standardisation which lists its goals as being “to help with independence of single suppliers (commoditization), compatibility, interoperability, safety, repeatability, or quality.” Ah so that’s good and ties the two together neatly.
But obviously, one needed to check with ISO and here’s their definition for Interoperability which firmly supports the use of standards by inferring the need for some layer of separation between systems, although explicit use of standards for this purpose is avoided:
Interoperability is the capability to communicate, execute programs, or transfer data among various functional units in a manner that requires the user to have little or no knowledge of the unique characteristics of those units (ISO/IEC 2382-01)
So in one sense I thought I was close but then again does the use of some layer of separation differentiate the two terms? Maybe but it was now that a nagging thought returned how can you compare an “-ility” a “quality of being” word with a “-tion” an “action or process” word? Well according to various dictionaries that are apparently both abstract nouns so I guess I am excused to do so to some degree. But thinking about this, it’s clear that one can be involved in an “act of integration” but it makes no sense to be in an “act of interoperability” (well I don’t think so). Equally one can imagine the state of “being interoperable” but “being integration” is nonsensical (I guess one could be in the state of “being integrated” but that’s not very helpful to my argument). And I guess that’s where things clicked.
Interoperability is a quality (attribute, property or feature) of integration. (Matt Deacon, July 2009)
In this way all forms of integration exhibits some quality of interoperability. The type of integration method or approach will dictate the level of interoperability that is achieved. Here’s an example to explain further what I mean.
If I integrate systems A and B, then by default I have automatically created some quality (or level) of interoperability. At a very minimum we now have some quality (or level) of interoperability between the systems A and B. However, depending on the integration approach I took the quality (or level) of interoperability maybe much higher such that integration with system C might prove quite easy. However, if the quality of interoperability between A & B remained low then this integration with C might prove extremely difficult.
The key feature that the example illustrates is that by increasing the quality of interoperability when integrating systems allows one to deal with future integration requirements as yet unseen during design time. This really ties the notion of interoperability back to the concept of evolution and “diversity” and the “future of the unknown” I mentioned earlier. To quote a council member who stated that interoperability is about “future proofing”.
At this point I thought I was there and therefore returned back to the original Wikipedia definitions and to my amazement the points I thought I had uncovered were staring me in the face all the time. If you look again at interoperability you can easily replace “property” with “quality” and in the case of integration “process” could be replaced by “action”! In reality it turns out that these are the key words in understanding the definitions and more importantly the differences in the definitions between integration and interoperability, the first being the action and the second, the quality! If only Wikipedia’s definition of interoperability used the word “integration” then this path may never have needed to be trod!
With all this in mind I have provided a corrected top-level definition of system interoperability but second is a more complete statement that tries to reflect what the nature of the quality of interoperability is.
Integration is the process of linking together diverse systems or organizations. (Matt Deacon, July 2009)
Interoperability is a property of integration that ensures a level of independence between existing and future systems or organizations. (Matt Deacon, July 2009)
Next step is to take comments and to recommend the changes to Wikipedia.
Thanks for reading!