Test the Architecture

Test the Architecture

An overview of OSS Tools to test the current state of the architecture I gave at the 2018 bedcon in Berlin. It gives a short overview of Degraph, jqAssistant and Archunit. The demo project is located here: https://github.com/DennisRippinger/test-the-architecture

9d6b743e09979cab0aad5890aef354a0?s=128

Dennis Rippinger

September 07, 2018
Tweet

Transcript

  1. .consulting .solutions .partnership Test the Architecture Dennis Rippinger | @DennisRippinger

  2. None
  3. Entwickler Forscher Ingenieur Handwerker

  4. Architekten (damals) • Architekten sind eher Ingenieure • Arbeitsteilung zwischen

    Entwickler und Architekt • Der Architekt ist meist eine Autorität und bestimmt • Worst Case: Je nach Größe des Projektes Kommunikation mit den Architekten über Issues
  5. Architekten (damals)

  6. Und heute … ?

  7. Architektur im Laufe der Zeit Agiles Team Klassischer Architekt Kein

    Architekt Architektur-Owner Beratender Architekt Klassischer Architekt „Agil“
  8. Architektur ... sondern auch sicherstellen das sie eingehalten wird. Aufgabe

    des Architekten ist nicht nur das Ersinnen einer Architektur ...
  9. Architektur Wenn alle verantwortlich für die Architektur sind, ist es

    keiner. • Wir brauchen eine andere Lösung • Wir brauchen Automatisierung • Wir brauchen Tests
  10. Architekturtests Heute sprechen wir über OSS zum automatisierten Testen von

    Architektur: • Degraph • JQ Assistant • ArchUnit Kommerzielle Tools wie Sonargraph sind außen vor.
  11. Degraph Degraph ist ein Tool zum Visualisierung und kontrollieren von

    Klassen und Package Strukturen
  12. Degraph Der übliche Workflow schaut so aus:

  13. Demo Dukecon

  14. Demo Dukecon

  15. Demo Dukecon org.dukecon.DukeConServerApplication

  16. Degraph Graphen sind toll, aber ... ... schauen wir da

    regelmäßig rein?
  17. Degraph Unit Test Erstelle graphml von Model im Fehlerfall

  18. Degraph • Implementierung stammt aus Scala, daher ist die API

    aus dieser Perspektive geschrieben. • Architekturtests sind auf Layer begrenzt • Projekt ist leider wenig aktiv
  19. JQ Assistant • Wie in Degraph lässt sich Software abstrakt

    als Graph betrachten • Idee: Bestehende Graph Systeme nutzen um das Query Problem auszulagern
  20. JQ Assistant

  21. JQ Assistant • JQ Assistant kann dabei einlesen:  Beziehung

    im Source-code  Maven Projekt Informationen • Durch weitere Plugins:  Git history  Spring  OSGI  JSON  [...]
  22. JQ Assistant • Die Informationen in der lassen sich mit

    beschreiben.
  23. JQ Assistant

  24. JQ Assistant • JQ Assistant unterstützt den Entwickler weiter durch

    vorgefertigte . • Zusätzliche Label wie jpa2:Entity, java:MethodOverrides. • Diese entstehen durch Queries die ihre Ergebnismenge Labeln. • Es lassen sich auch eigene beschreiben.
  25. JQ Assistant Demo

  26. ArchUnit • Java API zum Testen der Architektur • Mit

    echtem Fokus auf Tests • Funktioniert mit Unit-Test Frameworks
  27. ArchUnit

  28. ArchUnit Demo

  29. https://github.com/DennisRippinger/ test-the-architecture

  30. Fazit: Degraph • Degraph stark in der Grapherzeugung • Tests

    eher ein Seitenprodukt • Visualisierung ist auf weitere, explorative, Tools angewiesen • Macht die Automatisierung schwierig • Keine Community vorhanden
  31. Fazit: jq Assistant • Aktuell der Platzhirsch auf dem Gebiet

    der Architekturanalyse • Bietet am meisten Möglichkeiten • Ermöglicht es Konzepte zu definieren und wiederzuverwenden • Vielfältige Erweiterungen mit zum Teil vorgedachten Regeln. • Läuft beim Build mit, meist eher auf CI Systemen, daher eher spätes Feedback • Je nach Team ist einfach oder auch nicht
  32. Fazit: ArchUnit • Der neue auf dem Platz • Schnelles

    Feedback da Ausführung als einfacher Unit Test • Durch leicht selbst dokumentiert und für Nachfolger verständlich. • Deckt viele Standardprobleme von Architekturdesign mit eigener API ab • Mit zunehmender Komplexität bedarf es aber eigener Utility Methoden • Keine Visualisierung
  33. Fazit • Unit Tests sind eine Form von Dokumentation die

    nicht veraltet. • Architektur Tests sind eine Form von Dokumentation die nicht veraltet. • Schnelle Feedback-schleifen erlauben es die Refactoring Aufwände niedrig zu halten. • Testet eure Architekturtests nach Möglichkeit.
  34. JMH </talk> @DennisRippinger

  35. .consulting .solutions .partnership Dennis Rippinger Senior IT-Consultant Dennis.Rippinger@msg.group msg systems

    ag Robert-Buerkle-Str. 1, 85737 Ismaning Germany www.msg.group