Schnittstelle
Eine Schnittstelle (englisch interface) ist ein Teil eines Systems, das dem Austausch von Informationen, Energie oder Materie mit anderen Systemen dient. Eine Schnittstelle wird durch eine Menge von Regeln beschrieben, der Schnittstellenbeschreibung. Neben der Beschreibung, welche Funktionen vorhanden sind und wie sie benutzt werden gehört zu der Schnittstellenbeschreibung auch ein so genannter Kontrakt, der die Semantik der einzelnen Funktionen beschreibt.
Standardisierte Schnittstellen bieten den Vorteil, dass Komponenten, die die gleiche Schnittstelle unterstützen, gegeneinander ausgetauscht werden können, das heißt sie sind zueinander kompatibel.
Es kommt häufig vor, dass zwei Teilnehmer der Kommunikation unterschiedliche, aber zueinander passende Schnittstellen besitzen müssen (z. B. Stecker und Buchse).
Hardwareschnittstellen
Hardwareschnittstellen sind Schnittstellen zwischen physischen Systemen. Meistens sind damit Steckverbindungen gemeint. Die Spezifikation einer Hardwareschnittstelle besteht meist aus zwei Teilen: der Physischen (Stecker, Belegung der einzelnen Adern) und einer Logischen (dem Übertragungsprotokoll der Physikalischen Schicht). Beispiele für Hardwareschnittstellen sind unter Anderem Telefonbuchsen, MIDI-Anschlüsse, SCART-Stecker, etc.
Hardwareschnittstellen sind in der Computertechnik weit verbreitet. Industrienormen sorgen zum Beispiel dafür, dass ein PC ein offenes System ist, das aus Komponenten verschiedener Hersteller zusammengesetzt werden kann. Beispiele für Hardwareschnittstellen die in Computern eingesetzt werden sind der PCI-Bus, SCSI, USB, Firewire und die ältere EIA-232 (auch als RS-232 oder V24 bekannt).
Man unterscheidet zwischen paralleler und serieller (Hardware-)Schnittstellen, je nach dem, ob mehrere Bits gleichzeitig übertragen werden können (siehe Parallele Datenübertragung). Im Kontext von Peripheriegeräten für Computer ist mit paralleler Schnittstelle im allgemeinen der IEEE 1284-Anschluss gemeint, der meist für den Drucker verwendet wird; als serielle Schnittstelle bezeichnet man in diesem Zusammenhang die veraltete EIA-232-Schnittstelle.
Softwareschnittstellen
Softwareschnittstellen oder Datenschnittstellen sind logische Berührungspunkte in einem Softwaresystem: sie definieren, wie Kommandos und Daten zwischen verschiedenen Prozessen und Komponenten ausgetauscht werden. Dabei unterscheidet man Schnittstellen zum Zugriff auf Systemroutinen, zur Kommunikation mit anderen Prozessen und zum verbinden einzelner Softwarekomponenten (Modulen) eines Programmes.
Systemschnittstelle
Die Systemschnittstelle ermöglicht einem Programm den Zugriff auf Funktionen und Resourcen des Betriebssystems, einer Laufzeitumgebung oder Middleware. Solche Schnittstellen werden meist in Standard-Bibliotheken zusammengefasst und gemeinhin als Application Programming Interface (API) oder als Framework bezeichnet.
Schnittstellen bieten eine Ebene der Abstraktion, die es erlaubt, auf Funktionen zuzugreifen, ohne ihre Implementation kennen zu müssen. So ist es zum Beispiel möglich, ein Programm auf einem anderen Betriebssystem laufen zu lassen, indem man die benötigten Schnittstellen auf dem neuen System zur Verfügung stellt (siehe z.B. Cygwin).
Schnittstellen zur Interprozesskommunikation
Manche Schnittstellen ermöglichen die Kommunikation zwischen verschiedenen Programmen (Interprozesskommunikation, IPC) auf dem gleichen oder einem anderen Computer. Beispiele für solche Kommunikationsschnittstellen über ein Netzwerk hinweg sind Remote Procedure Call, DCOM, RMI oder CORBA (siehe auch Interface Definition Language), aber auch ODBC und JDBC. Auch die bekannten Netzwerkprotokolle wie TCP, HTTP, etc. können als IPC-Schnittstellen verstanden werden.
Schnittstellen für Programmkomponenten
Schnittstellen für Programmkomponenten sind eine formale Deklaration, welche Funktionen vorhanden sind und wie sie angesprochen werden können. Das hat den Vorteil, dass Module, die die gleiche Schnittstelle besitzen, gegeneinander ausgetauscht werden können. Auch ist es auf diese Weise möglich, verschiedene Komponenten gleichzeitig zu entwickeln, ohne dass die erste fertig sein muss um die zweite zu übersetzen. Solche Schnittstellen dienen der Modularisierung einer Softwarearchitektur.
Ein frühes Beispiel für solche Komponenten-Schnittstellen sind Header-Dateien, wie sie in C und C++ verwendet werden. Besonders wichtig sind Schnittstellen aber für Programmbibliotheken, die erst zu Laufzeit geladen werden (so genannte Dynamische Bibliotheken): Sie erlauben es, zu erkennen, welche Programm welche Bibliothek in welcher Version benötigt.
Eine besondere Bedeutung haben Schnittstellen (Interfaces) in der Objektorientierten Programmierung: Hier werden sie verwendet, um für bestimmte Klassen festzulegen, welche Methoden sie unterstützen müssen und an welchen Stellen Instanzen dieser Klasse verwendet werden dürfen. Ontologisch bedeutet die Zugehörigkeit einer Instanz zu einem bestimmten Interface eine ist-ein-Relation. Siehe dazu Schnittstellen in der objektorientierten Programmierung.
Benutzerschnittstellen
Benutzerschnittstellen (oder Mensch-Maschine-Schnittstellen) sind der Punkt, and dem ein Mensch mit einem Gerät interagiert. Das können die Bedienelemente einer Stereoanlage sein, aber auch die Grafische Benutzeroberfläche eines modernen Computers oder eine einfache Kommandozeile.
Siehe auch
Interface, Adapter, GUI, Parallele Schnittstelle, Serielle Schnittstelle