Software Architecture: Layers and DTO’s

ArchUnit is a tool which enables you to test whether Java code (or Kotlin code) adheres to certain architectural requirements. For example, given a Spring application you can check that does a  service class does not call a controller class. Such a rule sounds superfluous, why should I call a controller from a service? But …