Blog
dranbleiben!
Andreas Hübner

Ein "böses" Wort war bisher das "Schnittstellenproblem". Das muss es doch auch vorher schon gegeben haben, oder?

Sobald etwas nicht mehr alleine arbeitet, wird eine Art der Zusammenarbeit benötigt. Sei es die Handwerker auf einer Baustelle, die Gleisbauer für Züge oder die verschiedenen Sachbearbeiter bei einem Behördengang. Wenn es zu Verzögerungen oder Problemen kommt, fehlen Formulare, wurden Sachen falsch geliefert und ähnliches. Bisher gab es für mich das Wort “Schnittstellenproblem” nur als Totschlagerklärung für IT-bezogene Fehler oder Unmöglichkeiten. Aber wieso?

Die Arbeit in der IT unterscheidet sich grundlegend von anderen Berufszweigen, weil während der Entwicklung selten ein physisches Produkt entsteht und man dadurch leicht grundlegende Anpassungen vornehmen kann. In einer Serverapplikation kann ich nachträglich noch einen Endpunkt einbauen um neue Funktionen zu unterstützen. Die Spurbreite der Eisenbahn… nur mit extremen Aufwand. Jedoch gibt es in Deutschland einheitliche Spurbreiten (im Netz der Deutschen Bahn).

Rhetorisch könnte ich jetzt die Frage stellen: Wie haben Sie dass bloß gemacht? Haben sie die Breite immer wieder angepasst? Die Antwort ist jedoch klar: Alle beteiligten Ingenieure haben sich abgesprochen, wie breit die Schiene sein soll und daran wurde sich gehalten. Es wurde eine Norm geschaffen.

Normierungen wurden eingeführt um eine Zusammenarbeit (siehe Schnittstelle 😉) zu ermöglichen. Die erste Norm in Deutschland wurde 1918 veröffentlicht Geschichte der Normierung und legte Eigenschaften von Kegelstiften fest.

Normen findet man auch in der IT. Diese sind entweder weitestgehend akzeptiert (Request for Comments, RFC) oder sehr individuell gestaltet (API-Dokumentation von einem Server). Zwar mag es ein größerer Sprung sein von RFCs zur API-Dokumentation, aber beide beschreiben u.a. wie man miteinander kommunizieren kann. Das eine spricht sehr viele an, das andere ggf. nur die eine Firma.

Das war ein großer Bogen um über Schnittstellen und Normen zu sprechen. Was hat das jetzt nun mit den o.g. Schnittstellenproblemen zu tun? Es ist relativ einfach: Eine Schnittstelle wird zu einem Problem wenn sie nicht passt.

Inkongruenter Stecker Bild

D.h. um Schnittstellen zu vermeiden, müssen erstmal alle Schnittstellen identifiziert werden und danach spezifiziert. Hierbei sind nicht nur die Technischen wie der Druckeranschluss gemeint, sondern auch die nichttechnischen. Wenn man bei der Eisenbahn nur die Spurbreite definiert hat, warum sind dann Bahnsteige auf der gleichen Höhe?

Einige werden jetzt aufschreien: Das klingt doch nach Wasserfallmodell und ist nicht mehr agil! Da möchte ich widersprechen. Wasserfall ist es, wenn alles im Vorfeld durchspezifiziert wird. Es spricht nichts dagegen nur kleine Änderung auszuarbeiten und zu schauen wie es sich auswirkt, ABER wenn wir nicht wissen wohin (grob) die Reise gehen soll, sollten wir uns nicht darüber aufregen, wenn wir in die falsche Richtung loslaufen.

Damit man sich auf dem Weg zum Ziel nicht verläuft, bietet es sich an die Schnittstellen regelmäßig zu prüfen. Regelmäßig… ist das automatisierbar? Ja und Nein. Nein, da die nicht-technische Spezifikation und die Rahmenbedingungen manuell geprüft werden müssen, ob diese noch passen. Aber die technischen Spezifikationen sind ein idealer Ausgangspunkt für Automatismen.

Bei jeder Schnittstelle gibt es zwei Beteiligte: Anbieter und Konsument. Beide müssen zusammen finden, damit es funktioniert. Da es die zwei Seiten gibt muss man sich eine philosophische Frage stellen um den für sich geeigneten Weg zu finden: Bestimmt der Anbieter die Regeln oder der Konsument?

Je nachdem wie man für sich die Frage beantwortet, kann man verschiedene Tools dafür verwenden. Zwei verbreitete Tools sind Spring Cloud Contracts und Pact.io. Beide nutzen einen Contract Broker der zwischen Konsument einer Schnittstelle und dessen Anbieter die Vereinbarungen koordiniert.

Durch die Spezifizierung der Schnittstellen (oder Ränder/Grenzen) von Software, können wir eine funktionelle Zusammenarbeit von Komponenten leichter umsetzen. Die Überprüfung der Einhaltung der Schnittstellen kann dabei automatisch mit Frameworks durchgeführt werden.

none
Conventic Icon
Standort Bonn
Burgstraße 69
53177 Bonn
Deutschland
+49 228 76 37 69 70
Standort Braunschweig
Westbahnhof 11
38118 Braunschweig
Deutschland
+49 228 76 37 69 70
Wir sind Mitglied bei
Grouplink Icon
Hubwerk Icon
Newsletter abonnieren
Impressum, Haftungsausschluss und Datenschutzerklärung
© 2022 conventic GmbH · Alle Rechte vorbehalten.