System Integration

In engineering, **system integration** is defined as the process of bringing together the component subsystems into one system and ensuring that the subsystems function together as a system.[1] In information technology, **systems integration**[2] is the process of linking together different computing systems and software applications physically or functionally,[3] to act as a coordinated whole.

The system integrator brings together discrete systems utilizing a variety of techniques such as computer networking, enterprise application integration, business process management or manual programming.[4]

## Contents

* 1 Overview
* 2 Required skills
* 3 Methods of integration
* 4 See also
* 5 References
* 6 External links

## Overview

A system
 is an aggregation of subsystems cooperating so that the system is able
to deliver the overarching functionality. System integration involves
integrating existing often disparate systems.

System integration (SI) is also about adding value to the system,
capabilities that are possible because of interactions between
subsystems[*clarification needed*].

In today’s connected world, the role of system integration engineers
is important: more and more systems are designed to connect, both within
 the system under construction and to systems that are already deployed.[5]

## Required skills

A system integration engineer
 needs a broad range of skills and is likely to be defined by a breadth
of knowledge rather than a depth of knowledge. These skills are likely
to include software, systems and enterprise architecture, software and hardware engineering, interface protocols,
 and general problem solving skills. It is likely that the problems to
be solved have not been solved before except in the broadest sense. They
 are likely to include new and challenging problems with an input from a
 broad range of engineers where the system integration engineer "pulls
it all together."[6]

## Methods of integration

**Vertical integration** (as opposed to "horizontal integration")
 is the process of integrating subsystems according to their
functionality by creating functional entities also referred to as silos.[7]
 The benefit of this method is that the integration is performed quickly
 and involves only the necessary vendors, therefore, this method is
cheaper in the short term. On the other hand, cost-of-ownership can be
substantially higher than seen in other methods, since in case of new or
 enhanced functionality, the only possible way to implement (scale the
system) would be by implementing another silo. Reusing subsystems to
create another functionality is not possible.[8]

**Star integration**, also known as **spaghetti integration**,
is a process of systems integration where each system is interconnected
to each of the remaining subsystems. When observed from the perspective
of the subsystem which is being integrated, the connections are
reminiscent of a star, but when the overall diagram of the system is
presented, the connections look like spaghetti, hence the name of this
method. The cost varies because of the interfaces that subsystems are
exporting. In a case where the subsystems are exporting heterogeneous or
 proprietary interfaces, the integration cost can substantially rise.
Time and costs needed to integrate the systems increase exponentially
when adding additional subsystems. From the feature perspective, this
method often seems preferable, due to the extreme flexibility of the
reuse of functionality.[8]

**Horizontal integration** or **Enterprise Service Bus**
 (ESB) is an integration method in which a specialized subsystem is
dedicated to communication between other subsystems. This allows cutting
 the number of connections (interfaces) to only one per subsystem which
will connect directly to the ESB. The ESB is capable of translating the
interface into another interface. This allows cutting the costs of
integration and provides extreme flexibility. With systems integrated
using this method, it is possible to completely replace one subsystem
with another subsystem which provides similar functionality but exports
different interfaces, all this completely transparent for the rest of
the subsystems. The only action required is to implement the new
interface between the ESB and the new subsystem.[8]

The horizontal scheme can be misleading, however, if it is thought
that the cost of intermediate data transformation or the cost of
shifting responsibility over business logic can be avoided.[8]

A **common data format** is an integration method to avoid every adapter having to convert data to/from every other applications' formats, Enterprise application integration
 (EAI) systems usually stipulate an application-independent (or common)
data format. The EAI system usually provides a data transformation
service as well to help convert between application-specific and common
formats. This is done in two steps: the adapter converts information
from the application's format to the bus's common format. Then, semantic
 transformations are applied on this (converting zip codes to city
names, splitting/merging objects from one application into objects in
the other applications, and so on).