The interface is the part of a system that serves the communication. The term denotes the physical phase boundary of two states of a medium. It describes the property of a system as a black box, from which only the surface is visible, and therefore only communication is possible about it. Two adjacent black boxes can only communicate with each other if their surfaces fit together. For the two boxes involved, it does not matter how the other handles the messages internally and how the answers to them come about. The description of the border is part of itself, and the black boxes only need to know the side facing them to ensure communication. If one considers any system as a whole, which must be analyzed, this whole system will be “cut” into subsystems. The points that act as points of contact or starting points between these subsystems (through which the communication takes place) then represent the interfaces. Using these interfaces, the subsystems can be reassembled into a larger whole.
The exchange of information takes the form of physical or logical quantities (data) and can be carried out analogously (microphone at a sound input) or digital (parallel interface of the PC). General mechanical fasteners of the design theory are not referred to as an interface. A distinction is made:
- Data interface – Data as interfaces between programs
- Machine Interface – Interfaces Between Physical Systems
- Hardware interface—Interfaces between physical computer systems
- Network interface- Interfaces between network components
- Software interface–interfaces between programs, to the operating system, in object-oriented programming, etc.
- User interface- Interfaces between man and device
- General interface
An interface is described by a set of rules, the interface description. In addition to the description of which functions are available and how they are used, the interface description also includes a so-called contract, which describes the semantics of the individual functions. Standardized interfaces offer the advantage that components or modules that support the same interface can be exchanged, i.e. they are compatible with each other. It often happens that two participants of the communication must have different but matching interfaces (compatibility). The term interface is also used in project management in plant engineering, where interfaces describe the interactions between different trades to achieve the required functionality of a system.
Hardware interfaces are interfaces between physical systems in electrical engineering and electronics. The interface equipment of a device is often referred to as connectivity. Hardware interfaces are widely used in computer technology. Industry standards, for example, ensure that a PC is an open system that can be assembled from components from different manufacturers. Examples of hardware interfaces used in computers include the PCI bus, AGP, SCSI, USB, FireWire and the older EIA-232. A distinction is made between parallel and serial (hardware) interfaces depending on whether multiple bits can be transmitted simultaneously.
In electrical engineering, every connection of analogue or digital devices results in an interface when they meet. At each interface, the output resistance of the source with the input resistance of the load forms an adjustment attenuation, which is also called interface attenuation. In particular, the important attenuation factor for this adjustment attenuation at the interface from the amplifier to the loudspeaker must be observed; the latter, as with all connections in sound technology, is exclusively voltage adjustment. Connecting a microphone to the input of a sound card provides an interface with the problems of adjustment attenuation, as does connect a power amplifier to the speaker. When connecting digital devices, attenuation must be selected to avoid unwanted and disturbing reflection of pulses. It is irrelevant that this condition coincides with the performance adjustment requirement.
Software interfaces or software-side data interfaces are logical points of contact in a software system: they enable and regulate the exchange of commands and data between different processes and components. Interfaces used in the software can be distinguished in general in:
- Data-oriented interfaces used only for communication: The interface always remains ‘passive’, it contains only the information that is exchanged between involved system parts. For example, address transfers concerning data/information to use when calling subprograms.
- Interfaces as functional units: The interfaces used in this way perform a certain functionality to synchronize or support the primary part of the system involved. For example, printer drivers, see also programming interface.
Some interfaces allow inter-process communication (IPC), communication between different programs on the same computer or another computer. Examples of such communication interfaces across a network are Remote Procedure Call, DCOM, RMI, ODBC and JDBC. Also the well-known network protocols such as TCP, HTTP etc can be understood as IPC interfaces. A one-way variant is a hot folder.
Interfaces for program components are a formal declaration of which functions exist and how they can be addressed. This has the advantage that modules that have the same interface can be exchanged for each other. It is also possible to develop different components at the same time without having to finish the first one to translate the second. Such interfaces are used for the modularization of software architecture.
An early example of such component interfaces is header files as they are used in C and C++. However, interfaces are particularly important for program libraries that are only loaded at run time (Dynamic Libraries): they allow to recognize which program needs which library in which version. Depending on the intended use, key assessment criteria of an interface include performance, scalability, transaction security, or resiliency.
Interfaces in object-oriented programming have a special meaning: here they are used to determine for certain classes which methods they must support and where instances of this class may be used. Ontologically, the affiliation of an instance to a particular interface means an actual one relation.