We have found that the similarities between systems diminish as we added complexity to the integration's functionality. Trying to resolve this complexity without working experience can be overwhelming. By physically combining the API code and the integration code together you force the whole system to be rebuilt when any of the three components is changed. The number of programs that need to be rebuilt grows quickly as more integrations are added for a given tool. Maintenance costs grow even faster, because these integration programs require the programmer know all the APIs of all systems that are integrated to the system being changed.
Many companies purchase the integration programs from their system vendors.
Purchased integrations are cheaper than custom written interfaces, but do not handle all of the combinations of product versions that a company may need to within the company's web of system interconnections. Many vendors are finding the same types of problems within their products are reducing their implementation speed and agility. The software industry is quickly moving to object technology to improve system agility and flexibility. Object technology provides the isolation of functionality into components that have well known and well-behaved interactions. The componentisation within systems is moving into the componentisation of systems within companies.