Wer mit offenen Augen Software entwickelt (und alles andere erschwert die Sache ungemein) merkt schnell, dass Abhängigkeiten zwischen verschiedenen Teilen einer Anwendung ein schier unerschöpflicher Quell von Problemen sind.
Die Antwort auf diese Probleme lautet, Abhängigkeiten von Anfang an unter Kontrolle zu behalten. Zwischen Artefakten (d.h. z.B. Jar-Files) erledigt dies in einem gewissen Umfang das Build Tool der Wahl. Aber wie sieht es mit Abhängigkeiten zwischen Packages aus? Hier geht oft alles wie Kraut und Rüben durcheinander. Viele Tools bieten die Möglichkeit Warnungen zu produzieren, wenn z.B. zyklische Abhängigkeiten entstehen. Aber wenn es darum geht solche Zyklen aufzulösen, in einem Projekt welches Dutzende davon enthält, ist die Unterstützung minimal.
In diesem Vortrag wird demonstriert, wie Abhängigkeiten aussehen sollten um die langfristige Wartbarkeit von Anwendungen zu unterstützen. Es wird auch gezeigt, wie sie oft in der Realität aussehen. Dafür werden Antipattern identifiziert, und beschrieben, wie man von letzterem zu Ersterem kommt. Dabei wird für die Visualisierung das Open Source Werkzeug Degraph genutzt, das auf ganz besondere Weise die Optionen zum Aufbrechen von ungewünschten Abhängigkeiten aufzeigt.
Jens Schauder ist Softwareentwickler aus Leidenschaft. In Zeitschriftenartikeln, seinem Blog, Konferenzvorträgen oder seiner Mitarbeit bei der JUG Ostfalen versucht er die Welt der Softwareentwicklung ein klein wenig besser zu machen. Besonders wichtig ist ihm dabei die Vielseitigkeit der Softwareentwicklung: Vom Fachwissen, über Programmiersprachen, Bibliotheken und Tools bis zu Vorgehensmodellen, alles gehört dazu und kann verbessert werden. Seine meisten Vorträge drehen sich um die Themen Scala, Clean Code und Testen.
Seit 2012 arbeitet Jens Schauder für die T-Systems on site services GmbH als Executive Consultant. Neben der Software Entwicklung gehört der Aufbau und Verbreitung von Wissen zu seinen wesentlichen Aufgaben.
In seiner Freizeit arbeitet er an Degraph einer Bibliothek zur Visualisierung und dem Test von Package Abhängigkeiten.