The software industry and their customers have struggled for years with the need
for better interoperability of pre-built software components. A great deal of work has
been done on this problem, but that work has focused almost entirely on the
technology (i.e., middleware) part of the problem. An entire class of software has
even been created to address these issues.