Was ist eine Schnittstelle?
Eine Schnittstelle ist die Möglichkeit, zwei Systeme miteinander zu verbinden.
Ich verwende hier eine naive Vorstellung von “System”, im Hinterkopf habe ich immer Software-Bestandteile. Vermutlich passen die Aussagen auf alle technischen Artefakte.
Warum verbindet man zwei Systeme?
Damit das eine System das andere System nutzen kann.
Beispiel: Wandsteckdose für 220V im Wohnzimmer. Die Dose ist eine Schnittstelle. Sie ermöglicht es, ein elektrisches Gerät (das eine System) an das Stromnetz (das andere System) anzuschließen. Die Gegenseite, der Stecker, gehört zu einer anderen Schnittstelle, denn für die Beschreibung der Wandsteckdose ist es unwichtig, ob ein Kaltgerätestecker, ein Eurostecker oder zwei blanke Drähte verwendet werden, um das System “Stromnetz” zu nutzen.
Problem: unabsichtliche Änderungen an der Schnittstelle.
Beispiel für so ein Problem: Es gehört wesentlich zur Beschreibung der Schnittstelle “Wandsteckdose”, dass dort 220V Wechselstrom anliegen. Man kann sich leicht die Katastrophe vorstellen, wenn plötzlich 440V dort anliegen. Und genau das habe ich im Arbeitsalltag schon erlebt – bildlich gesprochen.
Ursache: Man sieht der Schnittstelle nicht an, dass es eine Schnittstelle ist, ob und wie sie genutzt wird. In der Software-Komponente, die die Schnittstelle enhält, wird die Schnittstelle nicht genutzt. Ist das Kunst oder kann das weg? Man versteht nicht, warum ein bestimmtes technisches Artefakt vorhanden ist. Dokumentation fehlt natürlich, der letzte ursprüngliche Programmierer hat längst das Unternehmen verlassen – also weg damit, denn es ist für nichts zu gebrauchen. Drei Tage später macht es an einer unerwarteten Stelle “Peng” und alle schauen sich fragend an. Konkret: Änderung eines Ansicht-Namens in einem Lotus-Notes-System.
Die erste und einfachste Art der Abhilfe ist Dokumentation. Aber aufmerksam geworden bin ich auf dieses Thema, weil mir ein Kniff untergekommen ist: Man denke sich ein System A, das eine Schnittstelle anbietet und ein System B, das sie nutzt. Und es gibt Konfigurationsdateien für beide Systeme. In der Konfiguration für System B sind Parameter für die Nutzung von System A hinterlegt. Das dokumentiert ausserhalb von System B, dass es System A nutzt. Ausserdem liegen die Konfigurationsdateien an einer gemeinsamen Stelle. Anstatt grossse Mengen Quelltext zu durchforsten muss ich auf die Idee kommen, einen Blick auf die Konfigurationen zu werfen.
Sehr schön wäre eine sich selbst beschreibende Schnittstelle.
“Ordnung braucht nur der Dumme, das Genie beherrscht das Chaos” – Albert Einstein.
Küsschen, Albert.