Die Schnittstelle, auch Interface [ˈɪntɚfeɪs] (englisch „Grenzfläche“, Begriff ursprünglich aus der Naturwissenschaft[1]), ist ein Teil eines Systems und dient der Kommunikation.
Der Austausch von Informationen erfolgt in Form von physikalischen (z. B. Elektrische Spannung, Stromstärke) oder logischen Größen (Daten) und kann analog (z.B. Mikrofon an einer Soundkarte) oder digital (z.B. Parallelschnittstelle des PC) erfolgen. Nicht als Interface bezeichnet werden allgemeine mechanische Verbindungselemente der Konstruktionslehre, die der Informationsübermittlung dienen (etwa Seilzüge oder Federn).
Man unterscheidet:
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 oder Module, 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 (Kompatibilität, z.B. Stecker - Buchse).
Inhaltsverzeichnis |
Maschinenschnittstelle ist der Ort, an dem ein Gerät bzw. eine Maschine mit einem weiteren Gerät bzw. mit einer weiteren Maschinen interagiert. Eine solche Schnittstelle wird wie folgt beschrieben.
Mechanische Parameter:
Elektrische Parameter:
Thermische Parameter:
Hardwareschnittstellen sind Schnittstellen zwischen physikalischen Systemen in der Elektrotechnik und Elektronik.
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-)Schnittstelle, 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 meistens für den Drucker verwendet wird; als serielle Schnittstelle bezeichnet man in diesem Zusammenhang die veraltete EIA-232-Schnittstelle.
In der Elektrotechnik ergibt jedes Verbinden von analogen oder digitalen Geräten beim Zusammentreffen eine Schnittstelle. Bei jeder Schnittstelle bildet der Ausgangswiderstand Ra der Quelle mit dem Eingangswiderstand Ri der Last eine Anpassungsdämpfung. Besonders ist der wichtige Dämpfungsfaktor für diese Anpassungsdämpfung bei der Schnittstelle vom Endverstärker zum Lautsprecher zu beachten; letzteres ist wie bei allen Verbindungen in der Tontechnik ausschließlich Spannungsanpassung mit Ri ≪ Ra. Das Verbinden eines Mikrofons mit dem Eingang einer Soundkarte ergibt eine Schnittstelle mit den Problemen der Anpassungsdämpfung, genauso das Verbinden eines Endverstärkers mit dem Lautsprecher. Bei der Verbindung von digitalen Geräten ist Leistungsanpassung mit Ri = Ra üblich.
Softwareschnittstellen oder softwareseitige 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 (Module) eines Programmes bzw. programmübergreifende Schnittstellen.
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, usw. können als IPC-Schnittstellen verstanden werden.
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 zur Laufzeit geladen werden (Dynamische Bibliotheken): Sie erlauben zu erkennen, welches Programm welche Bibliothek in welcher Version benötigt. Je nach Verwendungszweck sind wichtige Bewertungskriterien einer Schnittstelle z.B. Leistung, Skalierbarkeit, Transaktionssicherheit oder Ausfallsicherheit.
Eine besondere Bedeutung haben Schnittstellen 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 (oder Mensch-Maschine-Schnittstellen) ist der Punkt, an dem ein Mensch mit einem Gerät interagiert. Das können Schalter und andere Bedienelemente sein, Anzeigen von Geräten, aber auch die Grafische Benutzeroberfläche eines modernen Computers oder eine einfache Kommandozeile.