This convention not only standardizes the structure and improves maintainability, but also allows automatic dependency validation
with frameworks like JDepend, Checkstyle, Dependometer, SonarJ, or XRadar. You can even perform the validation at build time. If you do, the continuous build would break on violation of defined dependencies.
The rules are clearly defined with strict layering: a facade may access a service, and the service a domain object, but not
vice versa