Restrições Arquitetônicas em Java [closed]

Eu quero ter certeza de que meu projeto não contém dependências desnecessárias entre os pacotes. Por exemplo, quero ter certeza de que o projeto tem estrutura em camadas. Ou seja o modelo está abaixo de tudo, a lógica de negócios depende do modelo, a visualização depende da lógica e do modelo de negócios. Cada uma das camadas é colocada em seu próprio pacote.

Você poderia recomendar alguma, de preferência ferramentas de código aberto, que permitam especificar essas restrições e verificá-las como parte da integração contínua?

P.S. Eu sei que posso separar o projeto em módulos separados. Infelizmente, meu caso do mundo real é mais complexo do que o sistema de três camadas. Se eu usasse módulos maven, eu teria várias dúzias de módulos bem pequenos.

questionAnswers(6)

yourAnswerToTheQuestion