Softwarearchitektur: Schichten und DTOs

Neulich stolperte ich ArchUnit, ein Tool, mit den man testen kann ob sich Java-Code (oder auch Kotlin-Code) an bestimmte Architekturvorgaben hält. Zum Beispiel kann es in einer Spring-Anwendung überprüfen, das keine Serviceklasse eine Controllerklasse aufruft. Eine solche Regel klingt überflüssig, warum sollte ich von einem Service einen Controller aufrufen?