Thomas Much

Information & Communications Technology

Modern Agile Pair Programming Mob Programming Coaching Java Java EE Enterprise Java / Jakarta EE Monoliths Microservices Software Architecture Continuous Software Development

Hamburg, Germany

ArchUnit: Testen von Architektur und Design

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 der Java-Bibliothek "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.


Thomas Much

Technical Agile Coach

Thomas works as a Technical Agile Coach at Die Techniker (TK) in Hamburg. Together with his coaching colleagues, he supports teams in always getting a little bit better at collaboration and agile programming practices – by encouraging pair and team programming, TDD, test automation and the like.

  @thmuch
  javabarista.de (blog)
  tk.de/IT (company)

Thomas's full speaker profile