Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Entwickler Forscher Ingenieur Handwerker

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Architekten (damals)

Slide 6

Slide 6 text

Und heute … ?

Slide 7

Slide 7 text

Architektur im Laufe der Zeit Agiles Team Klassischer Architekt Kein Architekt Architektur-Owner Beratender Architekt Klassischer Architekt „Agil“

Slide 8

Slide 8 text

Architektur ... sondern auch sicherstellen das sie eingehalten wird. Aufgabe des Architekten ist nicht nur das Ersinnen einer Architektur ...

Slide 9

Slide 9 text

Architektur Wenn alle verantwortlich für die Architektur sind, ist es keiner. • Wir brauchen eine andere Lösung • Wir brauchen Automatisierung • Wir brauchen Tests

Slide 10

Slide 10 text

Architekturtests Heute sprechen wir über OSS zum automatisierten Testen von Architektur: • Degraph • JQ Assistant • ArchUnit Kommerzielle Tools wie Sonargraph sind außen vor.

Slide 11

Slide 11 text

Degraph Degraph ist ein Tool zum Visualisierung und kontrollieren von Klassen und Package Strukturen

Slide 12

Slide 12 text

Degraph Der übliche Workflow schaut so aus:

Slide 13

Slide 13 text

Demo Dukecon

Slide 14

Slide 14 text

Demo Dukecon

Slide 15

Slide 15 text

Demo Dukecon org.dukecon.DukeConServerApplication

Slide 16

Slide 16 text

Degraph Graphen sind toll, aber ... ... schauen wir da regelmäßig rein?

Slide 17

Slide 17 text

Degraph Unit Test Erstelle graphml von Model im Fehlerfall

Slide 18

Slide 18 text

Degraph • Implementierung stammt aus Scala, daher ist die API aus dieser Perspektive geschrieben. • Architekturtests sind auf Layer begrenzt • Projekt ist leider wenig aktiv

Slide 19

Slide 19 text

JQ Assistant • Wie in Degraph lässt sich Software abstrakt als Graph betrachten • Idee: Bestehende Graph Systeme nutzen um das Query Problem auszulagern

Slide 20

Slide 20 text

JQ Assistant

Slide 21

Slide 21 text

JQ Assistant • JQ Assistant kann dabei einlesen:  Beziehung im Source-code  Maven Projekt Informationen • Durch weitere Plugins:  Git history  Spring  OSGI  JSON  [...]

Slide 22

Slide 22 text

JQ Assistant • Die Informationen in der lassen sich mit beschreiben.

Slide 23

Slide 23 text

JQ Assistant

Slide 24

Slide 24 text

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.

Slide 25

Slide 25 text

JQ Assistant Demo

Slide 26

Slide 26 text

ArchUnit • Java API zum Testen der Architektur • Mit echtem Fokus auf Tests • Funktioniert mit Unit-Test Frameworks

Slide 27

Slide 27 text

ArchUnit

Slide 28

Slide 28 text

ArchUnit Demo

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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.

Slide 34

Slide 34 text

JMH @DennisRippinger

Slide 35

Slide 35 text

.consulting .solutions .partnership Dennis Rippinger Senior IT-Consultant [email protected] msg systems ag Robert-Buerkle-Str. 1, 85737 Ismaning Germany www.msg.group