EMZETT.
Login

Interface

Kurz: Eine definierte Schnittstelle, über die zwei Systeme oder Komponenten miteinander kommunizieren — im Hardwarekontext ein physischer Anschluss (z. B. Netzwerk-Interface, USB-Interface), im Softwarekontext eine programmatische Schnittstelle (API).

Genauer: Ein Interface legt fest, WIE zwei Seiten miteinander reden (Steckerform, Protokoll, Signalpegel bzw. Funktionssignatur), ohne dass die eine Seite wissen muss, wie die andere intern aufgebaut ist. Das ermöglicht Austauschbarkeit — solange das Interface eingehalten wird, ist die konkrete Implementierung dahinter egal.

Im Detail

Das Kernprinzip eines Interfaces ist die Trennung von “Was wird angeboten” und “Wie ist es intern umgesetzt” — ein Interface ist im Grunde ein Vertrag: Solange beide Seiten sich an die vereinbarte Form halten (Steckerbelegung und Signalpegel bei Hardware, Funktionsnamen und Parametertypen bei Software), ist es egal, wie die jeweils andere Seite intern aufgebaut ist. Das erlaubt es, eine Seite komplett auszutauschen, ohne die andere anpassen zu müssen — solange das Interface gleich bleibt.

Im Hardware-Kontext begegnet einem dieser Gedanke ständig: USB als Interface erlaubt es, Mäuse, Tastaturen, externe Laufwerke und unzählige andere Gerätetypen unterschiedlichster Hersteller an denselben Anschluss anzuschließen, weil alle sich an dieselbe elektrische und logische Spezifikation halten. Im Software-Kontext ist ein Interface (z. B. in der objektorientierten Programmierung, siehe Interface (Java)) eine reine Vertragsdefinition ohne eigene Implementierung — sie legt fest, welche Methoden eine Klasse anbieten MUSS, ohne festzulegen, WIE diese Methoden intern arbeiten. Eine API ist letztlich nichts anderes als ein Software-Interface auf einer höheren, meist netzwerkbasierten Ebene.

Abwärtskompatibilität durch stabile Interfaces

Ein gut entworfenes Interface ändert sich über Jahre kaum, selbst wenn sich die dahinterliegende Technik komplett wandelt — genau das erlaubt Abwärtskompatibilität. USB-A-Stecker sind z. B. seit Jahrzehnten weitgehend gleich geblieben, während die intern übertragenen Geschwindigkeiten und Protokollversionen (USB 2.0 bis USB4) sich vervielfacht haben. Ändert sich dagegen das Interface selbst (z. B. der Wechsel zu USB-C), bricht die physische Kompatibilität, egal wie ähnlich die dahinterliegende Technik sonst ist.

Interfaces als Abstraktionsebenen

In der Software-Architektur werden Interfaces oft bewusst in mehreren Schichten übereinandergestapelt — ein Betriebssystem bietet z. B. ein Dateisystem-Interface, das von völlig unterschiedlichen physischen Speichermedien (SSD, HDD, Netzwerkspeicher) implementiert werden kann, ohne dass eine Anwendung, die Dateien liest, je erfährt, welches Medium tatsächlich dahintersteckt. Dieses Prinzip der Schichtung (jede Ebene kennt nur das Interface der Ebene darunter, nicht deren interne Umsetzung) ist eines der grundlegendsten Baumuster sowohl in Hardware- als auch Softwarearchitektur.

Siehe auch: Anschlüsse, API, USB