20.08.2020

ArchUnit: Testen von Architektur und Design

Thomas Much

Zusammenfassung

In den meisten Projekten gibt es irgendwo eine Dokumentation der Architektur und der Code-Conventions. Die Frage ist nur: Wo? Und sind die Beschreibungen aktuell? Hält sich der Code wirklich daran? In der Praxis ist solche Dokumentation leider allzu häufig “write-only” und hat mit der Realität nur noch entfernt zu tun.

Viel schöner wäre es doch, wenn die Vorgaben automatisiert geprüft werden könnten. Beispielsweise in Form von Unit-Tests, die von den Entwicklern zusammen mit der Anwendung gepflegt und angepasst werden, als Teil einer “Living Documentation”.

Mit “ArchUnit” können die typischen Architekturvorgaben mit einer Fluent-API als Regeln definiert und z.B. in JUnit getestet werden. Dazu gehören Schichten und fachliche Schnitte, deren erlaubte und verbotene Abhängigkeiten sowie Zyklenfreiheit. Außerdem können Code-Conventions wie Namen von Elementen, die Zuordnung von Klassen zu Packages und die Verwendung von Annotationen und Exceptions geprüft werden.

Bestehende Regeln können so nicht nur mit Unit-Tests festgezurrt werden, es können auch Ausnahmen definiert werden. Vorhandener Code kann so nach und nach an die Vorgaben angepasst werden, z.B. als Vorbereitung einer Modularisierung - und das auch mit älteren Java-Versionen.

Neben der allgemeinen Vorstellung von ArchUnit bietet dieser Vortrag Tipps aus der Praxis - inkl. Live-Coding.

Sprecher

Thomas Much (@thmuch) unterstützt als Coach für agile Entwicklungspraktiken und als Softwareentwickler (vor allem im Java-Stack) zahlreiche Teams bei der Bewältigung der alltäglichen Projekt-Herausforderungen, sowohl methodisch als auch technisch - und oft auch an der Reibefläche dazwischen. Wenn sich im Projekt ein neues, nützliches Tool bewährt hat, möchte er die Begeisterung darüber an andere weitergeben, z.B. auf Konferenzen, bei Meetups und in persönlichen Gesprächen. Thomas lebt mit seiner Familie in Hamburg.

Folien / Video(s)

Eine Veranstaltung des iJUG e.V., organisiert durch die JUG Darmstadt.