Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Dennis Rippinger

September 07, 2018
Tweet

More Decks by Dennis Rippinger

Other Decks in Programming

Transcript

  1. 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
  2. Architektur im Laufe der Zeit Agiles Team Klassischer Architekt Kein

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

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

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

    Architektur: • Degraph • JQ Assistant • ArchUnit Kommerzielle Tools wie Sonargraph sind außen vor.
  6. Degraph • Implementierung stammt aus Scala, daher ist die API

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

    als Graph betrachten • Idee: Bestehende Graph Systeme nutzen um das Query Problem auszulagern
  8. JQ Assistant • JQ Assistant kann dabei einlesen:  Beziehung

    im Source-code  Maven Projekt Informationen • Durch weitere Plugins:  Git history  Spring  OSGI  JSON  [...]
  9. 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.
  10. ArchUnit • Java API zum Testen der Architektur • Mit

    echtem Fokus auf Tests • Funktioniert mit Unit-Test Frameworks
  11. 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
  12. 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
  13. 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
  14. 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.