Problem

Beim Projektstart wird sich normal für eine Architektur (z. B. hexagonale Architektur) entschieden und ein UML erstellt, um für neue Teammitglieder darzustellen, wie die Architektur des Projektes aussieht.

Doch wie stelle ich sicher, dass die Abhängigkeiten auch wirklich wie geplant umgesetzt werden und nicht plötzlich zyklische Abhängigkeiten eingeführt werden?
Und wie kann ich gewährleisten, dass das UML auf dem aktuellen Stand gehalten wird? Neue Teammitglieder sollen schließlich eine aktuelle Architekturübersicht erhalten und sich nicht mit einer veralteten Variante abfinden müssen.

Lösung

Die OpenSource-Bibliothek ArchUnit kann hier helfen! Man kann mit PlantUML erstellte UML-Diagramme nutzen, um sicherzustellen, dass darin enthaltene Abhängigkeiten eingehalten werden.

Beispiel

@Test public void shouldAdhereToArchitecture() {

    JavaClasses classes = new ClassFileImporter().importPackages("com.jambit.chuber.tp.arch");

    URL plantUmlDiagram = getClass().getResource("arch.puml");

    classes()

        .should(adhereToPlantUmlDiagram(plantUmlDiagram, consideringOnlyDependenciesInDiagram()))

        .check(classes);

}

Im folgenden Beispiel wird in der Klasse ForbiddenUseOfDb die Klasse Db importiert, was der Definition im UML widerspricht.

jambit_TP169_UML-Ordnerstruktur

Dadurch kommt es beim Ausführen des Tests zu folgender Fehlermeldung:

ArchTest.shouldAdhereToArchitecture:24 Architecture Violation [Priority: MEDIUM] - Rule 'classes should adhere to PlantUML diagram <arch.puml> while ignoring dependencies not contained in the diagram' was violated (1 times)

SCHREIB UNS

* Pflichtfeld

SCHREIB UNS

* Pflichtfeld

Cookie-Einstellungen

Diese Website verwendet Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und Zugriffe auf die Website zu analysieren. Zudem werden Informationen zu Ihrer Verwendung der Website an Partner für soziale Medien, Werbung und Analysen weitergegeben. Die Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. Dort können Sie nachträglich auch Ihre Cookie-Einstellungen ändern.

contact icon

Kontakt aufnehmen